AI Slop Code RIsk Monitor

shy3130/tick-stock-panel

TSP自托管、零运维的 A 股「自建策略 + 监控 + 回测」量化工作台 | LLM能力驱使策略定制+个股分析+复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源

27.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for shy3130/tick-stock-panel, a Python project with 5,778 GitHub stars. SynthScan examined 239,182 lines of code across 831 source files, recording 4729 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 27.9 (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.

27.9
Adjusted Signal
27.9
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
5.8K
Stars
Python
Language
239.2K
Lines of Code
831
Files
4.7K
Pattern Hits
2026-10-12
Scan Date
0.19
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 44.2/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 17.7/100 · LOW

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

Agent Over-Engineering Ratio 68.7/100 · HIGH

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

PR Review Velocity Impact 75.2/100 · CRITICAL

Which changes need focused human review? 4729 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 3HIGH 156MEDIUM 572LOW 3998

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 4729 distinct pattern matches across 15 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 Identifiers2547 hits · 2600 pts
SeverityFileLineSnippetContext
LOWfrontend/src/extensions/registry.ts110export function finalizeFrontendExtensions(reservedPaths: ReadonlySet<string>) {CODE
LOWfrontend/src/extensions/registry.ts163export function getFrontendExtensionRoutes() {CODE
LOWfrontend/src/extensions/registry.ts168export function getFrontendExtensionNavigation() {CODE
LOWfrontend/src/extensions/registry.ts181export function getFrontendExtensionLoadErrors() {CODE
LOWfrontend/src/extensions/bootstrap.ts8export async function initializeFrontendExtensions() {CODE
LOWfrontend/src/components/DimensionMembersDialog.tsx22export function dimensionKindForSourceField(sourceField: string): DimensionKind | null {CODE
LOWfrontend/src/components/ListColumnCustomizerInner.tsx150export function ListColumnCustomizerInner({CODE
LOWfrontend/src/components/StockPreviewDialogContent.tsx92export function StockPreviewDialogContent({ symbol, name, onClose, triggerInfo, navList: navListSource, onNavigate }: PrCODE
LOW…ntend/src/components/DimensionMembersDialogContent.tsx70export function DimensionMembersDialogContent({ target, onClose, onStockClick }: Omit<Props, 'target'> & { target: DimenCODE
LOWfrontend/src/components/EChartsCandlestick.tsx1174 function updateCompactPresentation() {CODE
LOWfrontend/src/components/StockMultiDayIntradayChart.tsx22export function StockMultiDayIntradayChart({CODE
LOWfrontend/src/components/ExtDimensionAnalysis.tsx66function pickDefaultDimensionField(config: ExtDataConfig | undefined, fallbackFieldNames: string[]) {CODE
LOW…rc/components/screener/DefaultStrategyParamsDialog.tsx36export function DefaultStrategyParamsDialog({ show, onClose }: Props) {CODE
LOWfrontend/src/lib/watchlist-group-colors.ts30export function resolveWatchlistGroupColor(color?: string | null): WatchlistGroupColorOption {CODE
LOWfrontend/src/lib/kline.ts32export function klineDailyLatestQueryOptions(symbol: string) {CODE
LOWfrontend/src/lib/kline.ts129export function klineMinuteRangeQueryOptions(symbol: string, days: number) {CODE
LOWfrontend/src/lib/useFinancials.ts23export function financialMetricsQueryOptions(symbol?: string) {CODE
LOWfrontend/src/lib/minuteBatchIncremental.ts41export async function fetchMinuteBatchIncremental(CODE
LOWfrontend/src/lib/stock-external-link.ts16export function loadStockExternalTemplate(): string {CODE
LOWfrontend/src/lib/stock-external-link.ts20export function saveStockExternalTemplate(tpl: string): void {CODE
LOWfrontend/src/pages/settings/MenuSettings.tsx211export function SettingsMenuSettingsPanel() {CODE
LOW…end/src/pages/factors/GenerateFactorStrategyDialog.tsx47export function GenerateFactorStrategyDialog({CODE
LOWbackend/app/secrets_store.py122def get_custom_webhook_secret() -> str:CODE
LOWbackend/app/secrets_store.py127def set_custom_webhook_secret(secret: str) -> str:CODE
LOWbackend/app/market_time.py40def trading_minutes_elapsed_from_dt(dt: datetime) -> float:CODE
LOWbackend/app/market_time.py70def trading_minutes_elapsed_from_ts(ts_ms: int | float | None) -> float:CODE
LOWbackend/app/enriched_generation.py113def _exclusive_generation_lock(data_dir: Path, asset_type: str) -> Iterator[None]:CODE
LOWbackend/app/enriched_generation.py166def _publication_claim_is_running(payload: dict[str, Any]) -> bool:CODE
LOWbackend/app/enriched_generation.py178def _orphaned_publishing_claim(payload: dict[str, Any]) -> bool:CODE
LOWbackend/app/enriched_generation.py238def enriched_publication_incomplete(CODE
LOWbackend/app/price_limits.py89def no_limit_window_margin_days(symbol: str) -> int:CODE
LOWbackend/app/price_limits.py156def polars_is_risk_warning_name(name: pl.Expr) -> pl.Expr:CODE
LOWbackend/app/price_limits.py196def write_numpy_price_limit_matrix(CODE
LOWbackend/app/main.py292 def _schedule_matrix_cache_prewarm() -> None:CODE
LOWbackend/app/main.py608async def capability_denied_handler(request: Request, exc: CapabilityDenied) -> JSONResponse:CODE
LOWbackend/app/share_capital.py27def apply_historical_float_shares(CODE
LOWbackend/app/desktop.py33def _ensure_data_dir_writable() -> None:CODE
LOW⚡backend/app/indicators/pipeline.py97def _custom_prev_fields_today() -> set[str]:CODE
LOW⚡backend/app/indicators/pipeline.py103def invalidate_custom_signals() -> None:CODE
LOWbackend/app/indicators/pipeline.py73def _get_custom_signal_exprs_today() -> dict[str, pl.Expr]:CODE
LOWbackend/app/indicators/pipeline.py608def _split_custom_exprs_by_limit_deps(CODE
LOWbackend/app/indicators/pipeline.py625def _needed_references_limit_prices(needed: set[str]) -> bool:CODE
LOWbackend/app/indicators/pipeline.py1326def attach_deviation_columns_today(CODE
LOWbackend/app/indicators/pipeline.py1419def compute_enriched_history_window(CODE
LOWbackend/app/indicators/pipeline.py2210def _compute_limit_signals_today(df: pl.DataFrame, instruments: pl.DataFrame) -> pl.DataFrame:CODE
LOWbackend/app/extensions/registry.py42 def register_notification_formatter(CODE
LOWbackend/app/extensions/registry.py67 def has_notification_formatters(self) -> bool:CODE
LOWbackend/app/extensions/loader.py36def configure_backend_extensions(CODE
LOWbackend/app/extensions/loader.py67def _validate_router_conflicts(app: FastAPI, registrar: BackendExtensionRegistrar) -> None:CODE
LOWbackend/app/extensions/loader.py106def current_extension_context(*, data_dir, repository) -> ExtensionContext:CODE
LOWbackend/app/backtest/worker.py113def _decode_walkforward_config(payload: dict[str, Any]):CODE
LOWbackend/app/backtest/matrix.py68def _raise_if_matrix_cancelled(cancel_event: threading.Event | None) -> None:CODE
LOWbackend/app/backtest/matrix.py345def active_matrix_compute_cache() -> MatrixComputeCache | None:CODE
LOWbackend/app/backtest/matrix.py350def _activate_valid_bar_index(index: ValidBarIndex) -> Iterator[None]:CODE
LOWbackend/app/backtest/matrix.py680def load_market_data_matrix_from_parquet(CODE
LOWbackend/app/backtest/matrix.py845def _validate_matrix_dataset_schema(dataset: pads.Dataset) -> None:CODE
LOWbackend/app/backtest/matrix.py853def _normalize_matrix_cache_fields(CODE
LOWbackend/app/backtest/matrix.py871def _normalize_symbol_request(symbols: list[str] | None) -> tuple[str, ...] | None:CODE
LOWbackend/app/backtest/matrix.py877def _matrix_filter_expression(CODE
LOWbackend/app/backtest/matrix.py890def _resolve_matrix_storage_fields(CODE
2487 more matches not shown…
Decorative Section Separators560 hits · 1875 pts
SeverityFileLineSnippetContext
MEDIUMpackaging/generate_icon_designs.py69# ── 方案 1: 渐变紫底 + 白色发光主体 (现代 App 风格) ──────────────COMMENT
MEDIUMpackaging/generate_icon_designs.py120# ── 方案 2: 透明底 + 渐变紫发光主体 (优雅线条) ──────────────────COMMENT
MEDIUMpackaging/generate_icon_designs.py160# ── 方案 3: 深色底 + 金紫上涨 K 线柱 (金融图表感) ────────────────COMMENT
MEDIUMpackaging/generate_icon_designs.py201# ── 方案 4: 渐变底 + K线被方括号"框选" (品牌强调) ────────────────COMMENT
MEDIUMfrontend/src/components/signals/ConditionEditor.tsx126// ── 字段选择器: 搜索 + 分组居中对话框 ───────────────────COMMENT
MEDIUMfrontend/src/components/signals/ConditionEditor.tsx245// ── 日期偏移控件: "最新" / "前N日" ───────────────────────COMMENT
MEDIUMfrontend/src/components/signals/ConditionEditor.tsx289// ── 右操作数: 字段(弹出) / 常量 切换 ─────────────────────COMMENT
MEDIUMfrontend/src/pages/Regime.tsx49// ── 时间范围 ──────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Regime.tsx87// ── EChart hook ───────────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Regime.tsx136// ── 卡片容器样式 (Dashboard 同款) ─────────────────────────COMMENT
MEDIUMfrontend/src/pages/Regime.tsx139// ── 主组件 ────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Regime.tsx1274// ── 主线过滤设置面板 ──────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Regime.tsx1404// ── 自定义天数输入弹窗 ────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Dev.tsx10// ── 分钟K探测 (迁移自 MinuteDataProbe) ─────────────────COMMENT
MEDIUMfrontend/src/pages/Dev.tsx184// ── 演示数据生成 ──────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Dev.tsx319// ── 封单监控模拟触发 ──────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Dev.tsx447// ── Dev 主页面 ────────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Monitor.tsx337// ── 触发记录列表 ──────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Monitor.tsx704// ── 监控规则列表 ──────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Monitor.tsx1036// ── 规则编辑对话框 ────────────────────────────────────COMMENT
MEDIUMfrontend/src/pages/Monitor.tsx1075// ── 确认对话框 ────────────────────────────────────────COMMENT
MEDIUMmcp-server/src/tsp_mcp_server/server.py61# ── read:market 行情 ──────────────────────────────────COMMENT
MEDIUMmcp-server/src/tsp_mcp_server/server.py86# ── read:analysis 策略/环境/告警 ───────────────────────COMMENT
MEDIUMmcp-server/src/tsp_mcp_server/server.py111# ── read:ext / write:ext 扩展数据 ─────────────────────COMMENT
MEDIUMmcp-server/src/tsp_mcp_server/server.py136# ── run:backtest 回测 ─────────────────────────────────COMMENT
MEDIUMbackend/app/config.py11# ── 运行环境检测 ──────────────────────────────────────────COMMENT
MEDIUMbackend/app/price_limits.py47# ================================================================COMMENT
MEDIUMbackend/app/price_limits.py58# ================================================================COMMENT
MEDIUMbackend/app/main.py451# ================================================================COMMENT
MEDIUMbackend/app/main.py453# ================================================================COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py124# ================================================================COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py128# ================================================================COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py130 # ── 存储列 (parquet 持久化) ──────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py145 # ── 基础指标 ─────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py150 # ── 均线 MA ──────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py156 # ── 指数均线 EMA ─────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py162 # ── MACD ─────────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py166 # ── 布林带 BOLL ──────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py169 # ── KDJ ──────────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py173 # ── ATR ──────────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py175 # ── 量价 ─────────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py179 # ── 极值 ─────────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py182 # ── 动量 ─────────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py188 # ── 异动偏离 (运行时由 repository 附着, 不落盘) ────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py192 # ── 波动率 ───────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py194 # ── RSI ──────────────────────────────────────────────COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py311# ================================================================COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py313# ================================================================COMMENT
MEDIUM⚡backend/app/indicators/pipeline.py315# ── compute_indicators 的列依赖关系 (供 needed 裁剪时求闭包) ────────────COMMENT
MEDIUMbackend/app/indicators/pipeline.py48# ── 自定义信号缓存 ─────────────────────────────────────COMMENT
MEDIUMbackend/app/indicators/pipeline.py1029# ================================================================COMMENT
MEDIUMbackend/app/indicators/pipeline.py1031# ================================================================COMMENT
MEDIUMbackend/app/indicators/pipeline.py1084# ================================================================COMMENT
MEDIUMbackend/app/indicators/pipeline.py1091# ================================================================COMMENT
MEDIUMbackend/app/indicators/pipeline.py1360# ================================================================COMMENT
MEDIUMbackend/app/indicators/pipeline.py1372# ================================================================COMMENT
MEDIUMbackend/app/indicators/pipeline.py1903# ================================================================COMMENT
MEDIUMbackend/app/indicators/pipeline.py1905# ================================================================COMMENT
MEDIUM⚡backend/app/indicators/levels.py23# ================================================================COMMENT
MEDIUM⚡backend/app/indicators/levels.py25# ================================================================COMMENT
500 more matches not shown…
Excessive Try-Catch Wrapping576 hits · 503 pts
SeverityFileLineSnippetContext
LOWmcp-server/src/tsp_mcp_server/server.py50 except Exception: # noqa: BLE001CODE
LOWbackend/app/secrets_store.py47 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/__init__.py22 except Exception:CODE
LOWbackend/app/__init__.py35 except Exception: # noqa: BLE001CODE
LOW⚡backend/app/main.py179 except Exception as e: # noqa: BLE001CODE
LOW⚡backend/app/main.py187 except Exception as e: # noqa: BLE001CODE
LOW⚡backend/app/main.py197 except Exception as e:CODE
LOW⚡backend/app/main.py210 except Exception as e: # noqa: BLE001CODE
LOW⚡backend/app/main.py220 except Exception as e: # noqa: BLE001CODE
LOW⚡backend/app/main.py229 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/main.py87 except Exception as _e: # noqa: BLE001CODE
LOWbackend/app/main.py103 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/main.py118 except Exception as exc: # noqa: BLE001CODE
LOWbackend/app/main.py146 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/main.py285 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/main.py329 except Exception: # noqa: BLE001CODE
LOWbackend/app/main.py363 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/main.py370 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/share_capital.py23 except Exception:CODE
LOWbackend/app/desktop.py47 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/desktop.py66 except Exception: # noqa: BLE001CODE
LOWbackend/app/desktop.py85 except Exception: # noqa: BLE001CODE
LOWbackend/app/desktop.py146 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/desktop.py165 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/desktop.py218 except Exception:CODE
LOWbackend/app/desktop.py240 except Exception:CODE
LOWbackend/app/desktop.py302 except Exception:CODE
LOWbackend/app/desktop.py337 except Exception:CODE
LOWbackend/app/plugins/fuyao/provider.py383 except Exception: # 缓存损坏不致命, 换下一个/重拉CODE
LOWbackend/app/plugins/fuyao/provider.py597 except Exception:CODE
LOWbackend/app/plugins/fuyao/provider.py1132 except Exception as e: # 缓存损坏等不致命: 回退逐标的接口CODE
LOW⚡backend/app/indicators/pipeline.py90 except Exception as e:CODE
LOWbackend/app/indicators/pipeline.py67 except Exception as e:CODE
LOWbackend/app/indicators/pipeline.py1188 except Exception as exc: # noqa: BLE001CODE
LOWbackend/app/indicators/pipeline.py1390 except Exception:CODE
LOWbackend/app/indicators/pipeline.py1551 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/indicators/pipeline.py1851 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/indicators/pipeline.py1881 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/indicators/levels.py590 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/factors/store.py43 except Exception as exc:CODE
LOWbackend/app/factors/store.py186 except Exception as exc:CODE
LOWbackend/app/factors/registry.py343 except Exception:CODE
LOWbackend/app/factors/ext_factors.py229 except Exception as e:CODE
LOWbackend/app/factors/ext_factors.py263 except Exception as e:CODE
LOWbackend/app/factors/ext_factors.py321 except Exception as e:CODE
LOWbackend/app/factors/ext_factors.py353 except Exception as e:CODE
LOWbackend/app/extensions/loader.py59 except Exception as exc:CODE
LOWbackend/app/extensions/loader.py102 except Exception as exc:CODE
LOWbackend/app/backtest/mining.py1616 except Exception as exc:CODE
LOWbackend/app/backtest/mining.py1629 except Exception as exc:CODE
LOWbackend/app/backtest/fundamentals.py56 except Exception as exc:CODE
LOWbackend/app/backtest/strategy.py514 except Exception as exc:CODE
LOWbackend/app/backtest/strategy.py851 except Exception: # noqa: BLE001CODE
LOWbackend/app/backtest/strategy.py1638 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/backtest/strategy.py1816 except Exception as exc:CODE
LOWbackend/app/backtest/strategy.py2361 except Exception as e:CODE
LOWbackend/app/backtest/strategy.py2374 except Exception as e:CODE
LOWbackend/app/backtest/strategy.py2409 except Exception as e: # noqa: BLE001CODE
LOWbackend/app/backtest/strategy.py2523 except Exception as e:CODE
MEDIUMbackend/app/backtest/engine.py1350def _valid_price(value) -> bool:CODE
516 more matches not shown…
Unused Imports513 hits · 486 pts
SeverityFileLineSnippetContext
LOWpackaging/generate_icon_designs.py10CODE
LOWpackaging/generate_icon_designs.py13CODE
LOWmcp-server/smoke_test.py5CODE
LOWmcp-server/src/tsp_mcp_server/server.py10CODE
LOWbackend/app/secrets_store.py8CODE
LOWbackend/app/db_safe.py6CODE
LOWbackend/app/config.py2CODE
LOWbackend/app/parquet.py2CODE
LOWbackend/app/watchdog.py14CODE
LOWbackend/app/polars_guard.py16CODE
LOWbackend/app/market_time.py7CODE
LOWbackend/app/enriched_generation.py1CODE
LOWbackend/app/price_limits.py3CODE
LOWbackend/app/main.py2CODE
LOWbackend/app/share_capital.py5CODE
LOWbackend/app/desktop.py16CODE
LOWbackend/app/desktop.py24CODE
LOWbackend/app/plugins/fuyao/provider.py27CODE
LOWbackend/app/plugins/fuyao/client.py10CODE
LOWbackend/app/indicators/pipeline.py16CODE
LOWbackend/app/indicators/levels.py13CODE
LOWbackend/app/factors/store.py7CODE
LOWbackend/app/factors/dsl.py15CODE
LOWbackend/app/factors/registry.py15CODE
LOWbackend/app/factors/ext_factors.py25CODE
LOWbackend/app/extensions/registry.py2CODE
LOWbackend/app/extensions/__init__.py1CODE
LOWbackend/app/extensions/__init__.py1CODE
LOWbackend/app/extensions/__init__.py1CODE
LOWbackend/app/extensions/__init__.py1CODE
LOWbackend/app/extensions/__init__.py7CODE
LOWbackend/app/extensions/__init__.py7CODE
LOWbackend/app/extensions/loader.py2CODE
LOWbackend/app/extensions/contracts.py2CODE
LOWbackend/app/backtest/worker.py2CODE
LOWbackend/app/backtest/matrix.py2CODE
LOWbackend/app/backtest/stats_v2.py13CODE
LOWbackend/app/backtest/regime_alignment.py1CODE
LOWbackend/app/backtest/mining.py2CODE
LOWbackend/app/backtest/fundamentals.py17CODE
LOWbackend/app/backtest/walkforward.py9CODE
LOWbackend/app/backtest/strategy.py5CODE
LOWbackend/app/backtest/numba_runtime.py9CODE
LOWbackend/app/backtest/mining_runtime.py2CODE
LOWbackend/app/backtest/engine.py5CODE
LOWbackend/app/backtest/engine.py12CODE
LOWbackend/app/backtest/minute_replay.py12CODE
LOWbackend/app/backtest/minute_trigger.py6CODE
LOWbackend/app/backtest/factor.py5CODE
LOWbackend/app/backtest/optimizer.py9CODE
LOWbackend/app/backtest/candidates.py3CODE
LOWbackend/app/data_providers/tickflow_provider.py2CODE
LOWbackend/app/data_providers/registry.py2CODE
LOWbackend/app/data_providers/__init__.py5CODE
LOWbackend/app/data_providers/__init__.py5CODE
LOWbackend/app/data_providers/__init__.py5CODE
LOWbackend/app/data_providers/__init__.py6CODE
LOWbackend/app/data_providers/schemas.py2CODE
LOWbackend/app/data_providers/capabilities.py24CODE
LOWbackend/app/data_providers/normalizer.py2CODE
453 more matches not shown…
Empty Error Handlers83 hits · 415 pts
SeverityFileLineSnippetContext
HIGHbackend/app/__init__.py35except Exception: # noqa: BLE001CODE
HIGHbackend/app/desktop.py85except Exception: # noqa: BLE001CODE
HIGHbackend/app/desktop.py264except (urllib.error.URLError, ConnectionError, OSError):CODE
HIGHbackend/app/indicators/pipeline.py1415except OSError:CODE
HIGHbackend/app/backtest/matrix.py1328except (OSError, ValueError):CODE
HIGHbackend/app/backtest/matrix.py1334except (OSError, ValueError):CODE
HIGHbackend/app/backtest/strategy.py851except Exception: # noqa: BLE001CODE
HIGHbackend/app/backtest/engine.py1101except Exception:CODE
HIGHbackend/app/backtest/engine.py1527except Exception:CODE
HIGHbackend/app/backtest/engine.py1299except (TypeError, ValueError):CODE
HIGHbackend/app/backtest/engine.py2055except Exception:CODE
HIGHbackend/app/backtest/engine.py2410except (TypeError, ValueError):CODE
HIGHbackend/app/backtest/engine.py2781except Exception:CODE
HIGHbackend/app/backtest/factor.py1047except ValueError:CODE
HIGHbackend/app/data_providers/custom/loader.py449except (TypeError, ValueError):CODE
HIGHbackend/app/data_providers/custom/loader.py454except (TypeError, ValueError):CODE
HIGHbackend/app/tickflow/repository.py990except Exception: # noqa: BLE001CODE
HIGHbackend/app/tickflow/repository.py1967except duckdb.CatalogException:CODE
HIGHbackend/app/api/alerts.py45except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/screener.py870except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/screener.py1115except Exception:CODE
HIGHbackend/app/api/ext_data.py1410except Exception:CODE
HIGHbackend/app/api/ext_data.py1440except Exception:CODE
HIGHbackend/app/api/settings.py1144except Exception:CODE
HIGHbackend/app/api/settings.py1970except Exception:CODE
HIGHbackend/app/api/kline.py1224except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/kline.py1420except Exception:CODE
HIGHbackend/app/api/kline.py1276except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/kline.py1669except Exception:CODE
HIGHbackend/app/api/monitor_rules.py161except Exception:CODE
HIGHbackend/app/api/monitor_rules.py621except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/monitor_rules.py674except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/monitor_rules.py262except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/monitor_rules.py688except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/monitor_rules.py695except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/data.py165except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/data.py200except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/data.py239except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/data.py304except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/data.py475except PermissionError:CODE
HIGHbackend/app/api/data.py542except Exception: # noqa: BLE001CODE
HIGHbackend/app/api/data.py528except OSError:CODE
HIGHbackend/app/api/data.py453except OSError:CODE
HIGHbackend/app/api/data.py472except OSError:CODE
HIGHbackend/app/jobs/daily_pipeline.py1120except Exception: # noqa: BLE001CODE
HIGHbackend/app/custom/assistant/tools.py884except Exception:CODE
HIGHbackend/app/services/strategy_run_queue.py59except (FileNotFoundError, ValueError, OSError):CODE
HIGHbackend/app/services/wecom_bot_service.py156except Exception: # noqa: BLE001CODE
HIGHbackend/app/services/wecom_bot_service.py241except asyncio.TimeoutError:CODE
HIGHbackend/app/services/api_gateway.py107except (IndexError, ValueError):CODE
HIGHbackend/app/services/ai_provider.py1163except OSError:CODE
HIGHbackend/app/services/ai_provider.py949except OSError:CODE
HIGHbackend/app/services/financial_sync.py428except asyncio.CancelledError:CODE
HIGHbackend/app/services/events.py63except (queue.Empty, queue.Full):CODE
HIGHbackend/app/services/auction_benchmark.py235except FuyaoError:CODE
HIGHbackend/app/services/screener.py422except Exception: # noqa: BLE001CODE
HIGHbackend/app/services/index_sync.py144except Exception: # noqa: BLE001CODE
HIGHbackend/app/services/fs_utils.py28except OSError:CODE
HIGHbackend/app/services/data_integrity.py403except JobCancelledError:CODE
HIGHbackend/app/services/ext_pull.py607except asyncio.CancelledError:CODE
23 more matches not shown…
Cross-Language Confusion70 hits · 402 pts
SeverityFileLineSnippetContext
HIGHbackend/app/indicators/pipeline.py880 # 无涨跌幅限制日 / 昨收缺失 → null (引用它的信号条件为 null, 下游按未命中处理)。COMMENT
HIGHbackend/app/indicators/pipeline.py2102 # ---- 动量 3d (异动偏离 deviate_3d 用; 旧 live_agg 未带该状态时跳过, 偏离列自然置 null) ----COMMENT
HIGHbackend/app/indicators/pipeline.py2325 # 无涨跌幅限制日 / 昨收与权威价均缺失 → null; 引用它的自定义信号COMMENT
HIGHbackend/app/indicators/pipeline.py708 无涨跌幅限制日为 null)STRING
HIGHbackend/app/indicators/pipeline.py1127 无可用指数数据时返回 None (偏离列置 null, 不阻塞主流程)。STRING
HIGHbackend/app/indicators/pipeline.py1336 缺失动量的窗口 (如全量回退路径无 momentum_3d) 置 null, 不阻塞主流程。STRING
HIGHbackend/app/factors/dsl.py6窗口纪律 (Polars 嵌套窗口会静默产出全 null, 必须在编译期杜绝):STRING
HIGHbackend/app/factors/dsl.py661 # 阶段二: 提取截面算子的含窗口子树为临时列 (Polars 嵌套窗口会静默全 null)COMMENT
HIGHbackend/app/backtest/fundamentals.py6 (公告多在盘后发布, 保守取 T+1 生效), 此前保持 null;STRING
HIGHbackend/app/backtest/fundamentals.py9- 无财务数据的标的/日期一律为 null, 绝不填 0 (填 0 会污染截面排名,STRING
HIGHbackend/app/backtest/fundamentals.py107 # 公告当日取到「尚未生效」的新一期并被门控置 null, 打断上一期的前向填充,COMMENT
HIGHbackend/app/backtest/mining_runtime.py387 "mining factor panel requires non-null, unique symbol/date keys "CODE
HIGHbackend/app/backtest/engine.py655 # 按 asset_type 取维表: ETF 回测须用 ETF 维表, 否则名称 JOIN 失败(全 null)、COMMENT
HIGHbackend/app/tickflow/repository.py2339 if not existing.is_empty() and existing.equals(merged):CODE
HIGHbackend/app/api/factors.py139 # 截面值全相同时 pl.corr 返回 NaN (非 null), 与 FactorBacktestService 同口径剔除COMMENT
HIGHbackend/app/api/watchlist.py492 # 不在 enriched 缓存里的标的 (新股/冷门股/新用户未同步) 指标为 null, 前端渲染为 "—".COMMENT
HIGHbackend/app/api/watchlist.py595 # 旧 schema 迁移补的空串归一为 null, 前端只需判断一种「缺失」COMMENT
HIGHbackend/app/api/watchlist.py623 # 装饰列失败不得影响自选主表; 两列必须存在 (值可为 null), 否则前端排序/筛选静默失效COMMENT
HIGHbackend/app/services/regime_builder.py575 concat 前给旧数据补缺失列(null), 让旧 parquet 首次重写时自动迁移到新 schema。STRING
HIGHbackend/app/services/regime_builder.py587 # schema 对齐: 以 new_rows 的列名+顺序为权威, 旧数据补缺失列(null),COMMENT
HIGHbackend/app/services/regime_builder.py589 # 这样旧 parquet 首次重写时自动迁移到新 schema(新列在旧日期为 null)。COMMENT
HIGHbackend/app/services/market_phase.py12- promo 晋级率: 昨日连板池今日继续封板的比例 (池 <10 家记 null)STRING
HIGHbackend/app/services/market_phase.py176 (promo_rate 允许 null)。处理: promo 前向填充 → 各驱动 EMA 平滑 →STRING
HIGHbackend/app/services/quote_service.py1017 # 修复: API 在非交易时段可能返回 open/high/low=0 或 null,COMMENT
HIGHbackend/app/services/quote_service.py1076 # prev_close=0 → inf (非合法 JSON), prev_close=null → null; 用 when 守护COMMENT
HIGHbackend/app/services/kline_sync.py500# 除权事件明细列 (可选, 缺省为 null): 等差显示投影 (原始价 - Σ未来每股分红,COMMENT
HIGHbackend/app/services/kline_sync.py502# 存量 all.parquet 只有规范三列, 合并用 how="diagonal" 自动补 null;COMMENT
HIGHbackend/app/services/kline_sync.py745 # trade_time 等字符串路径: 先解析成 Datetime (失败置 null), 再做时段分类COMMENT
HIGHbackend/app/services/kline_sync.py577 how="diagonal" 兼容存量三列 schema (旧行明细自动为 null);STRING
HIGHbackend/app/services/kline_sync.py582 (dividend/prev_close 等补 null) 不改变复权价格 → 不计入变化列表,STRING
HIGHbackend/app/services/depth_service.py386 # polars 会按首行推断类型, 后续遇到不一致 (bool vs null) 报COMMENT
HIGHbackend/app/strategy/intraday_features.py9 - null 语义: 窗口不足、基准为零、缺昨收、开盘未满 30 分钟 → 特征为 null,STRING
HIGHbackend/app/strategy/intraday_features.py64 OHLC 缺失时相关特征降级为 null)。可包含多个交易日, 特征按日分组。STRING
HIGHbackend/app/strategy/intraday_features.py69 返回: symbol/datetime + INTRADAY_FEATURES 全部特征列(Float64, 可 null)。STRING
HIGHbackend/app/strategy/custom_signals.py703 上升沿: 条件 false→true 的那根 bar 为 true; 首根 bar(前值为 null)不触发;STRING
HIGHbackend/tests/test_minute_partition_merge.py73 assert stored.equals(stored.sort("symbol", "datetime"))CODE
HIGHbackend/tests/test_fundamental_factors.py66 # 无财务数据标的全 null, 绝不填 0COMMENT
HIGHbackend/tests/test_fundamental_factors.py148 null), 两条路径给出不同的因子值。STRING
HIGHbackend/tests/test_adj_factor_event_columns.py5- 存量 all.parquet 只有规范三列 → diagonal 合并自动补 null, 读取方零改动;STRING
HIGHbackend/tests/test_custom_batch_isolation.py47 # 非法字符串维持 strict=False 宽松行为 (null, 不抛异常)COMMENT
HIGH⚡backend/tests/test_minute_adjust.py97 assert out_index.equals(df)CODE
HIGH⚡backend/tests/test_minute_adjust.py100 assert out_no_factors.equals(df)CODE
HIGH⚡backend/tests/test_minute_adjust.py104 assert out_no_events.equals(df)CODE
HIGH⚡backend/tests/test_factor_dsl.py122 # A 组: [null, null, 10, 11, 12, 13]; B 组: [null, null, 100, 90, 80, 70]COMMENT
HIGH⚡backend/tests/test_factor_dsl.py129 # A 组 2 日窗: [null, 10.5, 11.5, 12.5, 13.5, 14.5]COMMENT
HIGH⚡backend/tests/test_factor_dsl.py146 # Polars 嵌套窗口会静默全 null; 编译器必须走两阶段 (临时列 + 截面)COMMENT
HIGH⚡backend/tests/test_factor_dsl.py190 # A 组全为负 → null; B 组 100-15=85 → log 正常COMMENT
HIGH⚡backend/tests/test_factor_dsl.py197 # 常数序列或完全单调: 只验证产出为有限值或 null, 无串组异常即可COMMENT
HIGHbackend/tests/test_intraday_signals.py93 # 上午 8 根: idx5 起 3/3 窗口成立(idx5,6,7 非 null); 下午 4 根全部 null(窗口不足)COMMENT
HIGH⚡backend/tests/test_intraday_signals.py313 assert out is df or out.equals(df)CODE
HIGHbackend/tests/test_data_integrity.py4null); 历史交易日的 quote_ts 时刻 < 15:00 即盘中快照 → 坏。STRING
HIGHbackend/tests/test_abnormal_moves.py65 # 无指数数据: 偏离列为 null, 不抛异常COMMENT
HIGHbackend/tests/test_abnormal_moves.py158 # 全量回退路径可能缺 momentum_3d: 该窗口置 null, 其余窗口正常COMMENT
HIGH⚡backend/tests/test_overlay_filter.py103 # A: [null, 8>null, 9>8] → [F, F, T]COMMENT
HIGHbackend/tests/test_watchlist_enriched_join.py281 # 指数无换手率: 列缺失或 null, 不报错COMMENT
HIGHbackend/tests/test_watchlist_enriched_join.py118 assert row_999["close"] is None, f"缺失指标应为 null, 实际: {row_999['close']}"CODE
HIGHbackend/tests/test_watchlist_enriched_join.py5 (新股 / 冷门股 / 新用户未同步). 缺失标的的指标字段为 null, 前端渲染为 "—".STRING
HIGHbackend/tests/test_watchlist_enriched_join.py99 """核心回归: 自选里有但 enriched 缓存里没有的标的, 必须仍返回一行 (指标 null)."""STRING
HIGHbackend/tests/test_watchlist_enriched_join.py165 """ETF 同样: 自选了但 ETF enriched 缓存没有的, 也应返回 (指标 null)."""STRING
HIGHbackend/tests/test_watchlist_enriched_join.py253 - 指数行 turnover_rate 为 None (列不存在或 null, 不报错)STRING
10 more matches not shown…
Deep Nesting189 hits · 141 pts
SeverityFileLineSnippetContext
LOWbackend/app/main.py582CODE
LOWbackend/app/desktop.py249CODE
LOWbackend/app/plugins/fuyao/provider.py480CODE
LOWbackend/app/plugins/fuyao/provider.py693CODE
LOWbackend/app/plugins/fuyao/provider.py935CODE
LOWbackend/app/plugins/fuyao/provider.py970CODE
LOWbackend/app/plugins/fuyao/provider.py1043CODE
LOWbackend/app/plugins/fuyao/provider.py1150CODE
LOWbackend/app/plugins/fuyao/client.py279CODE
LOWbackend/app/indicators/pipeline.py1121CODE
LOWbackend/app/indicators/pipeline.py1419CODE
LOWbackend/app/indicators/pipeline.py1503CODE
LOWbackend/app/indicators/levels.py408CODE
LOWbackend/app/indicators/levels.py515CODE
LOWbackend/app/factors/store.py166CODE
LOWbackend/app/factors/dsl.py305CODE
LOWbackend/app/factors/ext_factors.py268CODE
LOWbackend/app/extensions/loader.py67CODE
LOWbackend/app/backtest/worker.py136CODE
LOWbackend/app/backtest/worker.py178CODE
LOWbackend/app/backtest/worker.py285CODE
LOWbackend/app/backtest/matrix.py1609CODE
LOWbackend/app/backtest/matrix.py1840CODE
LOWbackend/app/backtest/matrix.py2311CODE
LOWbackend/app/backtest/matrix.py2934CODE
LOWbackend/app/backtest/matrix.py3077CODE
LOWbackend/app/backtest/matrix.py3678CODE
LOWbackend/app/backtest/mining.py610CODE
LOWbackend/app/backtest/mining.py824CODE
LOWbackend/app/backtest/walkforward.py192CODE
LOWbackend/app/backtest/strategy.py805CODE
LOWbackend/app/backtest/strategy.py1108CODE
LOWbackend/app/backtest/strategy.py2333CODE
LOWbackend/app/backtest/strategy.py2615CODE
LOWbackend/app/backtest/strategy.py2710CODE
LOWbackend/app/backtest/engine.py674CODE
LOWbackend/app/backtest/engine.py850CODE
LOWbackend/app/backtest/engine.py1203CODE
LOWbackend/app/backtest/engine.py1802CODE
LOWbackend/app/backtest/engine.py2266CODE
LOWbackend/app/backtest/engine.py1009CODE
LOWbackend/app/backtest/engine.py1283CODE
LOWbackend/app/backtest/engine.py2391CODE
LOWbackend/app/backtest/engine.py2583CODE
LOWbackend/app/backtest/engine.py2610CODE
LOWbackend/app/backtest/minute_replay.py125CODE
LOWbackend/app/backtest/minute_trigger.py22CODE
LOWbackend/app/backtest/optimizer.py36CODE
LOWbackend/app/backtest/candidates.py182CODE
LOWbackend/app/data_providers/custom/provider.py53CODE
LOWbackend/app/data_providers/custom/provider.py108CODE
LOWbackend/app/data_providers/custom/mapper.py43CODE
LOWbackend/app/data_providers/custom/loader.py148CODE
LOWbackend/app/tickflow/pools.py75CODE
LOWbackend/app/tickflow/repository.py148CODE
LOWbackend/app/tickflow/repository.py564CODE
LOWbackend/app/tickflow/repository.py1299CODE
LOWbackend/app/tickflow/repository.py1450CODE
LOWbackend/app/api/alerts.py98CODE
LOWbackend/app/api/signals.py252CODE
129 more matches not shown…
Modern Structural Boilerplate134 hits · 134 pts
SeverityFileLineSnippetContext
LOWbackend/app/secrets_store.py18logger = logging.getLogger(__name__)CODE
LOWbackend/app/watchdog.py28logger = logging.getLogger(__name__)CODE
LOWbackend/app/main.py66logger = logging.getLogger(__name__)CODE
LOWbackend/app/desktop.py26logger = logging.getLogger(__name__)CODE
LOWbackend/app/desktop.py120def _setup_logging() -> None:CODE
LOWbackend/app/plugins/fuyao/provider.py48logger = logging.getLogger(__name__)CODE
LOWbackend/app/plugins/fuyao/client.py18logger = logging.getLogger(__name__)CODE
LOWbackend/app/indicators/pipeline.py45logger = logging.getLogger(__name__)CODE
LOW⚡backend/app/indicators/levels.py20logger = logging.getLogger(__name__)CODE
LOWbackend/app/factors/store.py19logger = logging.getLogger(__name__)CODE
LOWbackend/app/factors/ext_factors.py36logger = logging.getLogger(__name__)CODE
LOWbackend/app/extensions/__init__.py9__all__ = [CODE
LOWbackend/app/extensions/loader.py15logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/worker.py21logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/matrix.py61logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/mining.py16logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/fundamentals.py27logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/walkforward.py17logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/strategy.py66logger = logging.getLogger(__name__)CODE
LOW⚡backend/app/backtest/engine.py33logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/factor.py35logger = logging.getLogger(__name__)CODE
LOWbackend/app/backtest/optimizer.py19logger = logging.getLogger(__name__)CODE
LOWbackend/app/data_providers/tickflow_provider.py18logger = logging.getLogger(__name__)CODE
LOWbackend/app/data_providers/__init__.py8__all__ = ["AssetType", "MarketDataProvider", "ProviderCapabilities", "get_provider"]CODE
LOWbackend/app/data_providers/custom/provider.py28logger = logging.getLogger(__name__)CODE
LOWbackend/app/data_providers/custom/__init__.py23__all__ = [CODE
LOWbackend/app/data_providers/custom/loader.py26logger = logging.getLogger(__name__)CODE
LOWbackend/app/tickflow/pools.py20logger = logging.getLogger(__name__)CODE
LOWbackend/app/tickflow/client.py20logger = logging.getLogger(__name__)CODE
LOWbackend/app/tickflow/policy.py26logger = logging.getLogger(__name__)CODE
LOWbackend/app/tickflow/repository.py40logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/auth.py29logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/market_recap.py26logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/financials.py17logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/screener.py24logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/screener.py282def _update_cache_strategy(data_dir, as_of: str, strategy_id: str, safe_data: dict) -> None:CODE
LOWbackend/app/api/paper.py19logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/strategy.py35logger = logging.getLogger(__name__)CODE
LOW⚡backend/app/api/ext_data.py38logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/watchlist.py27logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/pipeline.py23logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/stock_analysis.py29logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/settings.py25logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/indices.py18logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/kline.py27logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/backtest.py23logger = logging.getLogger(__name__)CODE
LOWbackend/app/api/data.py17logger = logging.getLogger(__name__)CODE
LOWbackend/app/jobs/daily_pipeline.py32logger = logging.getLogger(__name__)CODE
LOWbackend/app/jobs/daily_pipeline.py1413def set_app_state(app_state) -> None:CODE
LOWbackend/app/services/strategy_run_queue.py25logger = logging.getLogger(__name__)CODE
LOWbackend/app/services/wecom_bot_service.py29logger = logging.getLogger(__name__)CODE
LOW⚡backend/app/services/wecom_bot_service.py57 def set_app_state(self, app_state) -> None:CODE
LOWbackend/app/services/auth.py27logger = logging.getLogger(__name__)CODE
LOWbackend/app/services/auth.py106def set_password(password: str) -> None:CODE
LOWbackend/app/services/notify_adapter.py21logger = logging.getLogger(__name__)CODE
LOWbackend/app/services/market_recap.py24logger = logging.getLogger(__name__)CODE
LOWbackend/app/services/strategy_cache.py35logger = logging.getLogger(__name__)CODE
LOWbackend/app/services/webhook_adapter.py25logger = logging.getLogger(__name__)CODE
LOW⚡backend/app/services/financial_sync.py20logger = logging.getLogger(__name__)CODE
LOWbackend/app/services/financial_sync.py381 def update_capabilities(self, capset: CapabilitySet) -> None:CODE
74 more matches not shown…
Hallucination Indicators3 hits · 45 pts
SeverityFileLineSnippetContext
CRITICAL⚡backend/tests/test_index_minute_history.py52 request.app.state.repo.get_index_daily.assert_not_called()CODE
CRITICAL⚡backend/tests/test_index_minute_history.py72 request.app.state.repo.get_index_daily.assert_not_called()CODE
CRITICAL⚡backend/tests/test_index_minute_history.py90 request.app.state.repo.get_index_daily.assert_not_called()CODE
Verbosity Indicators10 hits · 16 pts
SeverityFileLineSnippetContext
LOW…tend/src/components/screener/StrategyBuilderDialog.tsx322 // Step 1: 生成COMMENT
LOW…tend/src/components/screener/StrategyBuilderDialog.tsx370 // Step 2: AI 修改COMMENT
LOWbackend/app/tickflow/repository.py588 # Step 1: 直接读最新日期的分区文件 (仅 14 列)COMMENT
LOWbackend/app/tickflow/repository.py605 # Step 2: 读近 300 天 14 列数据 → compute → filter(latest) → 缓存COMMENT
LOWbackend/app/api/kline.py760 # Step 1: 本地优先 — 一次 scan 读全部 symbol 当日分钟K (股票 / ETF 分钟数据分开存储)COMMENT
LOWbackend/app/api/kline.py843 # Step 2: 补拉并落盘 (取到即写, upsert 语义; 下一轮命中本地, 请求量骤降)。COMMENT
LOW⚡backend/app/jobs/daily_pipeline.py768 # Step 3: 刷新视图COMMENT
LOWbackend/app/jobs/daily_pipeline.py212 # Step 0: 先同步个股维表, 再解析标的池 — 确保标的池基于最新 instrumentsCOMMENT
LOWbackend/app/jobs/daily_pipeline.py224 # Step 1: 日 K 同步COMMENT
LOWbackend/app/jobs/daily_pipeline.py429 # Step 2: 计算 enrichedCOMMENT
Structural Annotation Overuse10 hits · 16 pts
SeverityFileLineSnippetContext
LOW…tend/src/components/screener/StrategyBuilderDialog.tsx322 // Step 1: 生成COMMENT
LOW…tend/src/components/screener/StrategyBuilderDialog.tsx370 // Step 2: AI 修改COMMENT
LOWbackend/app/tickflow/repository.py588 # Step 1: 直接读最新日期的分区文件 (仅 14 列)COMMENT
LOWbackend/app/tickflow/repository.py605 # Step 2: 读近 300 天 14 列数据 → compute → filter(latest) → 缓存COMMENT
LOWbackend/app/api/kline.py760 # Step 1: 本地优先 — 一次 scan 读全部 symbol 当日分钟K (股票 / ETF 分钟数据分开存储)COMMENT
LOWbackend/app/api/kline.py843 # Step 2: 补拉并落盘 (取到即写, upsert 语义; 下一轮命中本地, 请求量骤降)。COMMENT
LOW⚡backend/app/jobs/daily_pipeline.py768 # Step 3: 刷新视图COMMENT
LOWbackend/app/jobs/daily_pipeline.py212 # Step 0: 先同步个股维表, 再解析标的池 — 确保标的池基于最新 instrumentsCOMMENT
LOWbackend/app/jobs/daily_pipeline.py224 # Step 1: 日 K 同步COMMENT
LOWbackend/app/jobs/daily_pipeline.py429 # Step 2: 计算 enrichedCOMMENT
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHbackend/tests/test_strategy_publish.py0def filter(df: pl.dataframe, params: dict) -> pl.expr: return pl.lit(true)STRING
HIGHbackend/tests/test_strategy_code_save.py0def filter(df: pl.dataframe, params: dict) -> pl.expr: return pl.lit(true)STRING
HIGHbackend/tests/test_strategy_build_stream.py0def filter(df: pl.dataframe, params: dict) -> pl.expr: return pl.lit(true)STRING
Over-Commented Block13 hits · 12 pts
SeverityFileLineSnippetContext
LOWdev.sh1#!/usr/bin/env bashCOMMENT
LOWtiers.yaml1# tickflow-stock-panel —— TickFlow 推荐套餐能力对照表(§5.2)COMMENT
LOWfrontend/src/lib/queryKeys.ts141 // 扩展表 schema 清单 (板块切换的资金流列选择器等)COMMENT
LOWbackend/pyproject.toml81line-length = 100COMMENT
LOWbackend/app/price_limits.py41 and trade_date < MAIN_BOARD_ST_LIMIT_CHANGE_DATECOMMENT
LOWbackend/app/indicators/pipeline.py1081 return df.select(cols)COMMENT
LOWbackend/app/indicators/pipeline.py1361# 全量重建流式暂存 + 自适应批次 (#208/#174)COMMENT
LOWbackend/app/services/webhook_adapter.py221COMMENT
LOWbackend/app/services/ext_data.py101 # 接口按日期查询的参数名 (如 "date"): 非 None 时请求COMMENT
LOWbackend/app/services/pipeline_jobs.py561# ================================================================COMMENT
LOWbackend/app/strategy/monitor.py341 self._strategy_signal_state: dict[tuple[str, str, str, str], tuple[str, set[str]]] = {}COMMENT
LOW.github/workflows/release.yml1name: 桌面客户端发布COMMENT
LOW.github/workflows/release.yml121 # --no-dev 排除 pytest/ruff/mypy; --extra desktop 装 pywebviewCOMMENT
AI Structural Patterns16 hits · 12 pts
SeverityFileLineSnippetContext
LOWbackend/app/indicators/pipeline.py1245CODE
LOWbackend/app/backtest/matrix.py680CODE
LOWbackend/app/backtest/mining.py610CODE
LOWbackend/app/api/sector_rotation.py15CODE
LOWbackend/app/api/ext_data.py527CODE
LOWbackend/app/api/backtest.py491CODE
LOWbackend/app/api/backtest.py800CODE
LOWbackend/app/api/backtest.py1022CODE
LOWbackend/app/custom/assistant/chat_service.py142CODE
LOWbackend/app/services/market_mainline.py250CODE
LOWbackend/app/services/sector_rotation.py324CODE
LOWbackend/app/services/minute_adjust.py162CODE
LOWbackend/app/services/ext_data.py58CODE
LOWbackend/app/services/kline_sync.py1030CODE
LOWbackend/app/strategy/intraday_signals.py178CODE
LOWbackend/tests/test_watchlist_enriched_join.py24CODE
Dead Code2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMbackend/tests/test_strategy_build_stream.py177CODE
MEDIUMbackend/tests/test_custom_assistant.py228CODE