[fix] 修复聚合报告通知失败隔离 ( P5 ) - #1269
Conversation
🤖 自动审查报告
📁 修改的文件
🧠 AI 代码审查意见结论Ready to Merge 结构化审查结果
必改项(无)建议项
详细审查注释
本次 PR 的实现与描述高度一致,代码质量和测试覆盖都很好,文档也同步更新,满足所有审查标准。
|
已复核,这里的结构化检测应为误报。本 PR 没有修改模型名、provider、Base URL、LiteLLM 或 LLM 配置语义。 依据:
因此本 PR 不需要补充外部模型/API 官方兼容资料、旧配置迁移说明或额外回退路径;回滚方式仍为 revert 当前 PR。 |
|
已按最新 review 补充 PR 描述中的 补充内容包括:
结论:本 PR 未修改 LLM 配置校验、模型发现、运行时 provider 解析、provider fallback、配置保存/清理/迁移/回填逻辑;不需要补充外部模型/API 官方兼容资料或旧配置迁移路径。 |
ZhuLinsen
left a comment
There was a problem hiding this comment.
评审结论
- 必要性:通过,聚合报告通知失败隔离符合 AGENTS.md 中“单一通知渠道失败不应拖垮整个分析主流程”的稳定性护栏。
- 是否有对应 issue:有,Refs #1200。
- PR 类型:fix/test/docs,修复通知隔离行为,并补充后端、Web 测试与通知文档、CHANGELOG。
- description 完整性:完整,已覆盖背景、范围、验证命令与结果、兼容性风险、回滚方案;后续补充的 Diff-Level Compatibility Evidence 已说明结构化检测到的 LLM/provider/Base URL/运行时配置迁移风险为误报,并给出文件范围与新增/删除行过滤证据。
- 是否可直接合入:可,当前 CI 为 success,改动范围与描述一致,未发现阻断性正确性、兼容性或流程问题;
mergeable_state=blocked在本仓库分支保护规则下不单独构成不可合入理由。
🤖 此回复由 OpenReview Bot 自动生成,仅供参考。如有疑问请 @维护者。
PR Type
Background And Problem
Refs #1200
P0-P4 已合并后,P5 需要补齐通知失败隔离边界:聚合报告路径中,路由后的单一静态通知渠道如果抛异常,不应跳过后续渠道,也不应影响分析主流程。同时 Web 通知测试需要更明确展示 custom webhook 部分成功和 timeout/异常诊断。
Scope Of Change
src/core/pipeline.py:在聚合报告_send_notifications()路径内增加局部 safe-send helper,对现有静态通知渠道逐个隔离;邮件按 receiver group 单独隔离。src/services/system_config_service.py:仅调整 custom webhook 测试顶层 message,明确成功数 / 总数。tests/:补充渠道异常后续仍发送、全部静态渠道失败释放 noise、邮件分组隔离、custom webhook partial/all-failed、普通 sender timeout 分类与脱敏测试。apps/dsa-web/:只补NotificationTestPanel组件测试,不改生产 UI。docs/notifications.md与docs/CHANGELOG.md:同步 P5 行为说明和 changelog。Issue Link
Refs #1200
Verification Commands And Results
关键输出/结论:
python -m py_compile ...:通过。145 passed, 35 warnings, 43 subtests passed。npm run test -- NotificationTestPanel:3 passed。npm run lint:通过。npm run build:通过,仅有既有 chunk size warning。./scripts/ci_gate.sh:1881 passed, 2 deselected, 47 warnings, 166 subtests passed。git diff --check:通过。未运行
python main.py --check-notify:当前未注入真实临时通知配置;无配置环境下该命令可能返回配置诊断,不作为本 PR 阻断项。Compatibility And Risk
.env.example、config registry、workflow env 或 API Schema。src/services/system_config_service.py的生产改动仅限 custom webhook 通知测试顶层 message,新增成功数 / 总数展示;不触及 LLM 配置校验、模型发现或运行时 provider 解析。False仍按send_failed处理。Diff-Level Compatibility Evidence
结构化 review 检测到的 LLM/provider/Base URL/LiteLLM/运行时配置迁移风险是误报。实际 diff 级证据如下:
输出只包含本 PR 的通知、测试和文档文件:
src/services/system_config_service.py的生产 diff 只有 custom webhook 通知测试 message 聚合:针对新增/删除行做兼容风险关键词过滤:
该命令无输出,
rg返回 1 表示没有匹配到任何新增/删除行。由此确认本 PR 没有触及 LLM/provider/Base URL/LiteLLM、运行时模型选择、provider fallback、配置保存/清理/迁移/回填逻辑。Rollback Plan
Revert this PR 即可回到旧行为;无需额外回滚配置、环境变量或数据迁移。
EXTRACT_PROMPT Change (if applicable)
不适用。
Checklist
docs/CHANGELOG.md;README.md仅在首页级信息变化时更新,细节优先写入docs/*.md/ If user-visible changes are included, relevant docs anddocs/CHANGELOG.mdare updated;README.mdis updated only for homepage-level changes, with details kept indocs/*.md