diff --git a/docs/25-风控模块代码评审报告.md b/docs/25-风控模块代码评审报告.md index 3f2f358..591239f 100644 --- a/docs/25-风控模块代码评审报告.md +++ b/docs/25-风控模块代码评审报告.md @@ -99,8 +99,17 @@ agent_intent_config 中 agent_type='risk':0 条 真正的问题是两条: 1. 审计**不经基座统一链路**(只有走 `call_tool` 才有 `_tool_records` 与统一审计); -2. `ai_analysis` 是**读-改-写且无并发控制**(`dict(alert.ai_analysis or {})` → 赋值 → commit), - 并发请求会互相覆盖。 +2. ~~`ai_analysis` 是**读-改-写且无并发控制**,并发请求会互相覆盖。~~ + + **本条经复核为误报,已撤回(2026-09-11)。** 证据:`risk_analysis_service.py:121-125` + 的查询上**一直有** `.with_for_update()`,读-改-写(`:138-145`)整体在行锁内、到 `:156` + 才提交。实测并发发起三种分析(预警研判 / 回访话术 / 工单摘要,各自独立 session、 + 复用同一 session 会天然串行测不出竞争),落库的 `ai_analysis` **三个键全部保留**, + 未发生覆盖。 + + 初次报告把它写成缺陷,原因是我只读到 `:130-160` 这一段、**恰好漏看了锁所在的 + `:121-125`**,却把这一条标成了"✅ 已验证"。教训与前面 `_topic_of` 那几轮相同: + **标注"已验证"之前必须确认自己真的读到了关键那段代码**,否则标注本身就是误导。 ### 6. 时区口径不统一 🔁 ✅(最严重的业务缺陷)