feat: B9a 演示/运维脚本——subscribe_alerts(risk:pub:alert 订阅演示/连接自检/--duration) + rebuild_alerts(按 trade_id 幂等重放: find_alerts_by_trade payload LIKE 查已入单防重复出单与重复 append, 含 aml/已处置单) + core_ro.get_trade_by_id 只读扩展 + test_demo_scripts 5 例, 201 绿; 真库手工验证(出单→幂等 skip→missing exit1; 订阅端到端 trace 贯通)后现场清理; docs 同步(TODO/MEMORY/FLOW/开发计划)

This commit is contained in:
2026-09-07 00:43:25 +08:00
parent be44d569a4
commit fdf487dc32
9 changed files with 375 additions and 11 deletions
+6 -5
View File
@@ -9,7 +9,7 @@
**项目是什么:** 金融四 Agent(客户财富 / 代理人 / 数据分析 / 风控)共用数据层与合规底座;**不**互调 LLM,跨 Agent 走 L1/L2/L3 画像与预警表。
**当前进度:** 需求与表设计已定 · **风控模块已落地 B1~B8**(规则/预警聚合/L3/AML/引擎/交易网关/鉴权+4 API/适当性校验/main 集成+挂账①~⑦/**B8 conftest+集成测试**,B7/B8 均经独立 AI 评审闭环,**196 测试绿**)· 剩 **B9a 脚本 → B9b 演示走查** · **JWT(T-01) / 审计中间件(T-02) / LangGraph 对话线(T-07) 未做**(chat/knowledge/admin 仍空壳)。**开发在分支 `feature/risk`(未合入 main)。**
**当前进度:** 需求与表设计已定 · **风控模块已落地 B1~B8+B9a**(规则/预警聚合/L3/AML/引擎/交易网关/鉴权+4 API/适当性校验/main 集成+挂账①~⑦/B8 conftest+集成测试/**B9a 订阅+重放补偿脚本**,B7/B8 均经独立 AI 评审闭环,**201 测试绿**)· 剩 **B9b 演示走查** · **JWT(T-01) / 审计中间件(T-02) / LangGraph 对话线(T-07) 未做**(chat/knowledge/admin 仍空壳)。**开发在分支 `feature/risk`(未合入 main)。**
**仓库地图:**
@@ -26,7 +26,7 @@
| `app/utils/` | **基本就绪** | trace / desensitize / db(引擎工厂)/ response(统一错误体)/ exceptions(含 ApiError)已实现;logger 占位 |
| `app/config/settings.py` | **已实现** | 双库 `jinrong_agent` + `jinrong_core` + risk_* 阈值 |
| `scripts/core/*.sql` + `reset.ps1` | **已实现** | Core 模拟库 DDL + 种子 |
| `scripts/agent/` `scripts/demo/` | **已实现** | AML 名单种子 + 风控演示数据 |
| `scripts/agent/` `scripts/demo/` | **已实现** | AML 名单种子 + 风控演示数据 + subscribe_alerts/rebuild_alerts(B9a 订阅与幂等重放补偿) |
| `scripts/sync/*.py` | **已实现** | 归属同步 + Neo4j 全图 |
| `tests/` | **已实现** | 16 个测试文件 196 用例(sqlite 隔离;DDL 单一事实源 `_ddl.py`;`test_integration_risk.py` 走真 MySQL + TRD-TEST- 前缀隔离) |
| `docs/需求拆解/` | 已定 | 场景 P0、矩阵、合规原文 |
@@ -51,7 +51,7 @@
> **本机(2026-09-06)①~⑤已执行、`.env` 已配置,勿重做**;本机状态与已知坑(mysql.exe 路径 / reset.ps1 交互式 -p)见 `FLOW.md` §0 尾注。
**下一步开发(见 TODO):** 风控 B9a 演示/运维脚本(subscribe_alerts.py / rebuild_alerts.py)→ B9b 演示走查(含 B6/B7 挂账核查单);随后 Wave 0 T-01 JWT / T-02 审计中间件 / T-06 / T-07 LangGraph。
**下一步开发(见 TODO):** 风控 B9b 演示走查(reset → demo SQL → Swagger 过 A-1~A-5/A-7~A-9 + B6/B7/B8 挂账核查单①~⑥);随后 Wave 0 T-01 JWT / T-02 审计中间件 / T-06 / T-07 LangGraph。
**禁止(改代码前必记):** Core 正式 C1~C5 不可被画像覆盖 · 审计表只 INSERT · 代理人草稿不外发 · 仅 R-02 可阻断交易 · 四 Agent 不互调 LLM。
@@ -124,7 +124,8 @@ Core 模拟:scripts/core/reset.ps1 · 文档 docs/项目框架设计/Core模
种子:scripts/agent/seed-aml-list.sql(AML 名单)· scripts/demo/prepare_risk_demo.sql(reset 后重跑)
依赖:requirements.txt(LangGraph + langchain-core/openai + FastAPI + SQLAlchemy)
启动:uvicorn app.main:app --reload → GET /health
测试:python -m pytest(196 用例;集成测试需本机演示数据,未灌库时自动 skip)
测试:python -m pytest(201 用例;集成测试需本机演示数据,未灌库时自动 skip)
运维/演示脚本:scripts/demo/subscribe_alerts.py(订阅推送演示)· rebuild_alerts.py TRD-xxx(引擎异常补偿重放)
配置:.env(见 .env.example)
RBAC 联调账号:scripts/dev/rbac-seed-reference.md
```
@@ -165,6 +166,6 @@ RBAC 联调账号:scripts/dev/rbac-seed-reference.md
2. 改动属于 api / service / tool / repository 哪一层?
3. 是否需 customer_id 归属与 JWT RBAC?
4. Core 是模拟库只读还是 agent 库读写?
5. 如何验证?(`python -m pytest` 全量(当前 196 绿)· uvicorn 启动 + /health · SQL / sync 脚本 · 对照 REQUIREMENTS 验收列)
5. 如何验证?(`python -m pytest` 全量(当前 201 绿)· uvicorn 启动 + /health · SQL / sync 脚本 · 对照 REQUIREMENTS 验收列)
大任务:FRAMEWORK/FLOW 与实现状态不符时先更新 memory 再编码(用户确认跳过除外)。