docs: C4~C6 收尾—挂账 #1~#9 逐项核对结论 + risk-m4 tag 落账同步

This commit is contained in:
2026-09-07 20:07:47 +08:00
parent 323d98bdc2
commit 1d00e53c8e
2 changed files with 23 additions and 8 deletions
+18 -3
View File
@@ -14,12 +14,27 @@
- [ ] **【阶段一收尾】AL-10 PRD v1.2 修订**(SUIT-001~008 编号体系退役登记,用户拍板②授权)
- [ ] **【阶段一收尾】AL-11 `01-客户.docx` 11~16 条读取登记**(用户拍板⑤:用工具读 docx)
- [x] **【阶段二】C4~C6 追加需求编码**(实现方案已定稿)—— **全部完成(C4 RISK-006 `fe4801b` / C5 RISK-007 `90d0660` / C6 RISK-008 `66ec7eb`,全量 pytest 482 passed 0 failed);收尾=演示 SOP 补代理人扮演步骤 + 02-redis-keys.md 增补 + tag `risk-m4`(见下条)**
- [ ] **【阶段二前置】**`python -m pytest` 全量(系统 Python 3.13.14)确认基线绿
- [ ] **【阶段二】C5 前置联动**(挂账 #6):seed STAFF-31001/31002 + AGENT_ACCESS_MATRIX 增补 risk_manager + chat.py 显式 deny(对话线维持仅 risk_officer)+ risk.py 台账 manager 只读分支 + JWT 手册 §5.3
- [x] **【阶段二前置】**`python -m pytest` 全量(系统 Python 3.13.14)确认基线绿 —— **482 passed 0 failed ✓(2026-09-07)**
- [x] **【阶段二】C5 前置联动**(挂账 #6):seed STAFF-31001/31002 + AGENT_ACCESS_MATRIX 增补 risk_manager + chat.py 显式 deny(对话线维持仅 risk_officer)+ risk.py 台账 manager 只读分支 + JWT 手册 §5.3 —— **完成(随 C5 落地,见挂账 #6 核对)**
- [x] **【阶段二】C4 RISK-006 集中度**(FR-8):rules(rule_concentration + RuleHit.alert_subtype)+ core_ro.concentration_profile + engine 接入 + alert_service(锚点排除 agent_behavior 单【评审 P0-1】+ subtype 合并 + alert_type 重算)+ customer_context 扩展 + settings 11 项配置;验收 A-10 —— **完成(commit `fe4801b`)**
- [x] **【阶段二】C5 RISK-007 时效升级**(FR-9):escalation_service + scripts/cron/escalation_scan.py + query_overdue_alerts Tool + conftest 回拨 fixture;验收 A-11 —— **完成(commit `90d0660`)**
- [x] **【阶段二】C6 RISK-008 代理人行为链**(FR-10):trade_gateway actor_id 透传(前置)+ agent_behavior_service + scripts/cron/agent_behavior_scan.py + query_agent_behavior Tool;验收 A-12 —— **完成(commit `66ec7eb`)**
- [ ] **【阶段二收尾】**演示 SOP 补代理人扮演步骤 + 02-redis-keys.md 增补 + 挂账 #1~#9 核对;tag 名待拍板(risk-m3 已被 C0~C3 占用,建议 `risk-m4`)
- [x] **【阶段二收尾】**演示 SOP 补代理人扮演步骤(A-12)+ 02-redis-keys.md 增补(C6 联动)+ 挂账 #1~#9 逐项核对 + 打 `risk-m4` tag —— **全部完成(2026-09-07,`risk-m4` 指向 `323d98b`,仅本地未 push)**
**挂账 #1~#9 核对结论(基于 C4~C6 三提交 `fe4801b`/`90d0660`/`66ec7eb` + 文档 `323d98b` 实查):**
| 挂账 | 内容 | 现状 | 判定 |
|---|---|---|---|
| #1 | 持仓汇总 | 收口进 `core_ro.concentration_profile`(持仓画像非流水),C4 `rule_concentration` 直接消费 | ✓ 已收口 |
| #2 | 定时任务内嵌 lifespan | `app/main.py` lifespan 无 cron 调用;`scripts/cron/escalation_scan.py` + `agent_behavior_scan.py` 仍独立 | ✓ 未触碰 |
| #3 | agent_profile_l3 建表 | 终态 entities 无 `agent_profile_l3`(仅有 `customer_profile_l3`,非同一表) | ✓ 未建 |
| #4 | escalated 状态改表 | 升级标记走 `payload.escalation_level/escalated_at`,无 status 列变更、无 ALTER | ✓ 未改表 |
| #5 | alert_type ENUM 扩展 | `alert_type` 仍为 `VARCHAR`,靠 `payload.alert_subtype` 承载子类型 | ✓ 未扩 ENUM |
| #6 | risk_manager 联动 | 随 C5 前置落地:seed STAFF-31001/31002 + AGENT_ACCESS_MATRIX 放行只读 + handle/aml/scan 端点保持 risk_officer only(manager 触碰即 403) | ✓ 已收口(零处置权) |
| #7 | customer_query 事件类型补建 | C6 复用既有 `trade_request`/`authz forbidden` 事件,无新建 `customer_query` 事件类型/枚举 | ✓ 未建 |
| #8 | core_trade actor 字段 | 终态 `core_trade` ORM 无 `actor` 列;actor 透传仅落在 `audit_log`/`agent_*`(`trade_gateway.actor_id` 写入审计,非 core_trade) | ✓ 未加列 |
| #9 | payload JSON 检索性能 | `risk_repository` 仅改 `append/merge/find` 逻辑,无新增索引/查询计划优化 | ✓ 未动 |
**红线复核**:C4~C6 无 DDL/迁移脚本(`scripts/core/02-seed-base.sql` 仅补 seed 行,非改表);审计仅 INSERT;升级标记仅 cron 可写;manager 无处置权;四 Agent 不互调 LLM。挂账清单无一项退化为本期误做。
- [ ] 前端 React 多 Agent 入口(HashRouter,`web/` init)
- [x] **【阶段一】对齐 main 基准 AL-01~AL-08 —— 完成(2026-09-07,逐项独立 commit `bb244f4`~`b5fd52e`)**:AL-01 Core 表结构+矩阵表(core_suitability_rule 25 行 + is_hnw + 风评七新列 expires_at/investor_category + 33 客户/14 产品种子,保留 STAFF-90001)· AL-02 risk_suitability_log 重建 21 列(match_result 五值/mismatch_type 七值/block_response_code 八值/check_source 四值/rule_refs JSON + 6 索引;tests/_ddl.py 同步)· AL-03 core_ro 融合(check_suitability C×R 数据驱动 + list_products_for_customer + list_holdings 合并 + list_trades;CURDATE() 改 Python 端 `_is_expired`/`_as_date` sqlite 兼容;保留我方骨架与风控扩展)· AL-04 model/suitability 引入(build_suitability_log_row + compute_rule_refs 公共函数防漂移)· AL-05 suitability 服务换核(SUIT-001~008 判定内核 → check_suitability;判定链 not_found→FM-03 过期→JR-AST-PRO 豁免→JR-AST-012 矩阵 forbidden→披露→FM-01 网点确认;SuitabilityResult 扩新字段+兼容层;settings.risk_assessment_valid_days 退役改 expires_at;insert_suitability_log 21 列;check_source r02_trade/manual + actor_id 透传;NotFoundError 改结构化)· AL-06 chat_tools.suitability_check 返回体新枚举 + tool_service 文案重写(check_source='r02_chat')· AL-07 test_suitability 按 main 契约重写(七判定路径正反例 + compute_rule_refs 四类组合 + 21 列落库端到端 + MySQL 方言冒烟)· AL-08 演示 SQL expires_at 口径改写(测评 90 天前/剩余 275 天,CUST-1004 保持过期)+ SOP 同步 + 网关阻断响应补全契约 + 双库重灌。**验证:406 passed 0 failed 0 skipped(sqlite + 真 MySQL 集成);uvicorn 冒烟三端点通过;真库 risk_suitability_log 按 21 列 DDL 重建(旧表 RENAME 备份 bak_20260907 零数据丢失)**