docs/run-diagnostics-p3.md
本文档记录 #1391 Phase 3 的交付范围:在不新增配置的前提下,补齐运行诊断可见性并将历史排障信息回填到后端上下文快照,便于自部署环境快速定位异常。
GET /api/v1/history/{record_id}/diagnostics
diagnostic_summary,前端可直接展示,不额外请求历史接口。copy_text,用于 issue 或部署排障。context_snapshot.diagnostics,历史诊断接口统一聚合为用户可读摘要。总体状态:
normal:正常degraded:部分降级failed:失败unknown:未知组件状态:
ok:正常degraded:最近失败后已降级failed:失败unknown:未知not_configured:未配置skipped:已跳过unknown,不影响报告阅读。.env 配置项,不修改数据库结构,不引入数据迁移。src/core/pipeline.py、src/services/run_diagnostics.py、src/storage.py 与 src/services/history_service.py 的诊断持久化与刷新逻辑,并通过 api/v1/endpoints/history.py 提供可读端点。context_snapshot.diagnostics 诊断快照和摘要,不改变分析主流程、通知发送成败语义或历史报告主体字段。本轮 review 的结构化检测命中了外部模型/API 兼容和运行时配置迁移风险;复核后结论如下:
LITELLM_MODEL、AGENT_LITELLM_MODEL、VISION_MODEL、LITELLM_FALLBACK_MODELS、OPENAI_*、GEMINI_*、ANTHROPIC_*、DEEPSEEK_* 的解析优先级。requirements.txt、package.json 依赖约束或 LiteLLM/OpenAI-compatible 调用默认参数;外部来源仍以 docs/llm-providers.md 和 docs/LLM_CONFIG_GUIDE*.md 中已记录的官方文档与当前锁定依赖说明为准。.env、Web 设置页 channel、桌面端用户数据目录、Docker 运行时配置文件或历史旧配置的迁移、清理、删除、回写策略变更。context_snapshot.diagnostics,并通过历史只读接口和 Web 默认折叠面板展示;诊断记录失败按 fail-open 处理,不改变分析或通知的成功/失败判定。tests/test_pipeline_market_phase_context.pytests/test_realtime_types.pytests/test_scheduler_background.pytests/test_analysis_api_contract.py(子集:诊断上下文入出参/状态查询契约)tests/test_analysis_history.py(子集:历史 API 与持久化链路)tests/test_analysis_api_contract.py 与 tests/test_analysis_history.py 覆盖;任务编排、历史保存和 context_snapshot.diagnostics 由 tests/test_pipeline_market_phase_context.py 覆盖;通知路径通过 ./scripts/ci_gate.sh 中的既有通知回归与导入检查兜底。./scripts/ci_gate.sh
python -m pytest tests/test_realtime_types.py tests/test_scheduler_background.py tests/test_pipeline_market_phase_context.py tests/test_analysis_api_contract.py tests/test_analysis_history.py
cd apps/dsa-web && npm run lint && npm run build
cd apps/dsa-web
npm run lint
npm run build
可补充执行(非阻断):
cd apps/dsa-web
npm test -- --run src/components/report/__tests__/ReportDiagnostics.test.tsx src/components/tasks/__tests__/TaskPanel.test.tsx src/hooks/__tests__/useTaskStream.test.tsx
可补充确定性脚本校验:
python -m py_compile api/v1/endpoints/analysis.py api/v1/endpoints/history.py api/v1/schemas/analysis.py api/v1/schemas/history.py src/core/pipeline.py src/services/run_diagnostics.py src/storage.py
最小回滚方式:revert Phase 3 PR。由于本轮为可选字段与可读接口增强,回滚后后端历史快照与已落库数据保留,Web 不再展示诊断面板与 trace 诊断入口。