fix: B9b 复审闭环——P2-1 SOP 交互重灌补 DROP jinrong_agent(reset.ps1 只重建 core+裸 CREATE TABLE 会 1050 中止); P2-2 补做 T-31 名下 P2-8 手工 SQL 对照收口(4 组合真库 SQL 推导与函数判定一致, 登记 SOP 核查单附行); P2-3 SOP 走查范围与 11/11 口径统一(A-6 归 M3/A-8 映射交代); P3: A-4/A-9 COUNT 当日窗+已处置单幂等用例+suitability/check 阻断响应补 G-08 两要素(advice/notice)+记忆文档数字同步; 留痕 scan_all 幂等读后写无锁取舍; 209 绿
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# 演示 SOP · 风控监测 Agent(B9b)
|
||||
|
||||
> 版本:v1.0 · 2026-09-07 · 配套 PRD v1.0 §8 验收表 + 开发计划 B9b 核查单
|
||||
> 版本:v1.1 · 2026-09-07 · 配套 PRD v1.0 §8 验收表 + 开发计划 B9b 核查单
|
||||
> 适用:演示机/本机(`app_env=development`,debug 鉴权头可用;生产部署禁用,见核查单⑤)
|
||||
> 首次走查记录:2026-09-07,A-1~A-5/A-7~A-9 + 核查单①~⑥ 全部通过(11/11 PASS)
|
||||
> 首次走查记录:2026-09-07,A-1~A-5/A-7/A-9(A-6 归 M3 对话线、A-8 由单测矩阵 + P2-8 手工 SQL 对照覆盖)+ 核查单①~⑥ 全部通过(11/11 PASS)
|
||||
|
||||
---
|
||||
|
||||
@@ -33,8 +33,11 @@ done
|
||||
python scripts/sync/sync_advisor_rel.py # 归属同步(28 行)
|
||||
```
|
||||
|
||||
**交互方式**:`.\scripts\core\reset.ps1`(PowerShell,交互输密码;`-SkipNeo4j` 可跳过 Neo4j 同步),
|
||||
再手动执行上表后 4 个 SQL(agent 库建表 ×2 / seed-aml-list / prepare_risk_demo)。
|
||||
**交互方式**:`.\scripts\core\reset.ps1`(PowerShell,交互输密码;`-SkipNeo4j` 可跳过 Neo4j 同步)。
|
||||
注意:reset.ps1 **只重建 jinrong_core**,且 agent 建表 SQL 是裸 `CREATE TABLE`——
|
||||
交互方式需先手动 `DROP DATABASE IF EXISTS jinrong_agent;` 再跑后 4 个 SQL,否则
|
||||
ERROR 1050(表已存在)中止且残留未清。脚本化方式已含双库 DROP,可照抄。
|
||||
(两种方式均不含 Neo4j 同步;风控演示不依赖 Neo4j,需要时手动跑 `scripts/sync/sync_neo4j.py`。)
|
||||
|
||||
**重灌完成标志**:`seed-aml-list.sql` 输出 8 条名单;`prepare_risk_demo.sql` 输出 7 行测评
|
||||
(6 行 90 天、CUST-1004 保持过期);`sync_advisor_rel` 输出 upserted 28 rows。
|
||||
@@ -70,16 +73,20 @@ Swagger 逐条执行;预期响应与库内核验点如下(`trade_id` 以实
|
||||
python scripts/demo/rebuild_alerts.py <trade_id> # 补偿重放:rebuilt → 再跑 skipped → 不存在 exit 1
|
||||
```
|
||||
|
||||
**A-8 映射交代**:`suitability_check` 单元级验收不在 Swagger 走查——由单测矩阵(25 组合 + 边界,
|
||||
`tests/test_suitability.py`)与真库手工 SQL 对照(P2-8 收口:4 组演示组合 SQL 推导与函数判定一致)覆盖。
|
||||
|
||||
## 5. 核查单(B6/B7/B8 挂账收口)
|
||||
|
||||
| # | 挂账来源 | 检查项 | 结论(2026-09-07 走查) |
|
||||
| --- | --- | --- | --- |
|
||||
| ① | B6 复审 P3-7 | 预警类 API(GET alerts / POST handle / POST aml/scan)响应体含固定 `disclaimer`「本预警由系统自动生成,最终判定需经风控专员人工审核。」 | ✅ 已实现并真服务验证 |
|
||||
| ② | B6 评审 P3-6 | aml/scan 幂等:同客户当日已有 aml 单(含交易触发/已处置)不重复出单,响应 `skipped_existing` 指向既有单 | ✅ 已实现并真服务验证 |
|
||||
| ③ | B6 复审遗漏⑤ | 真服务手测(区别于 TestClient 等价验证):uvicorn 真库走查 A-1~A-9 全量 | ✅ 本 SOP §4 即该手测 |
|
||||
| ③ | B6 复审遗漏⑤ | 真服务手测(区别于 TestClient 等价验证):uvicorn 真库走查 A-1~A-5/A-7/A-9(A-6 归 M3、A-8 见 §4 映射交代) | ✅ 本 SOP §4 即该手测 |
|
||||
| ④ | B6 复审观察③ | analyst 角色台账 fail-closed:`GET /api/risk/alerts` → 403(risk:alert:read 权限扩展待 Wave 3 分析 Agent 时定矩阵) | ✅ 403 保持 |
|
||||
| ⑤ | B7 复审 P3-3 | 生产/演示机误配检查:本机 `.env` `APP_ENV=development`(演示机允许 debug 头);`app_env != development` 时启动期拒绝 debug 依赖(单测覆盖),部署非 dev 机时必须核对 | ✅ 本机=development 已确认 |
|
||||
| ⑥ | B8 复审 P2-1 | 集成测试对演示库当日状态的隐式耦合 → 已加前置断言(A-1/A-3/A-4 清洁检查 fail+提示、A-5 按 trade_id 定位),代码随 B9b 落地 | ✅ 已落地;交叉数据在场时 pytest 显式 fail 提示重灌 |
|
||||
| ⑥ | B8 复审 P2-1 | 集成测试对演示库当日状态的隐式耦合 → 已加前置断言(A-1/A-3/A-4 清洁检查 fail+提示、A-5 按 trade_id 定位、A-4/A-9 COUNT 断言加当日窗),代码随 B9b 落地 | ✅ 已落地;交叉数据在场时 pytest 显式 fail 提示重灌 |
|
||||
| 附 | 阶段 A 评审 P2-8(T-31 名下) | `suitability_check` 真库手工 SQL 对照:4 组演示组合(SUIT-001 首因 / 70 岁封顶 / 等级匹配 / SUIT-008 过期)SQL 推导与函数判定逐项一致 | ✅ 2026-09-07 收口 |
|
||||
|
||||
## 6. 走查后状态与注意事项
|
||||
|
||||
|
||||
Reference in New Issue
Block a user