AI Slop Code RIsk Monitor

TNT-Likely/PanWatch

PanWatch — AI stock monitoring for A-shares, HK & US markets, powered by TradingAgents. Portfolio insights, real-time alerts & automated reports.|盯盘侠:覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。

26.7 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for TNT-Likely/PanWatch, a Python project with 2,069 GitHub stars. SynthScan examined 137,658 lines of code across 745 source files, recording 2712 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 26.7 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

26.7
Adjusted Signal
26.7
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
2.1K
Stars
Python
Language
137.7K
Lines of Code
745
Files
2.7K
Pattern Hits
2026-10-12
Scan Date
0.10
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 44.0/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1488 finding(s).

Hallucinated Dependency & Supply Chain Risk 12.5/100 · LOW

Are imports declared and package/API names verified? 385 finding(s).

Agent Over-Engineering Ratio 68.6/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 2205 finding(s).

PR Review Velocity Impact 72.1/100 · HIGH

Which changes need focused human review? 2712 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 75MEDIUM 215LOW 2422

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 2712 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers1344 hits · 1458 pts
SeverityFileLineSnippetContext
LOW…nd/packages/biz-ui/src/components/suggestion-action.ts22export function normalizeSuggestionAction(action?: string, label?: string): SuggestionAction | null {CODE
LOW…nd/packages/biz-ui/src/components/suggestion-action.ts51export function resolveSuggestionColorClass(action?: string, label?: string): string {CODE
LOW…packages/biz-ui/src/components/deep-analysis-modal.tsx490function DataCollectionDiagnostics({ sources }: { sources: ProgressDataSource[] }) {CODE
LOW…end/packages/biz-ui/src/components/technical-badge.tsx34export function technicalToneFromSuggestionAction(action?: string, actionLabel?: string): TechnicalBadgeTone {CODE
LOWfrontend/packages/api/src/chat.ts659async function subscribeAssistantTaskStream(CODE
LOWfrontend/packages/api/src/chat.ts703async function decideAssistantApprovalStream(CODE
LOWfrontend/src/main.tsx15function ApplicationConfirmProvider({ children }: { children: React.ReactNode }) {CODE
LOW…/components/assistant/AssistantContextExportDialog.tsx24export function AssistantContextExportContent({ conversationId, exportId }: Omit<Props, 'onClose'>) {CODE
LOW…/components/assistant/AssistantContextExportDialog.tsx137export function AssistantContextExportDialog({ onClose, ...props }: Props) {CODE
LOW…/components/assistant/AssistantConversationActions.tsx15export function AssistantConversationActions({ conversation, onRename, onDelete }: Props) {CODE
LOW…/components/assistant/AssistantExportHistoryDialog.tsx14export function AssistantExportHistoryDialog({ conversationId, onClose }: Props) {CODE
LOW…rc/components/assistant/AssistantPermissionsDrawer.tsx21export function AssistantPermissionsDrawer({ open, onOpenChange }: AssistantPermissionsDrawerProps) {CODE
LOWfrontend/src/lib/market-colors.ts39export function normalizeMarketColorPreference(value: string | null | undefined): MarketColorPreference {CODE
LOWfrontend/src/lib/market-colors.ts78export function readMarketColorPreference(storage?: Pick<Storage, 'getItem'>): MarketColorPreference {CODE
LOWfrontend/src/lib/assistant-activity.ts5export function signalAssistantActivityChange() {CODE
LOWfrontend/src/lib/assistant-activity.ts10export function claimAssistantNotifications(ids: number[]): number[] {CODE
LOWfrontend/src/lib/assistant-navigation.ts10export function parseAssistantPortfolioTarget(CODE
LOWfrontend/src/lib/template-import-feedback.ts35export function buildTemplateImportFeedback(summary: TemplateImportSummary | undefined, tr: Translate) {CODE
LOWfrontend/src/lib/tradingagents-progress.ts13export function shouldContinueProgressWatch(CODE
LOW⚡tests/test_ai_failover.py88def test_classify_timeout_switch():CODE
LOW⚡tests/test_ai_failover.py93def test_classify_connection_switch():CODE
LOW⚡tests/test_ai_failover.py98def test_classify_rate_limit_switch():CODE
LOW⚡tests/test_ai_failover.py103def test_classify_server_error_switch():CODE
LOW⚡tests/test_ai_failover.py108def test_classify_auth_switch():CODE
LOW⚡tests/test_ai_failover.py113def test_classify_param_incompatible_retry_same():CODE
LOW⚡tests/test_ai_failover.py135def test_classify_unknown_defaults_switch():CODE
LOW⚡tests/test_ai_failover.py143def test_failover_param_strip_retry_same_model():CODE
LOWtests/test_ai_failover.py158def test_failover_switch_to_next_and_cooldown():CODE
LOWtests/test_ai_failover.py177def test_failover_fatal_raises_without_switch():CODE
LOWtests/test_ai_failover.py189def test_failover_all_cooling_recovery_probe():CODE
LOWtests/test_ai_failover.py204def test_failover_chain_exhausted_raises_last_error():CODE
LOWtests/test_ai_failover.py257def test_failover_stream_switch_before_first_token():CODE
LOWtests/test_ai_failover.py271def test_failover_stream_raise_after_started():CODE
LOWtests/test_ai_failover.py299def test_build_failover_client_chain_from_db():CODE
LOWtests/test_ai_failover.py318def test_build_failover_client_env_fallback(monkeypatch):CODE
LOWtests/test_ai_failover.py332def test_agent_context_model_label_reflects_used_model():CODE
LOWtests/test_datasource_test_path.py26 async def test_success_returns_items_and_count(self):CODE
LOWtests/test_datasource_test_path.py54 async def test_unbacked_provider_returns_clean_error_not_raise(self):CODE
LOWtests/test_datasource_test_path.py68 async def test_partial_results_include_symbol_level_errors(self):CODE
LOW⚡tests/test_datasource_test_path.py91 def test_default_kline_symbols_cover_each_market_twice(self):CODE
LOW⚡tests/test_datasource_test_path.py100 def test_all_symbol_based_seed_tests_use_balanced_defaults(self):CODE
LOW⚡tests/test_datasource_test_path.py109 async def test_empty_symbols_report_effective_defaults(self):CODE
LOWtests/test_datasource_test_path.py125 async def test_success_returns_items_and_count(self):CODE
LOWtests/test_datasource_test_path.py148 async def test_unbacked_provider_returns_clean_error_not_raise(self):CODE
LOWtests/test_portfolio_service.py11def test_portfolio_service_builds_position_summary_from_repository():CODE
LOW⚡tests/test_factor_eval.py6def test_pearson_perfect_positive():CODE
LOW⚡tests/test_factor_eval.py11def test_pearson_perfect_negative():CODE
LOW⚡tests/test_factor_eval.py16def test_pearson_too_few_returns_none():CODE
LOW⚡tests/test_factor_eval.py21def test_pearson_zero_variance_none():CODE
LOW⚡tests/test_factor_eval.py26def test_spearman_monotonic_nonlinear():CODE
LOW⚡tests/test_factor_eval.py31def test_spearman_handles_ties():CODE
LOWtests/test_paper_trading_position.py7def test_position_weight_tiers():CODE
LOWtests/test_paper_trading_position.py16def test_compute_quantity_respects_budget():CODE
LOWtests/test_paper_trading_position.py27def test_compute_quantity_respects_cash():CODE
LOWtests/test_paper_trading_position.py40def test_compute_quantity_insufficient_cash_returns_zero():CODE
LOWtests/test_sse_infra.py19def test_format_sse_event_multiline():CODE
LOWtests/test_sse_infra.py25def test_stream_replay_and_resume():CODE
LOWtests/test_sse_infra.py49def test_stream_live_subscribe():CODE
LOWtests/test_sse_infra.py72def test_hub_create_get_prune():CODE
LOWtests/test_sse_infra.py88def test_middleware_sse_passthrough():CODE
1284 more matches not shown…
Decorative Section Separators191 hits · 752 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_ai_failover.py85# ── 错误分类 ────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_ai_failover.py140# ── FailoverAIClient 行为 ────────────────────────────────────────────────COMMENT
MEDIUMtests/test_ai_failover.py215# ── 流式 failover ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_ai_failover.py286# ── 候选链构建 ───────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_ai_failover.py329# ── run 记录实际使用的模型 ───────────────────────────────────────────────COMMENT
MEDIUMtests/conftest.py92# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/conftest.py94# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_paper_trading_notify.py105# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_paper_trading_notify.py107# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_paper_trading_notify.py167# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_paper_trading_notify.py169# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_paper_trading_notify.py278# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_paper_trading_notify.py280# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_tradingagents_hk_routes.py28# ============================================================COMMENT
MEDIUMtests/test_tradingagents_hk_routes.py30# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_hk_routes.py54# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_hk_routes.py56# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_hk_routes.py78# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_hk_routes.py80# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py141# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py143# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py155# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py157# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py220# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py222# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py240# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py242# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py270# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py272# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py285# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py287# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py311# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py313# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py326# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_a_share_data_routes.py328# ============================================================COMMENT
MEDIUM⚡tests/test_intraday_atr.py85# ── is_abnormal_move (自适应异动判定) ─────────────────────────────────────COMMENT
MEDIUM⚡tests/test_intraday_atr.py127# ── intraday_monitor build_prompt 注入 ATR / 自适应规则 ───────────────────COMMENT
MEDIUMtests/test_notify_policy.py13# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_notify_policy.py15# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_notify_policy.py46# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_notify_policy.py48# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_notify_policy.py104# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_notify_policy.py106# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notify_policy.py138# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notify_policy.py140# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py36# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py38# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py91# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py93# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py163# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py169# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py226# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py228# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py241# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py243# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py252# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py254# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py267# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py269# ============================================================COMMENT
MEDIUM⚡tests/test_tradingagents_5_tier_rating.py344# ============================================================COMMENT
131 more matches not shown…
Excessive Try-Catch Wrapping465 hits · 486 pts
SeverityFileLineSnippetContext
LOWserver.py101 except Exception:CODE
LOWserver.py161 except Exception:CODE
LOWserver.py261 except Exception as e:CODE
LOWserver.py1040 except Exception:CODE
LOWserver.py1046 except Exception:CODE
LOWserver.py1183 except Exception:CODE
LOWserver.py1190 except Exception as e:CODE
LOWserver.py1308 except Exception as e:CODE
LOWserver.py1348 except Exception as e:CODE
LOWserver.py1433 except Exception as e:CODE
LOWserver.py1478 except Exception as e: # 兜底:OTel 初始化异常绝不阻断服务启动CODE
LOWserver.py1504 except Exception as e:CODE
LOWserver.py1515 except Exception as e:CODE
LOWserver.py1535 except Exception as e:CODE
LOWserver.py1550 except Exception as e:CODE
LOWserver.py1560 except Exception as e:CODE
LOWserver.py1573 except Exception as e:CODE
LOWserver.py1578 except Exception as e:CODE
LOWtests/test_pdf_export.py15 except Exception:CODE
LOWtests/test_assistant_task_events.py107 except Exception as exc: # pragma: no cover - assertion reports the causeCODE
LOWtests/eval/run_eval.py143 except Exception as e: # noqa: BLE001CODE
LOWtests/eval/framework.py124 except Exception as e: # noqa: BLE001 - 评测记录任何运行异常CODE
LOWtests/eval/framework.py134 except Exception:CODE
LOWscripts/test_paper_trading_local.py37 except Exception:CODE
LOWscripts/evaluate-assistant-runtime.py358 except Exception as exc:CODE
LOWpackages/marketdata/src/marketdata/client.py262 except Exception as e:CODE
LOWpackages/marketdata/src/marketdata/engine.py59 except Exception as e:CODE
LOWpackages/marketdata/src/marketdata/http.py143 except Exception as e:CODE
LOW⚡…ckages/marketdata/src/marketdata/vendors/flash_news.py82 except Exception:CODE
LOW⚡…ckages/marketdata/src/marketdata/vendors/flash_news.py170 except Exception:CODE
LOW⚡…ckages/marketdata/src/marketdata/vendors/flash_news.py250 except Exception:CODE
LOW…ckages/marketdata/src/marketdata/vendors/flash_news.py314 except Exception:CODE
LOW…kages/marketdata/src/marketdata/vendors/market_flow.py122 except Exception as e:CODE
LOW…kages/marketdata/src/marketdata/vendors/market_flow.py163 except Exception as e:CODE
LOW…kages/marketdata/src/marketdata/vendors/market_flow.py201 except Exception as e:CODE
LOW…kages/marketdata/src/marketdata/vendors/market_flow.py238 except Exception as e:CODE
LOW…kages/marketdata/src/marketdata/vendors/market_flow.py241 except Exception as e:CODE
LOWpackages/marketdata/src/marketdata/vendors/discovery.py94 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/discovery.py138 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/discovery.py185 except Exception:CODE
LOW…ages/marketdata/src/marketdata/vendors/fundamentals.py249 except Exception as e:CODE
LOWpackages/marketdata/src/marketdata/vendors/events.py184 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/eastmoney.py49 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/yfinance.py54 except Exception as e:CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py24 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py51 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py68 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py141 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py178 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py249 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py271 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/news.py160 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/news.py305 except Exception:CODE
LOWpackages/marketdata/src/marketdata/vendors/news.py400 except Exception:CODE
LOW…nt-tool-research/src/pan_agent_tool_research/plugin.py118 except Exception as exc: # noqa: BLE001 - plugin failure must fail openCODE
LOW…nt-tool-research/src/pan_agent_tool_research/plugin.py148 except Exception as exc: # noqa: BLE001 - search is a fail-open boundaryCODE
LOWpackages/pan-agent-runtime/src/pan_agent/runtime.py153 except Exception as exc: # noqa: BLE001 - hosts receive a stable terminal runtime resultCODE
LOWpackages/pan-agent-runtime/src/pan_agent/runtime.py286 except Exception as exc:CODE
LOWpackages/pan-agent-runtime/src/pan_agent/runtime.py485 except Exception as exc: # noqa: BLE001 - hosts receive a stable terminal runtime resultCODE
LOWpackages/pan-agent-runtime/src/pan_agent/runtime.py571 except Exception as exc: # noqa: BLE001 - extensions are optional boundariesCODE
405 more matches not shown…
Empty Error Handlers71 hits · 355 pts
SeverityFileLineSnippetContext
HIGHserver.py101except Exception:CODE
HIGHserver.py161except Exception:CODE
HIGHserver.py1183except Exception:CODE
HIGH…ckages/marketdata/src/marketdata/vendors/flash_news.py51except (ValueError, TypeError):CODE
HIGHpackages/marketdata/src/marketdata/vendors/news.py59except (ValueError, TypeError):CODE
HIGHsrc/platform/marketdata/stock_list.py115except (json.JSONDecodeError, KeyError):CODE
HIGHsrc/platform/marketdata/quote_display.py55except ValueError:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py209except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py233except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py242except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py255except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py268except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py354except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py387except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py287except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py307except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py314except Exception:CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py324except Exception:CODE
HIGHsrc/platform/marketdata/collectors/events_collector.py204except Exception:CODE
HIGHsrc/platform/marketdata/collectors/kline_collector.py50except Exception:CODE
HIGHsrc/platform/marketdata/collectors/kline_collector.py75except Exception:CODE
HIGHsrc/platform/marketdata/collectors/market_http.py49except Exception:CODE
HIGHsrc/platform/observability/log_handler.py105except Exception:CODE
HIGHsrc/platform/observability/otel.py90except Exception:CODE
HIGHsrc/platform/observability/otel.py186except Exception:CODE
HIGHsrc/platform/observability/otel.py346except Exception:CODE
HIGHsrc/platform/observability/otel.py226except Exception:CODE
HIGHsrc/platform/observability/otel.py255except Exception:CODE
HIGHsrc/platform/observability/otel.py281except Exception:CODE
HIGHsrc/platform/observability/otel.py336except Exception:CODE
HIGHsrc/platform/observability/otel.py322except Exception:CODE
HIGHsrc/platform/persistence/database.py175except Exception:CODE
HIGHsrc/platform/persistence/migrations.py1531except Exception:CODE
HIGHsrc/platform/persistence/json_safe.py49except Exception:CODE
HIGHsrc/platform/events/sse.py96except asyncio.TimeoutError:CODE
HIGHsrc/platform/notifications/notifier.py260except Exception:CODE
HIGHsrc/modules/research/context_builder.py393except Exception:CODE
HIGHsrc/modules/research/context_scheduler.py317except Exception:CODE
HIGHsrc/modules/research/api/insights.py198except Exception:CODE
HIGHsrc/modules/assistant/export_jobs.py263except (ExportLeaseLost, LookupError):CODE
HIGHsrc/modules/assistant/task_runner.py278except asyncio.CancelledError:CODE
HIGHsrc/modules/assistant/result_builder.py54except ValueError:CODE
HIGHsrc/modules/assistant/api.py260except asyncio.CancelledError:CODE
HIGHsrc/modules/reporting/pdf_export.py97except Exception:CODE
HIGHsrc/modules/reporting/pdf_export.py145except (TypeError, ValueError):CODE
HIGHsrc/modules/paper_trading/paper_trading_scheduler.py128except Exception:CODE
HIGHsrc/modules/market/price_alert_scheduler.py86except Exception:CODE
HIGHsrc/modules/administration/api/onboarding.py229except Exception:CODE
HIGHsrc/modules/administration/api/logs.py147except ValueError:CODE
HIGHsrc/modules/administration/api/logs.py156except ValueError:CODE
HIGHsrc/modules/administration/api/logs.py375except ValueError:CODE
HIGHsrc/modules/administration/api/settings.py178except OSError:CODE
HIGHsrc/modules/administration/api/settings.py211except Exception:CODE
HIGHsrc/modules/administration/api/settings.py156except OSError:CODE
HIGHsrc/modules/automation/daily_report.py426except ValueError:CODE
HIGHsrc/modules/automation/daily_report.py530except ValueError:CODE
HIGHsrc/modules/automation/intraday_monitor.py419except Exception:CODE
HIGHsrc/modules/automation/premarket_outlook.py356except Exception:CODE
HIGHsrc/modules/automation/premarket_outlook.py489except ValueError:CODE
HIGHsrc/modules/automation/premarket_outlook.py585except ValueError:CODE
11 more matches not shown…
Unused Imports382 hits · 353 pts
SeverityFileLineSnippetContext
LOWserver.py26CODE
LOWserver.py1608CODE
LOWtests/test_datasource_test_path.py3CODE
LOWtests/test_add_position_eval.py3CODE
LOWtests/test_tradingagents_progress_recovery.py3CODE
LOWtests/conftest.py7CODE
LOWtests/conftest.py85CODE
LOWtests/test_paper_trading_notify.py5CODE
LOWtests/test_tradingagents_hk_routes.py9CODE
LOWtests/test_factor_calibration_loop.py3CODE
LOWtests/test_factor_calibration_loop.py10CODE
LOWtests/test_evaluations_api.py3CODE
LOWtests/test_evaluations_api.py8CODE
LOWtests/test_ai_provider_sniff.py3CODE
LOWtests/test_ai_provider_sniff.py12CODE
LOWtests/test_factor_calibration.py3CODE
LOWtests/test_factor_calibration.py10CODE
LOWtests/test_assistant_context_repository.py7CODE
LOWtests/test_assistant_context_repository.py7CODE
LOWtests/test_datasource_reconcile.py3CODE
LOWtests/test_datasource_reconcile.py9CODE
LOWtests/test_i18n_system_outputs.py3CODE
LOWtests/test_tradingagents_history_comparison.py3CODE
LOWtests/test_pdf_export.py3CODE
LOWtests/test_pdf_export.py80CODE
LOWtests/test_tradingagents_a_share_data_routes.py18CODE
LOWtests/test_trading_execution_guards.py14CODE
LOWtests/test_trading_execution_guards.py14CODE
LOWtests/test_trading_execution_guards.py14CODE
LOWtests/test_ta_load_ohlcv_patch.py7CODE
LOWtests/test_tradingagents_module_layout.py3CODE
LOWtests/test_intraday_atr.py9CODE
LOWtests/test_notify_policy.py3CODE
LOWtests/test_quote_routing.py3CODE
LOWtests/test_assistant_service.py10CODE
LOWtests/test_assistant_service.py10CODE
LOWtests/test_json_safe.py3CODE
LOWtests/test_run_progress_stale.py3CODE
LOWtests/test_template_import.py1CODE
LOWtests/test_kline_collector_cache.py7CODE
LOWtests/test_assistant_results.py14CODE
LOWtests/test_home_phase_a.py3CODE
LOWtests/test_tradingagents_5_tier_rating.py7CODE
LOWtests/test_cn_symbol_mapping.py7CODE
LOWtests/test_price_alert_volume_ratio.py6CODE
LOWtests/test_context_enrichments.py12CODE
LOWtests/test_kline_fetch_coalesce.py11CODE
LOWtests/test_marketdata_flagon_caching.py11CODE
LOWtests/test_assistant_production_runtime.py4CODE
LOWtests/test_assistant_production_runtime.py4CODE
LOWtests/test_assistant_production_runtime.py4CODE
LOWtests/test_curate.py2CODE
LOWtests/test_portfolio_benchmark.py3CODE
LOWtests/test_notifications.py13CODE
LOWtests/test_onboarding.py15CODE
LOWtests/test_onboarding.py21CODE
LOWtests/test_tradingagents_trigger_idempotency.py9CODE
LOWtests/test_timezone.py3CODE
LOWtests/test_timezone.py5CODE
LOWtests/test_selfcheck.py3CODE
322 more matches not shown…
Modern Structural Boilerplate109 hits · 111 pts
SeverityFileLineSnippetContext
LOWserver.py47logger = logging.getLogger(__name__)CODE
LOWpackages/marketdata/src/marketdata/__init__.py31__all__ = [CODE
LOWpackages/marketdata/src/marketdata/engine.py20logger = logging.getLogger(__name__)CODE
LOWpackages/marketdata/src/marketdata/http.py19logger = logging.getLogger(__name__)CODE
LOW…kages/marketdata/src/marketdata/vendors/market_flow.py27logger = logging.getLogger(__name__)CODE
LOW…ages/marketdata/src/marketdata/vendors/fundamentals.py18logger = logging.getLogger(__name__)CODE
LOWpackages/marketdata/src/marketdata/vendors/eastmoney.py18logger = logging.getLogger(__name__)CODE
LOWpackages/marketdata/src/marketdata/vendors/sina.py19logger = logging.getLogger(__name__)CODE
LOWpackages/marketdata/src/marketdata/vendors/tencent.py14logger = logging.getLogger(__name__)CODE
LOWpackages/marketdata/src/marketdata/vendors/yfinance.py13logger = logging.getLogger(__name__)CODE
LOWpackages/marketdata/src/marketdata/vendors/kline.py13logger = logging.getLogger(__name__)CODE
LOW…-tool-research/src/pan_agent_tool_research/__init__.py13__all__ = [CODE
LOWpackages/pan-agent-runtime/src/pan_agent/registry.py66 def set_exposure(self, name: str, exposure: ToolExposure) -> None:CODE
LOWpackages/pan-agent-runtime/src/pan_agent/__init__.py55__all__ = [CODE
LOW…gent-token-meter/src/pan_agent_token_meter/__init__.py6__all__ = ["HeuristicTokenMeter", "TiktokenTokenMeter", "normalize_provider_usage"]CODE
LOWsrc/platform/scheduling/trading_calendar.py17logger = logging.getLogger(__name__)CODE
LOWsrc/platform/marketdata/stock_list.py19logger = logging.getLogger(__name__)CODE
LOWsrc/platform/marketdata/marketdata_client.py15logger = logging.getLogger(__name__)CODE
LOWsrc/platform/marketdata/javascript_runtime.py6logger = logging.getLogger(__name__)CODE
LOW…platform/marketdata/collectors/screenshot_collector.py11logger = logging.getLogger(__name__)CODE
LOW…/platform/marketdata/collectors/discovery_collector.py4logger = logging.getLogger(__name__)CODE
LOWsrc/platform/marketdata/collectors/events_collector.py7logger = logging.getLogger(__name__)CODE
LOWsrc/platform/marketdata/collectors/kline_collector.py15logger = logging.getLogger(__name__)CODE
LOWsrc/platform/marketdata/collectors/market_http.py26logger = logging.getLogger(__name__)CODE
LOW⚡src/platform/observability/otel.py329def set_span_attributes(span: Any, attributes: dict) -> None:CODE
LOWsrc/platform/observability/otel.py31logger = logging.getLogger(__name__)CODE
LOW⚡src/platform/ai/ai_failover.py41logger = logging.getLogger(__name__)CODE
LOWsrc/platform/ai/ai_client.py10logger = logging.getLogger(__name__)CODE
LOWsrc/platform/persistence/database.py17logger = logging.getLogger(__name__)CODE
LOWsrc/platform/persistence/__init__.py10__all__ = ["Base", "SessionLocal", "engine", "get_db", "init_db"]CODE
LOWsrc/platform/persistence/migrations.py16logger = logging.getLogger(__name__)CODE
LOWsrc/platform/tasking/__init__.py10__all__ = ["TaskEvent", "TaskEventType", "TaskStatus", "can_transition"]CODE
LOWsrc/platform/notifications/notifier.py9logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/analysis_history.py12logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/analysis_link.py14logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/context_builder.py26logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/context_scheduler.py20logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/context_store.py17logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/prediction_outcome.py14logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/signals/__init__.py3__all__ = ["SignalPack", "SignalPackBuilder"]CODE
LOWsrc/modules/research/signals/signal_pack.py15logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/api/recommendations.py33logger = logging.getLogger(__name__)CODE
LOWsrc/modules/research/api/insights.py26logger = logging.getLogger(__name__)CODE
LOWsrc/modules/assistant/export_jobs.py29logger = logging.getLogger(__name__)CODE
LOWsrc/modules/assistant/task_runner.py36logger = logging.getLogger(__name__)CODE
LOWsrc/modules/assistant/result_builder.py27logger = logging.getLogger(__name__)CODE
LOWsrc/modules/assistant/api.py59logger = logging.getLogger(__name__)CODE
LOWsrc/modules/assistant/portfolio_diagnosis.py36logger = logging.getLogger(__name__)CODE
LOWsrc/modules/assistant/tool_adapters.py20logger = logging.getLogger(__name__)CODE
LOWsrc/modules/reporting/pdf_export.py18logger = logging.getLogger(__name__)CODE
LOWsrc/modules/paper_trading/paper_trading_engine.py32logger = logging.getLogger(__name__)CODE
LOWsrc/modules/paper_trading/paper_trading_engine.py683 def _update_account_metrics(self, db: Session, account: PaperTradingAccount) -> None:CODE
LOW⚡src/modules/paper_trading/paper_trading_notifier.py20logger = logging.getLogger(__name__)CODE
LOWsrc/modules/paper_trading/paper_trading_scheduler.py15logger = logging.getLogger(__name__)CODE
LOWsrc/modules/paper_trading/api/paper_trading.py40logger = logging.getLogger(__name__)CODE
LOWsrc/modules/portfolio/portfolio_diagnostics.py14logger = logging.getLogger(__name__)CODE
LOWsrc/modules/portfolio/__init__.py18__all__ = ["PortfolioService", "build_portfolio_service"]CODE
LOWsrc/modules/portfolio/portfolio_benchmark.py17logger = logging.getLogger(__name__)CODE
LOWsrc/modules/portfolio/api/accounts.py22logger = logging.getLogger(__name__)CODE
LOWsrc/modules/portfolio/api/dashboard.py391logger = logging.getLogger(__name__)CODE
49 more matches not shown…
Deep Nesting110 hits · 98 pts
SeverityFileLineSnippetContext
LOWserver.py288CODE
LOWserver.py641CODE
LOWserver.py768CODE
LOWserver.py1233CODE
LOWtests/eval/framework.py79CODE
LOW…/skills/panwatch-local-delivery/scripts/isolated_qa.py333CODE
LOWscripts/docker_smoke.py72CODE
LOWscripts/install-agent-skills.py109CODE
LOWpackages/marketdata/src/marketdata/client.py152CODE
LOWpackages/marketdata/src/marketdata/http.py82CODE
LOW…kages/marketdata/src/marketdata/vendors/market_flow.py218CODE
LOW…ages/marketdata/src/marketdata/vendors/fundamentals.py235CODE
LOWpackages/marketdata/src/marketdata/vendors/tencent.py33CODE
LOWpackages/marketdata/src/marketdata/vendors/news.py105CODE
LOWpackages/pan-agent-runtime/src/pan_agent/runtime.py88CODE
LOWpackages/pan-agent-runtime/src/pan_agent/runtime.py201CODE
LOWpackages/pan-agent-runtime/src/pan_agent/runtime.py516CODE
LOWsrc/web/response.py16CODE
LOWsrc/platform/scheduling/schedule_parser.py52CODE
LOWsrc/platform/marketdata/stock_list.py143CODE
LOWsrc/platform/marketdata/stock_list.py182CODE
LOWsrc/platform/marketdata/stock_list.py219CODE
LOWsrc/platform/marketdata/stock_list.py258CODE
LOWsrc/platform/marketdata/stock_list.py358CODE
LOWsrc/platform/marketdata/stock_list.py423CODE
LOWsrc/platform/marketdata/stock_list.py537CODE
LOWsrc/platform/marketdata/quote_display.py39CODE
LOW…platform/marketdata/collectors/screenshot_collector.py273CODE
LOWsrc/platform/marketdata/collectors/kline_collector.py315CODE
LOWsrc/platform/marketdata/collectors/kline_collector.py467CODE
LOWsrc/platform/marketdata/collectors/kline_collector.py633CODE
LOW…atform/marketdata/collectors/capital_flow_collector.py65CODE
LOWsrc/platform/marketdata/collectors/market_http.py84CODE
LOWsrc/platform/observability/log_handler.py75CODE
LOWsrc/platform/observability/otel.py302CODE
LOWsrc/platform/ai/ai_failover.py192CODE
LOWsrc/platform/ai/ai_failover.py257CODE
LOWsrc/platform/persistence/migrations.py992CODE
LOWsrc/platform/persistence/migrations.py1535CODE
LOWsrc/platform/events/sse.py77CODE
LOWsrc/platform/notifications/notifier.py126CODE
LOWsrc/platform/notifications/notifier.py211CODE
LOWsrc/platform/notifications/notifier.py241CODE
LOWsrc/platform/notifications/notifier.py351CODE
LOWsrc/modules/research/analysis_history.py23CODE
LOWsrc/modules/research/context_builder.py83CODE
LOWsrc/modules/research/signals/actions.py23CODE
LOWsrc/modules/research/signals/signal_pack.py116CODE
LOWsrc/modules/assistant/service.py181CODE
LOWsrc/modules/assistant/result_builder.py151CODE
LOWsrc/modules/assistant/api.py143CODE
LOWsrc/modules/assistant/portfolio_diagnosis.py219CODE
LOWsrc/modules/assistant/llm_adapter.py49CODE
LOWsrc/modules/paper_trading/paper_trading_engine.py563CODE
LOWsrc/modules/paper_trading/paper_trading_notifier.py367CODE
LOWsrc/modules/paper_trading/paper_trading_notifier.py404CODE
LOWsrc/modules/portfolio/api/accounts.py393CODE
LOWsrc/modules/portfolio/api/accounts.py834CODE
LOWsrc/modules/portfolio/api/dashboard.py61CODE
LOWsrc/modules/portfolio/api/dashboard.py88CODE
50 more matches not shown…
AI Structural Patterns22 hits · 21 pts
SeverityFileLineSnippetContext
LOWpackages/marketdata/src/marketdata/http.py82CODE
LOWsrc/platform/marketdata/collectors/market_http.py84CODE
LOWsrc/modules/research/api/recommendations.py134CODE
LOWsrc/modules/research/api/recommendations.py201CODE
LOWsrc/modules/research/api/evaluations.py24CODE
LOWsrc/modules/research/api/evaluations.py86CODE
LOWsrc/modules/research/api/evaluations.py123CODE
LOWsrc/modules/paper_trading/paper_trading_notifier.py454CODE
LOWsrc/modules/paper_trading/api/paper_trading.py541CODE
LOWsrc/modules/market/price_alert_service.py122CODE
LOWsrc/modules/market/api/stocks.py381CODE
LOWsrc/modules/market/api/price_alerts.py260CODE
LOWsrc/modules/administration/api/logs.py80CODE
LOWsrc/modules/administration/api/logs.py181CODE
LOWsrc/modules/automation/agent_runs.py64CODE
LOWsrc/modules/automation/intraday_monitor.py81CODE
LOWsrc/modules/automation/suggestion_pool.py47CODE
LOWsrc/modules/automation/tradingagents/agent.py86CODE
LOWsrc/modules/automation/tradingagents/runtime_support.py35CODE
LOWsrc/modules/notifications/service.py33CODE
LOWsrc/modules/strategy/entry_candidates.py1563CODE
LOWsrc/modules/strategy/strategy_engine.py1460CODE
Cross-Language Confusion3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHtests/test_datasources_health.py21 assert out2["health"] is None # 无该 provider 指标 → null,不编数据CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py75 raise RuntimeError("请先安装 playwright: pip install playwright && playwright install chromium")CODE
HIGH…platform/marketdata/collectors/screenshot_collector.py152 Object.defineProperty(navigator, 'webdriver', { get: () => undefined });CODE
Verbosity Indicators3 hits · 7 pts
SeverityFileLineSnippetContext
LOW⚡build.sh23# Step 1: 构建前端COMMENT
LOW⚡build.sh30# Step 2: 复制前端产物到 static 目录COMMENT
LOW⚡build.sh36# Step 3: 构建 Docker 镜像(amd64 架构,适配大多数服务器/NAS)COMMENT
Structural Annotation Overuse3 hits · 7 pts
SeverityFileLineSnippetContext
LOW⚡build.sh23# Step 1: 构建前端COMMENT
LOW⚡build.sh30# Step 2: 复制前端产物到 static 目录COMMENT
LOW⚡build.sh36# Step 3: 构建 Docker 镜像(amd64 架构,适配大多数服务器/NAS)COMMENT
Dead Code3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_ai_failover.py228CODE
MEDIUMtests/test_portfolio_diagnosis.py195CODE
MEDIUMtests/test_portfolio_diagnosis.py241CODE
Over-Commented Block3 hits · 3 pts
SeverityFileLineSnippetContext
LOWrequirements-otel.txt1# OpenTelemetry 导出(可选依赖组)COMMENT
LOWrequirements-runtime.txt21weasyprint>=60COMMENT
LOW.github/workflows/pullfrog.yml41 DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}COMMENT
Synthetic Comment Markers1 hit · 2 pts
SeverityFileLineSnippetContext
HIGHsrc/modules/reporting/pdf_export.py104 + ("This report was generated by AI for reference only; it is not investment advice." if english else "本报告由 AI 生STRING
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMsrc/ARCHITECTURE.en.md76├── service.py # use-case orchestration and preferred public boundaryCODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/platform/persistence/database.py303 # Check if it has the old schema (has base_url column)COMMENT