ErrLookup › ZhuLinsen/daily_stock_analysis
ZhuLinsen/daily_stock_analysis
LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs. · Python · 516 source files
Analyzed at 5159bd72e8 on 2026-08-15. 328 documented errors.
| Code / Message | Type | Severity | Tags |
|---|---|---|---|
| Backend executable not found: ${backendPath} | exception | error | portfolio, validation, symbol, corporate-action |
| Invalid share image record ID | exception | warning | portfolio, validation, date-range, query |
| Desktop backend URL is unavailable | exception | warning | portfolio, validation, symbol, query |
| Desktop backend origin is invalid | exception | warning | portfolio, validation, enum, query |
| Desktop share images require the configured backend origin | exception | warning | portfolio, validation, date-range, cash-ledger |
| Desktop window is unavailable | exception | warning | portfolio, validation, enum, cash-ledger |
| Desktop share image source did not return HTML | exception | warning | portfolio, validation, date-range, corporate-action |
| Desktop share image has invalid dimensions: ${pageMetrics.wi | exception | warning | portfolio, validation, symbol, corporate-action |
| Desktop share image capture returned an empty image | exception | warning | portfolio, validation, enum, corporate-action |
| 当前运行模式不支持自动安装更新。 | exception | error | portfolio, conflict, idempotency, trade |
| 更新尚未下载完成,无法自动安装。 | exception | error | portfolio, conflict, idempotency, dedup, trade |
| 当前平台不支持自动安装更新。 | exception | error | portfolio, oversell, position, trade, replay |
| 发送失败 | exception | error | portfolio, validation, split, replay, data-corruption |
| 股票 ${stockCode} 正在分析中 | exception | error | portfolio, validation, trade, replay, data-corruption |
| 大盘复盘正在执行中,请稍后再试 | exception | error | portfolio, validation, trade, side, replay, data-corruption |
| 选股功能不可用。请检查策略配置、数据依赖和服务日志。 | exception | error | portfolio, oversell, replay, trade, data-integrity |
| 请提供文件或粘贴文本 | validation | error | portfolio, validation, cash-ledger, replay, data-corruption |
| 配置校验失败 | validation | error | portfolio, validation, trade, price, replay, data-corruption |
| 配置版本冲突 | validation | error | portfolio, validation, trade, side, replay, data-corruption |
capability_unsupported Codex Agent requires the Chat interface with progress and stop support | http | error | portfolio, validation, split, replay, cost-basis, data-corruption |
| Agent mode is not enabled | http | error | agent, config, http-400, capability-gate |
request_conflict This Agent request is already running | http | error | agent, http-409, sse, concurrency, single-flight |
request_not_active This Agent request is no longer running | http | info | agent, http-404, cancellation, sse, idempotency |
not_found Alert rule not found: {rule_id} | exception | warning | alerts, http-404, delete, idempotency |
| 大盘复盘未返回可持久化报告 | exception | error | market-review, analysis, runtime-error, llm, data-provider |
invalid_params analysis_date_from cannot be after analysis_date_to | http | warning | backtest, validation, http-400, date-range |
internal_error 回测执行失败: {str(exc)} | http | error | backtest, http-500, internal-error, database |
not_found 未找到整体回测汇总 | http | warning | backtest, http-404, empty-state, performance |
not_found 未找到 id/query_id={record_id} 的分析记录 | http | warning | history, http-404, share-image, record-not-found |
generation_failed 生成分享图片所需报告失败: {exc.message} | http | error | history, share-image, http-500, report-generation |
internal_error 查询历史列表失败: {str(e)} | http | error | history, http-500, internal-error, database, pagination |
invalid_request stock_code 不能为空 | http | error | http-400, validation, history-api, stock-code |
| history deletion made no progress | exception | error | database, concurrency, history-api, internal-error |
share_image_too_large 报告内容超过分享图片上限 {max_chars} 字符 | http | warning | http-413, share-image, config, size-limit |
share_image_unavailable 分享图片生成失败,请检查 {engine} 转图工具是否已安装并可用 | http | error | http-503, share-image, environment, external-tool |
validation_error symbol must not be empty | validation | error | http-400, validation, portfolio-api, symbol |
invalid_stock_code 股票代码不能为空 | http | warning | validation, fastapi, watchlist, http-400 |
bad_request 未提供文件,请使用表单字段 file 上传图片 | http | warning | upload, multipart, fastapi, http-400 |
unsupported_type 不支持的类型: {content_type}。允许: {ALLOWED_MIME_STR} | http | warning | upload, mime-type, image, http-400 |
file_too_large 图片超过 {MAX_SIZE_BYTES // (1024 * 1024)}MB 限制 | http | warning | upload, size-limit, image, http-400 |
read_failed 读取上传文件失败 | http | error | upload, network, proxy, http-400 |
extract_failed extract_failed | http | error | llm, vision, image, http-400 |
internal_error 图片提取失败 | http | error | llm, network, http-500, vision |
invalid_json JSON 解析失败: {e} | http | warning | json, http-400, parse-import |
parse_failed parse_failed | http | warning | parse-import, text-parsing, http-400 |
not_found 未找到股票 {stock_code} 的行情数据 | http | error | api, stock-data, not-found, fastapi |
unsupported_period unsupported_period | http | warning | api, validation, query-params, stock-data |
internal_error Failed to load system configuration | http | error | api, config, internal-error, fastapi |
validation_failed System configuration validation failed | http | warning | api, config, validation, llm-backend |
invalid_import_file invalid_import_file | http | warning | fastapi, http-400, import, dotenv, validation |
| {call_name} 调用超过 {wait_seconds:g}s,已放弃等待 | exception | error | akshare, timeout, network, data-provider, python |
| {call_name} 调用进程未返回结果 | exception | error | akshare, multiprocessing, crash, oom, data-provider |
| AkshareFetcher 不支持美股 {stock_code},请使用 YfinanceFetcher 获取正确的复 | exception | warning | akshare, us-stocks, data-provider, routing |
| Akshare 所有渠道获取失败: {last_error} | exception | error | akshare, rate-limit, fallback-exhausted, network, data-provider |
| Akshare(EM) 可能被限流: {e} | exception | error | akshare, rate-limit, anti-scraping, eastmoney, data-provider |
| Akshare 可能被限流: {e} | exception | error | akshare, rate-limit, etf, anti-scraping, data-provider |
| Akshare 获取 ETF 数据失败: {e} | exception | error | akshare, etf, data-provider, network, fallback |
| Akshare 获取美股数据失败: {e} | exception | error | akshare, us-stocks, sina, data-provider, fallback |
| Akshare 获取港股数据失败: {e} | exception | error | akshare, hk-stocks, data-provider, fallback, stock-code |
| [AlphaVantage] API key not configured | exception | error | alphavantage, api-key, configuration, env-vars |
| [AlphaVantage] {stock_code} is not a US stock | exception | warning | alphavantage, market-routing, validation, stock-code |
| [AlphaVantage] HTTP request failed for {symbol}: {e} | exception | error | alphavantage, http, network, timeout, data-provider |
| [AlphaVantage] Rate limited: {data['Note']} | exception | warning | alphavantage, rate-limit, quota, http-200-error |
| [AlphaVantage] API error for {symbol}: {data['Error Message' | exception | error | alphavantage, invalid-symbol, api-error, validation |
| [AlphaVantage] No time series data for {symbol} | exception | error | alphavantage, empty-response, api-contract, premium-tier |
| [AlphaVantage] No data in date range for {symbol} | exception | warning | alphavantage, date-range, compact-output, backfill |
| Baostock 登录失败: {login_result.error_msg} | exception | error | baostock, login, service-outage, a-shares |
| BaostockFetcher 不支持港股 {raw_code},请使用 AkshareFetcher | exception | warning | baostock, hk-stocks, market-routing, stock-code |
| BaostockFetcher 不支持美股 {stock_code},请使用 AkshareFetcher 或 Yfin | exception | warning | baostock, us-stocks, market-routing, guard |
| BaostockFetcher 不支持港股 {stock_code},请使用 AkshareFetcher | exception | warning | baostock, hk-stocks, market-routing, guard |
| BaostockFetcher 不支持北交所 {stock_code},将自动切换其他数据源 | exception | warning | baostock, bse, market-routing, guard |
| Baostock 查询失败: {rs.error_msg} | exception | error | baostock, query-error, a-shares, network |
| Baostock 未查询到 {stock_code} 的数据 | exception | warning | baostock, empty-data, trading-calendar, a-shares |
| Baostock 获取数据失败: {e} | exception | error | baostock, wrapper, fallback, a-shares, data-provider |
| [{self.name}] 未获取到 {stock_code} 的数据 | exception | error | data-provider, daily-data, failover, python |
| [{self.name}] {stock_code}: {error_reason} | exception | error | data-provider, wrapper, pipeline, python |
| {market_label} {stock_code} 获取失败: 暂无可用数据源 | exception | error | data-provider, configuration, no-sources, market-routing |
| {market_label} {stock_code} 获取失败: {errors joined by newline} | exception | error | data-provider, failover, all-sources-failed, network |
| 所有数据源获取 {stock_code} 失败: {errors joined by newline} | exception | error | data-provider, failover, all-sources-failed, a-share, rate-limit |
| 无法识别 ETF 代码 {stock_code} | exception | error | efinance, etf, code-classification, validation |
| 无法确定 ETF {stock_code} 的 Eastmoney 市场前缀 | exception | error | efinance, etf, prefix-mapping, configuration |
| EfinanceFetcher 不支持美股 {stock_code},请使用 AkshareFetcher 或 Yfin | exception | warning | efinance, us-stocks, capability-guard, failover |
| EfinanceFetcher 不支持港股日线 {stock_code},请使用 AkshareFetcher 或其他港 | exception | warning | efinance, hk-stocks, capability-guard, failover |
| efinance 可能被限流: {failure_message} | exception | error | efinance, rate-limit, anti-bot, eastmoney, retryable |
| efinance 获取数据失败: {failure_message} | exception | error | efinance, schema-drift, parse-error, data-provider |
| efinance 获取 ETF 数据失败: {failure_message} | exception | error | efinance, etf, schema-drift, parse-error |
| [Finnhub] API key not configured | exception | error | finnhub, configuration, api-key, env |
| [Finnhub] {stock_code} is not a US stock | exception | warning | finnhub, market-guard, us-stocks, validation |
| [Finnhub] HTTP request failed for {symbol}: {e} | exception | error | finnhub, network, http, timeout, retryable |
| [Finnhub] No data returned for {symbol} | exception | error | finnhub, no-data, date-range, delisted |
| OAuth token 缓存已失效或缺失,当前为无头运行不支持打开授权页面,请重建 LONGBRIDGE_OAUTH_T | exception | error | longbridge, oauth, headless, configuration, auth |
| Longbridge temporarily unavailable for daily_data | exception | warning | longbridge, circuit-breaker, availability, failover |
| Cannot convert {stock_code} to Longbridge symbol | exception | error | longbridge, symbol-mapping, market-coverage, validation |
| Longbridge QuoteContext not available | exception | error | longbridge, credentials, configuration, runtime-context |
| Pytdx temporarily unavailable: {self._last_unavailable_reaso | exception | warning | pytdx, cooldown, circuit-breaker, network, transient |
| pytdx 库未安装 | exception | error | pytdx, missing-dependency, optional-dependency, environment |
| Pytdx 无法连接任何服务器 | exception | error | pytdx, connection-failure, network, fallback |
| PytdxFetcher 不支持美股 {stock_code},请使用 AkshareFetcher 或 Yfinanc | exception | error | pytdx, market-coverage, us-stocks, routing |
| PytdxFetcher 不支持港股 {stock_code},请使用 AkshareFetcher | exception | error | pytdx, market-coverage, hk-stocks, routing |
| PytdxFetcher 不支持北交所 {stock_code},将自动切换其他数据源 | exception | error | pytdx, market-coverage, bse, routing |
| Pytdx 未查询到 {stock_code} 的数据 | exception | error | pytdx, empty-response, symbol-resolution, market-code |
| Pytdx 获取数据失败: {e} | exception | error | pytdx, wrapper-exception, parsing, fallback |
| TencentFetcher unsupported stock code: {stock_code} | exception | error | tencent, symbol-mapping, market-coverage, validation |
| TickFlowFetcher only supports A-share/ETF symbols | exception | error | tickflow, market-coverage, symbol-mapping, validation |
| TickFlow API key is not configured | exception | error | tickflow, credentials, configuration, api-key |
| TickFlow daily K-line request failed: {exc} | exception | error | tickflow, http-api, transient, fallback |
| TickFlow daily K-line response may be truncated by count: sy | exception | error | tickflow, data-integrity, pagination, truncation |
| TUSHARE_HTTP_URL 必须以 http:// 或 https:// 开头,当前值为 {url!r} | validation | error | tushare, configuration, env-var, validation |
| Tushare API 未初始化,请检查 Token 配置 | exception | error | tushare, credentials, token, configuration |
| TushareFetcher 不支持美股 {raw_code},请使用 AkshareFetcher 或 Yfinanc | exception | error | tushare, market-coverage, us-stocks, routing |
| 无法识别港股代码 {raw_code} | exception | error | tushare, hk-stocks, code-normalization, validation |
| TushareFetcher 不支持美股 {stock_code},请使用 AkshareFetcher 或 Yfina | exception | warning | market-coverage, tushare, us-stocks, data-provider |
| Tushare 配额超限: {e} | exception | error | rate-limit, tushare, quota, data-provider |
| Tushare 获取数据失败: {e} | exception | error | tushare, network, data-provider, wrap |
| Yahoo Finance 未查询到 {stock_code} 的数据 | exception | error | yfinance, symbol, empty-data, data-provider |
| Yahoo Finance 获取数据失败: {e} | exception | error | yfinance, network, rate-limit, wrap |
| 不支持的 portfolio: {portfolio} | validation | error | cli, portfolio, validation, broker |
| FastAPI port is not available: {host}:{port} | exception | critical | server, port, startup, socket |
| FastAPI server failed to start: {host}:{port}; {startup_erro | exception | critical | server, startup, uvicorn, thread |
| FastAPI 服务器启动后立即退出: {host}:{port} | exception | critical | server, startup, thread, silent-exit |
| FastAPI 服务在 {timeout_seconds:.1f}s 内未完成启动: {host}:{port} | exception | error | server, startup, timeout, performance |
| longbridge SDK is not installed. Run `pip install -r require | console | error | longbridge, dependency, setup, script |
| Expected 00-daily-analysis.yml job analyze to include a step | validation | error | ci, github-actions, workflow, docs-generation |
| Could not find managed table markers {TABLE_START!r} and {TA | validation | error | docs, markers, generation, maintenance |
| 00-daily-analysis.yml is missing required notification env m | validation | error | ci, workflow, env, docs-generation |
| generated Web index not found: {WEB_INDEX_PATH} | exception | error | script, index, build-artifact, bootstrap |
capability_unsupported Unsupported AGENT_BACKEND: {requested} | error_code | error | config, agent-backend, validation, enum |
capability_unsupported No cancellation-safe DSA tools are available to Codex | error_code | error | codex, tool-registry, capability, configuration |
tool_not_found DSA tool is not registered: {name} | error_code | error | codex, tool-registry, validation, naming |
timeout App Server request timed out: {method} | error_code | error | codex, timeout, jsonrpc, process-management |
cancelled App Server request was cancelled | error_code | info | codex, cancellation, jsonrpc |
protocol_error App Server returned a non-object result for {method} | error_code | error | codex, jsonrpc, protocol, version-compat |
permission_profile_mismatch App Server did not activate the DSA permission profile | error_code | critical | codex, permissions, sandbox, security, protocol |
resource_limit_exceeded App Server exceeded the cumulative item budget | error_code | error | codex, resource-limits, agent-loop, budget |
resource_cleanup_failed Codex App Server process group could not be reclaimed | error_code | error | codex, app-server, process-cleanup, process-group, sigkill |
capability_unsupported Codex App Server Agent is not supported on native Windows in this phase | error_code | error | codex, app-server, windows, platform-support |
command_not_found Codex executable was not found | error_code | error | codex, app-server, path, installation |
unsupported_mcp_name Configured MCP name cannot be safely expressed as a transient CLI override | error_code | error | codex, app-server, mcp, toml, naming |
| unsupported alert_type for current EventMonitor runtime: {al | validation | warning | python, validation, alerts, enum, event-monitor |
| unsupported alert_type: {alert_type} | validation | warning | python, alerts, deserialization, event-monitor |
| Event alert rules must be a JSON array | validation | error | python, json, validation, alerts |
| Event alert rules list must contain only objects; invalid en | validation | error | python, json, validation, alerts |
| Event alert rule must be an object | validation | error | python, validation, json, alerts |
| stock_code is required | validation | error | validation, event-monitor, stock-code, input |
| invalid alert_type: {rule.get('alert_type')} | validation | error | validation, event-monitor, enum, alert-type |
| invalid status: {status} | validation | error | validation, event-monitor, enum, status |
| invalid ttl_hours: {ttl_hours} | validation | error | validation, event-monitor, ttl, type-coercion |
| ttl_hours must be > 0 | validation | error | validation, event-monitor, ttl, range-check |
| invalid direction: {direction} | validation | error | validation, event-monitor, direction, price-cross |
| invalid price: {rule.get('price')} | validation | error | validation, event-monitor, price, type-coercion |
| price must be > 0 | validation | error | validation, event-monitor, price, range-check |
unsupported_agent_arch Codex Agent currently supports single-agent Chat only | http | error | configuration, agent, backend, architecture |
| Tool '{name}' not found in registry. Available: {self.list_n | exception | error | agent, tool-registry, key-error, dispatch |
| Hermes/non-Hermes mixed generation route is not supported wi | exception | critical | llm, litellm, hermes, routing, configuration |
| Hermes API key is a masked placeholder and cannot be used fo | exception | critical | llm, hermes, secrets, configuration, redaction |
unknown_backend_error fallback_backend_failed | error_code | critical | llm, generation, fallback, error-chaining |
| LLM returned empty response | exception | error | llm, litellm, empty-response, retry-loop |
| empty_response | validation | error | llm, parsing, empty-response, json-extraction |
| ambiguous_json | validation | error | llm, parsing, json-extraction, ambiguity |
| json_root_not_object | validation | error | json, llm-output, type-validation, analyzer |
| 未安装 Futu OpenAPI SDK;请先执行 `pip install "futu-api==10.8.6808" | exception | error | dependency, futu, import, setup |
| 加载 Futu OpenAPI SDK 失败: {exc} | exception | error | futu, import, environment, permissions |
| {operation}返回了非表格数据 | exception | error | futu, sdk-contract, pandas, version-pin |
| FUTU_OPEND_PORT 不是有效端口: {raw_port!r} | exception | error | configuration, environment, futu, validation |
| Futu OpenD 地址无效: {host!r}:{port} | exception | error | configuration, environment, futu, validation |
| futu-api==10.8.6808 的网络层仅支持 IPv4;FUTU_OPEND_HOST 当前为 {host!r | exception | error | futu, configuration, ipv6, network |
| FUTU_ACC_ID 必须是正整数账户 ID | exception | error | configuration, futu, validation, environment |
| 不支持的 FUTU_SECURITY_FIRM: {name} | exception | error | configuration, futu, enum, validation |
| 查询 Futu 真实账户失败: {data} | exception | error | futu, opend, network, authentication |
| Futu 账户查询返回了无效账户 ID | exception | error | futu, sdk-contract, data-integrity |
| 查询 Futu 真实账户失败: {exc} | exception | error | futu, network, error-translation, opend |
| FUTU_ACC_ID 未匹配到可用的真实证券账户;请检查账户 ID、券商和 OpenD 登录状态。 | exception | error | futu, configuration, account-matching |
| 未找到状态为 ACTIVE 的 Futu REAL 普通或 MASTER 证券账户 | exception | error | futu, opend, account, setup |
| 查询 Futu 真实持仓失败: {data} | exception | error | futu, opend, positions, network |
| Futu 持仓数量无效{suffix} | exception | error | futu, sdk-contract, positions, data-integrity |
| Futu 非零持仓返回了无效证券代码 | exception | error | futu, broker, data-contract, type-error |
| Futu 非零持仓返回了空证券代码 | exception | error | futu, broker, data-contract, validation |
| Futu 非零持仓返回了无效证券代码: {code} | exception | error | futu, broker, data-contract, formatting |
| 查询 Futu 真实持仓失败: {exc} | exception | error | futu, broker, network, wrapper-exception |
| 查询 Futu 持仓证券类型失败({prefix}): {data} | exception | error | futu, broker, api-error, batching |
| 查询 Futu 持仓证券类型失败: {exc} | exception | error | futu, broker, network, wrapper-exception |
| 无法确认证券类型的 Futu 持仓: {codes} | exception | error | futu, broker, data-contract, classification |
| 无法转换已确认的 Futu 正股代码到当前分析格式: {codes} | exception | error | futu, broker, code-mapping, validation |
| Responses API surface requires a normalized openai/<model> r | validation | error | config, litellm, llm, validation |
| LLM route aliases cannot mix API surfaces: {sorted(surface_c | validation | error | config, litellm, llm, routing, validation |
| eval_window_days must be positive | validation | error | backtest, config, validation |
| invalid analysis_phase: {requested}. Must be one of {sorted( | validation | error | trading-calendar, validation, enum |
| Hermes only supports PROTOCOL=openai | validation | error | hermes, llm, config, validation |
| Hermes BASE_URL must use http or https | validation | error | hermes, llm, config, url-validation |
| Hermes BASE_URL must include a loopback host | validation | error | hermes, llm, config, url-validation |
| Hermes BASE_URL must not include userinfo | validation | error | hermes, llm, config, security, url-validation |
| Hermes BASE_URL must not include params, query, or fragment | validation | error | hermes, llm, config, url-validation |
| Hermes BASE_URL path must be /v1 | validation | error | hermes, llm, config, url-validation |
| Hermes BASE_URL path must not contain encoded segments | validation | error | hermes, llm, config, url-validation, security |
| Hermes BASE_URL must point to 127.0.0.1, localhost, or [::1] | validation | error | config, llm, validation, url |
| Hermes BASE_URL contains an invalid port | validation | error | config, llm, validation, url, port |
schema_validation_failed schema_validation_failed | error_code | error | llm, cli, json, schema, validation |
unsafe_config unsafe_config at configuration for backend {backend} | error_code | error | config, llm, cli, validation, allowlist |
| NOTIFICATION_QUIET_HOURS must be in HH:MM-HH:MM format | validation | error | config, notification, validation, time |
| zoneinfo is unavailable | validation | error | environment, python-version, notification, timezone |
| unknown timezone: {raw} | validation | error | config, notification, timezone, validation |
| result1.get('error', 'unknown') | exception | error | slack, notification, auth, api, upload |
| HTTP {resp2.status_code} | exception | error | slack, notification, upload, http |
portfolio_busy Portfolio ledger is busy; please retry shortly. | exception | warning | sqlite, concurrency, database, retry, portfolio |
| 请安装 schedule 库: pip install schedule | exception | error | dependency, scheduler, environment, import |
| 无效的定时执行时间: {self.schedule_time!r} | validation | error | config, scheduler, validation, time |
| {field_name} must be one of: {allowed} | validation | error | validation, api, enum, schema |
| 题材新闻搜索并发已满,请稍后重试 | exception | warning | concurrency, search, backpressure, retry |
| 题材新闻搜索超过 {wait_seconds:g}s,已终止请求进程 | exception | warning | timeout, search, subprocess, network |
| 题材新闻搜索进程未返回结果 | exception | error | subprocess, search, crash, eof |
| 题材新闻搜索等待超过调用截止时间 | exception | warning | timeout, concurrency, cache, search |
| 题材新闻搜索超时必须大于 0 秒 | validation | error | validation, timeout, search, config |
resource_cleanup_failed Codex compatibility-check process group could not be reclaimed | exception | error | process, cleanup, subprocess, signals, codex |
| parameters must be an object | validation | error | validation, api-contract, alerts, json |
| fast_period must be < slow_period | validation | error | validation, alerts, macd, indicators |
| unsupported technical alert_type: {alert_type} | validation | error | validation, alerts, dispatch, enum |
| daily data missing {missing_text} column | exception | error | data-quality, dataframe, indicators, columns, alerts |
| {alert_type} periods require {required_bars} bars, but at mo | exception | error | validation, alerts, indicators, limits |
| invalid direction: {direction} | exception | error | validation, alerts, enum, direction |
| invalid {field_name}: {value} | exception | error | validation, type-error, alerts, parameters |
| {field_name} must be an integer | exception | error | validation, numeric, alerts, parameters |
| {field_name} must be between {minimum} and {maximum} | exception | error | validation, range, alerts, parameters |
| {field_name} must be finite | exception | error | validation, numeric, nan, alerts |
| {field_name} must be between {minimum:g} and {maximum:g} | exception | error | validation, range, rsi, alerts |
not_found Alert rule not found: {rule_id} | http | error | not-found, alerts, api, crud |
validation_error No fields provided for update | http | warning | validation, alerts, empty-payload, update |
unsupported_alert_type unsupported alert_type for Alert API: {alert_type or '<empty>'} | http | error | alerts, validation, enum, alert-type |
| analysis_date_from cannot be after analysis_date_to | validation | error | backtest, validation, date-range |
| eval_window_days must be a positive integer | validation | error | backtest, validation, parameter-validation |
| 非法股票代码格式: {code} | validation | error | backtest, stock-code, validation |
| Phase-filtered summary candidate set matches too many rows; | validation | warning | backtest, summary, row-limit, validation |
| Date-filtered summary matches too many rows; narrow the anal | validation | warning | backtest, summary, row-limit, validation |
| Phase-filtered summary matches too many rows; narrow the ana | validation | warning | backtest, summary, row-limit, race-condition |
| Phase-filtered results match too many rows; narrow the analy | validation | warning | backtest, phase-filter, row-limit, pagination |
| analysis_phase must be one of premarket, intraday, postmarke | validation | error | backtest, phase-filter, enum-validation |
not_found Decision signal not found: {signal_id_norm} | http | error | decision-signal, not-found, outcome-evaluation |
| {field_name} must be an integer | validation | error | decision-signal, validation, parameter-validation |
| {field_name} must be positive | validation | error | decision-signal, validation, parameter-validation |
| {field_name} must be one of {allowed_text} | validation | error | decision-signal, enum-validation, parameter-validation |
| {field_name} must be at most {max_length} characters | validation | error | decision-signal, text-validation, parameter-validation |
source_report_not_found source report not found: {source_report_id} | http | error | decision-signal, reassess, not-found |
guardrail_blocked actionable_signal_blocked_by_guardrail | http | warning | decision-signal, reassess, guardrail, policy |
unsupported_report_snapshot source report snapshot cannot produce a valid decision signal: {exc} | http | warning | decision-signal, reassess, data-quality, schema-compat |
unsupported_report_type source report is not a stock analysis report | http | warning | decision-signal, reassess, report-type, validation |
| terminal decision signal cannot be reactivated through statu | validation | error | decision-signal, lifecycle, validation, state-machine |
| score must be between 0 and 100 | validation | error | decision-signal, validation, range, score |
| stock_code is required | validation | error | decision-signal, validation, required-field, stock-code |
| market must be one of cn, hk, us, jp, kr, tw | validation | error | decision-signal, validation, enum, market |
| action must be one of buy/add/hold/reduce/sell/watch/avoid/a | validation | error | decision-signal, validation, enum, action, llm-output |
| {field_name} must be one of {allowed_text} | validation | error | decision-signal, validation, enum, case-sensitivity |
| trigger_source is required | validation | error | decision-signal, validation, required-field, trigger-source |
| {field_name} must be at most {max_length} characters | validation | error | decision-signal, validation, length-limit, text-field |
| {field_name} is required | validation | error | decision-signal, validation, required-field, public-text |
| {field_name} must not contain sensitive credentials | validation | error | decision-signal, security, secrets, sanitization, validation |
| {field_name} must be a number | validation | error | decision-signal, validation, numeric, type-coercion |
| {field_name} must be a finite positive number | validation | error | decision-signal, validation, price, nan, range |
| entry_low must be less than or equal to entry_high | validation | error | decision-signal, validation, price, range, ordering |
| {field_name} must be an integer | validation | error | |
| invalid datetime value: {value} | validation | error | |
backend_not_configured backend_not_configured at configuration for backend {backend} | error_code | error | |
unsafe_config unsafe_config at configuration for backend {backend} | error_code | error | |
invalid_json invalid_json at smoke_validation for backend generation_backend | error_code | error | |
schema_validation_failed schema_validation_failed at smoke_validation for backend generation_backend | error_code | error | |
| invalid {field_name} JSON | exception | error | |
| raw_result is empty or invalid for record {record_id} | exception | error | |
| market review report is empty for record {record_id} | exception | error | |
| Failed to rebuild AnalysisResult: {str(e)} | exception | error | |
| Failed to rebuild AnalysisResult from raw_result | exception | error | |
| Failed to generate markdown report: {str(e)} | exception | error | |
| 图片文件过小或损坏 | validation | error | |
| 无法验证类型: {mime_type} | validation | error | |
| 文件内容与声明的类型 image/webp 不匹配,可能被篡改 | validation | error | |
| 文件内容与声明的类型 {mime_type} 不匹配,可能被篡改 | validation | error | |
| 未配置 Vision API。请设置 LITELLM_MODEL 或相关 API Key。 | validation | error | |
| Hermes Vision 未验证:VISION_MODEL 不能选择包含 Hermes deployment 的 ro | validation | error | |
| No API key found for vision model {model} | validation | error | vision, api-key, litellm, configuration |
| LiteLLM vision returned empty response | validation | error | litellm, vision, empty-response, provider |
| 不支持的图片类型: {mime_type}。允许: {list(ALLOWED_MIME)} | validation | error | validation, image, mime-type |
| 图片内容为空 | validation | error | validation, image, upload |
| Image too large (max {MAX_SIZE_BYTES // (1024 * 1024)}MB) | validation | error | validation, image, size-limit |
| Vision API 调用失败,请检查 API Key 与网络: {last_error} | exception | error | network, api-key, retry, vision |
| 文件超过 {MAX_FILE_BYTES // (1024 * 1024)}MB 限制 | validation | error | validation, import, size-limit |
| Excel 解析失败: {e}。请确认:(1) 文件为 .xlsx 格式;(2) 工作表不为空;(3) 文件未损坏。若为 | validation | error | import, excel, xlsx, file-corruption |
| 仅支持 .xlsx 格式,请将 .xls 另存为 .xlsx 后重试 | validation | error | import, excel, xls, unsupported-format |
| 无法识别文件编码,请使用 UTF-8 或 GBK | validation | error | import, encoding, csv |
| CSV 解析失败:请检查分隔符是否一致、列数是否匹配。常见原因:引号未闭合、某行列数与其他行不一致。原始错误: {e} | validation | error | import, csv, pandas, parse-error |
| 文本超过 {MAX_TEXT_BYTES // 1024}KB 限制 | validation | error | import, text, size-limit, clipboard |
| intelligence source name already exists: {fields['name']} | exception | error | database, duplicate, intelligence, integrity-error |
| Intelligence source template not found: {template_id} | exception | error | intelligence, template, not-found |
| Intelligence source not found: {source_id} | exception | error | intelligence, not-found, stale-state |
| Intelligence source is disabled: {source_id} | exception | warning | intelligence, disabled, state |
| source name is required | validation | error | validation, intelligence, required-field |
| source url is required | validation | error | validation, intelligence, required-field |
| unsupported source_type: {source_type} | validation | error | validation, intelligence, enum |
| unsupported scope_type: {scope_type} | validation | error | validation, intelligence, enum |
| scope_value is required when scope_type={scope_type} | validation | error | |
| unsupported market: {market} | validation | error | |
| source url must be an absolute http(s) URL | validation | error | |
| source url must not contain credentials | validation | error | |
| source url host is required | validation | error | |
| source url host is not allowed | validation | error | |
| source url must not target private or local network addresse | validation | error | |
| source url host DNS resolution failed: {hostname} | validation | error | |
| feed redirect missing Location header | exception | error | |
| feed redirect chain exceeds {_MAX_FEED_REDIRECTS} | exception | error | |
| feed response is too large | exception | error | |
| fetch failed: upstream request failed | exception | error | |
| NewsNow API redirects are not followed | exception | error | |
| invalid NewsNow JSON response: {exc} | exception | error | |
| invalid RSS/Atom feed: {exc} | exception | warning | network, feed, xml, parsing, rss |
| unsupported feed format; expected RSS or Atom | exception | warning | feed, xml, parsing, configuration |
| invalid NewsNow response: expected object | exception | warning | feed, json, parsing, newsnow, api-contract |
| {task_name} ranking fetch timeout | exception | error | timeout, configuration, market-data, validation |
| {task_name} ranking fetch timeout after {timeout_value:g}s | exception | warning | timeout, network, market-data, concurrency, retry |
| {task_name} ranking fetch cooling down after previous timeou | exception | warning | timeout, circuit-breaker, retry, market-data, concurrency |
| {task_name} ranking fetch in-flight limit reached | exception | warning | concurrency, rate-limit, market-data, timeout |
validation_error unsupported market alert_type: {alert_type} | validation | error | validation, alerts, market-data, api-contract |
validation_error market target must be one of cn, hk, us, jp, kr: {region} | validation | error | validation, market-data, region, api-contract |
| invalid persisted market light snapshot for {normalized_regi | exception | error | validation, persistence, market-data, data-corruption, schema-migration |
validation_error unsupported portfolio alert_type: {alert_type} | validation | error | validation, alerts, portfolio, api-contract |
validation_error broker must be one of: {supported} | validation | error | |
validation_error name is required | validation | error | |
conflict Duplicate trade_uid for account_id={account_id}: {trade_uid} | http | error | |
portfolio_oversell Oversell detected for {symbol}{date_hint}: requested={round(requested_quantity, | validation | error | |
| Context file not found: {path} | validation | error | screening, context, file-not-found, paths |
| Candidate context file not found: {path} | validation | error | screening, candidate-context, file-not-found, pipeline |
| Unsupported candidate context file format: {path} | validation | error | screening, candidate-context, file-format, validation |
| Unsupported daily source: {source} | validation | error | screening, daily-data, data-source, validation, enum |