docs: 阶段一 AL-01~08 完成落账 + 文档同步——六件套反映换核完成(406 绿基线 425→406/SUIT-001~008 退役改 core_ro.check_suitability C×R 矩阵+JR-AST/FM 契约/risk_suitability_log 21 列/种子 33 客户 14 产品/risk-m1 已补打指向 3c07de6);TODO 进行中改阶段一验收门(唯一卡点=用户目视确认)+AL-09/10/11 待办;ITERATION 追加阶段一完成行;REQUIREMENTS R-02 换核标注;开发计划 M1 改已补打;入库存档《修改报告-对齐main基准.md》(阶段一执行依据)与《实现方案-风控追加需求v1.1-C4C6.md》(阶段二编码依据);吸收上会话遗留同步(分支口径 risk-control-agent/PRD v1.1 冻结标注/T-21 评审闭环/T-03/C1~C3 落账/交接文档指引)
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
- **内部分析**:SQL 或 IT 导表。
|
||||
- **风控**:事后/T+1 发现异常;适当性靠交易前规则;AML 批处理或人工。
|
||||
|
||||
Agent **尚未上线**;后端风控事件线已实现(`feature/risk` 分支,B1~B7),其余 Agent 仍为脚手架;无生产接入。
|
||||
Agent **尚未上线**;后端风控事件线 + 对话线 + 知识库已实现(`risk-control-agent` 分支,B1~B9b + 阶段 C + T-03/T-21 + **阶段一对齐 main 基准 AL-01~08**,406 测试绿),其余 Agent 仍为脚手架;无生产接入。
|
||||
|
||||
------
|
||||
|
||||
|
||||
+7
-5
@@ -38,7 +38,7 @@
|
||||
RBAC 联调账号:scripts/dev/rbac-seed-reference.md
|
||||
```
|
||||
|
||||
**尚未自动化:** Milvus 建 Collection(T-21);agent 专用表已有 `02-mysql-agent专用.sql`(手工执行,含 risk_aml_list)。JWT 中间件已完成(T-01:`app/service/auth_service.py` + `deps.py` 工厂;dev 联调签发 `scripts/dev/issue_dev_token.py`,debug 头兜底仅限 development 且未配 RS256 公钥)。
|
||||
**尚未自动化:** agent 专用表已有 `02-mysql-agent专用.sql`(手工执行,含 risk_aml_list);Milvus 建 Collection 已随 T-21 自动化(`scripts/kb/build_kb.py` 可重灌)。JWT 中间件已完成(T-01:`app/service/auth_service.py` + `deps.py` 工厂;dev 联调签发 `scripts/dev/issue_dev_token.py`,debug 头兜底仅限 development 且未配 RS256 公钥)。
|
||||
|
||||
------
|
||||
|
||||
@@ -48,9 +48,9 @@ RBAC 联调账号:scripts/dev/rbac-seed-reference.md
|
||||
Client → Gateway(JWT/RBAC) → api/chat → agent_service(LangGraph) → Tools → 存储 → 响应 + audit_log
|
||||
```
|
||||
|
||||
当前:**风控事件线 + Wave 0 共用底座 + T-04 Tool 节点完成**(交易网关 → 规则引擎 → 预警/AML/L3 → 4 API,`main.py` 路由挂载 + trace 中间件(X-Trace-Id/X-Request-Id + 500 兜底)+ audit 中间件(http_access)+ lifespan 完成,B1~B8;T-01 JWT 鉴权(Bearer 全环境 + dev debug 头兜底 + X-Agent-Type 准入矩阵)/ T-02 审计与 input_guard_log 双写 / T-06 chat 最小闭环(`POST /api/chat` 会话+窗口+落盘)/ T-07 LangGraph 骨架+DeepSeek(无 key 降级)均于 2026-09-07 完成并经独立 AI 评审闭环;M2 tag risk-m2 + M4 复核闭环;T-04 Core RO Tool 节点(customer/advisor 意图触发 + 归属校验 + agent_tool_call 落库 + 公共鉴权双写 `utils/authz.py` + 入参白名单,2026-09-07,两轮评审闭环);321 测试绿);阶段 B 完结;**对话链路已含只读查数**(chat → LangGraph(tool→llm→guard) → 免责声明 → 落库),风控四 Tool 与 RAG 待 C1/T-21、输入防护待 T-03。
|
||||
当前:**风控事件线(B1~B9b)+ Wave 0 共用底座 + 风控阶段 C(C1~C3 对话线,tag risk-m2/risk-m3)+ T-04 Tool 节点 + T-03 输入防护 + T-21 知识库全部完成**(交易网关 → 规则引擎 → 预警/AML/L3 → 4 API,`main.py` 路由挂载 + trace 中间件 + audit 中间件 + lifespan;T-01/T-02/T-06/T-07/T-04/T-03/T-21 均经独立 AI 评审闭环)。**阶段一「对齐 main 基准」AL-01~AL-08 已完成(2026-09-07,406 测试绿;适当性判定换核 core_ro.check_suitability,risk_suitability_log 21 列,Core 表 is_hnw/风评 expires_at 新列,种子 33 客户/14 产品)**。**下一步:阶段一验收门(用户目视确认)→ AL-09 合并 main → 阶段二 C4~C6 编码**(FR-8 集中度/FR-9 时效升级/FR-10 代理人行为链,实现方案《docs/项目框架设计/实现方案-风控追加需求v1.1-C4C6.md》已定稿并经独立 AI 评审修订闭环,含定时任务 scripts/cron/* 与新增对话 Tool;编码未开始)。
|
||||
|
||||
**本机已就位状态(2026-09-07 更新 · 已完成上述 ①~⑤,无需重做):** `.env` 已配置(学习项目,`MYSQL_PASSWORD=123456`;NEO4J/DEEPSEEK 留空——DEEPSEEK_API_KEY 空时 chat 走降级回复,不阻塞演示;`.env` 无 JWT 项,签发走默认 `JWT_DEV_SECRET`,**启动时出现默认密钥 warning 属预期**,生产形态须配 `JWT_PUBLIC_KEY_PATH`);`jinrong_core` + `jinrong_agent` 已灌库(28 客户 / AML 名单 8 条 / 演示测评已刷新 / 归属同步 28 行);`python -m pytest` 321 用例全绿(集成测试真连本机 MySQL,未灌库的机器自动 skip 集成模块);**演示库已重灌并清理冒烟数据(2026-09-07),全量测试可直接跑,下次演示/走查后再按 SOP §2 重灌**;本机 Redis 服务在跑(`redis://127.0.0.1:6379/0`,B9a 订阅脚本已验证)。
|
||||
**本机已就位状态(2026-09-07 更新 · 已完成上述 ①~⑤,无需重做):** `.env` 已配置(学习项目,`MYSQL_PASSWORD=123456`;NEO4J/DEEPSEEK 留空——DEEPSEEK_API_KEY 空时 chat 走降级回复,不阻塞演示;`.env` 无 JWT 项,签发走默认 `JWT_DEV_SECRET`,**启动时出现默认密钥 warning 属预期**,生产形态须配 `JWT_PUBLIC_KEY_PATH`);`jinrong_core` + `jinrong_agent` 已灌库(**阶段一 AL-01/AL-08 后为 33 客户/14 产品/矩阵 25 行/风评 33** / AML 名单 8 条 / 演示测评 expires_at 新口径已刷新 / 归属同步 33 行);`python -m pytest` **406** 用例全绿(集成测试真连本机 MySQL,未灌库的机器自动 skip 集成模块;pytest 依赖装在系统 Python 3.13.14);**演示库已按阶段一新口径重灌并清理冒烟数据(2026-09-07),全量测试可直接跑,下次演示/走查后再按 SOP §2 重灌**;本机 Redis 服务在跑(`redis://127.0.0.1:6379/0`,B9a 订阅脚本已验证)。
|
||||
|
||||
**本机已知坑:** `mysql.exe` 不在 PATH(位于 `C:\Program Files\MySQL\MySQL Server 8.0\bin`);`reset.ps1` 的交互式 `-p` 在自动化执行时会卡死——脚本化重灌用 `MYSQL_PWD` 环境变量传密码(交互执行不受影响,不把密码写进仓库脚本);**`redis` 与 `python-jose[cryptography]` 包均出现过 requirements 有而环境漏装(B9a 补装 redis、Wave 0 补装 jose,2026-09-07),重装环境后先 `python -c "import jose, redis"` 自检**。
|
||||
|
||||
@@ -63,15 +63,17 @@ Client → Gateway(JWT/RBAC) → api/chat → agent_service(LangGraph) → Tools
|
||||
↓
|
||||
Gateway:验签、角色准入、注入 AuthContext 【T-01 已做】(JWT 验签/吊销 + AGENT_ACCESS_MATRIX)
|
||||
↓
|
||||
输入防护:限流(429)→ 注入/超长(400) 【T-03 已做】(Redis 固定窗口 30 次/分 fail-open;被拒 fail-fast 不建会话,blocked 落 input_guard_log)
|
||||
↓
|
||||
api/chat:SessionGuard;创建/续 agent_session 【T-06 已做】(actor/agent_type 一致校验)
|
||||
↓
|
||||
memory_service:Redis 读最近 N 轮;MySQL 落盘 agent_message 【T-06 已做】(窗口 TTL2h N≤20,miss 回源;同步落盘)
|
||||
↓
|
||||
agent_service:LangGraph StateGraph + DeepSeek;tool(意图→Tool) → llm → guard 【T-04 已做(tool 节点:关键词意图仅 customer/advisor;risk/analyst 空转);LLM intent 归 C2】
|
||||
agent_service:LangGraph StateGraph + DeepSeek;tool(意图→Tool) → llm → guard 【T-04 + C2 已做(分组关键词意图 customer/advisor/risk;risk 分支接 C1 四 Tool)】
|
||||
↓
|
||||
Tool(tool_service.run_tool:白名单 → 归属校验 → 执行 → agent_tool_call 落库):
|
||||
- CoreReadOnlyRepository:持仓/流水/L0(customer_id 由会话注入,不来自 LLM) 【T-04 已做 app/tool/core_tools.py 三 Tool】
|
||||
- 风控四 Tool:alert_query/customer_context/suitability_check/aml_lookup 【待做 C1 chat_tools,复用 run_tool】
|
||||
- 风控四 Tool:alert_query/customer_context/suitability_check/aml_lookup 【C1 已做 chat_tools(RISK_TOOL_REGISTRY)】
|
||||
- milvus_tool:产品规则 RAG + source_refs 【已做 T-21(app/tool/kb_tools.py + rag_service/milvus_service;仅 customer/advisor 意图开放)】
|
||||
- memory_service:读/写 L1/L2/L3(ProfileGuard) 【窗口读写已做;画像读写待做】
|
||||
↓
|
||||
|
||||
+13
-10
@@ -38,10 +38,10 @@
|
||||
| 客户财富 Agent | L1 画像、事实查询、阈值提醒 | Core RO、Milvus 产品库 | 空壳 service(chat 骨架已通) |
|
||||
| 代理人助手 Agent | L2 画像、RAG、草稿 | L1 只读、Milvus | 空壳 service(chat 骨架已通) |
|
||||
| 数据分析 Agent | NL→SQL→解读 | Core RO、画像只读 | 空壳 service(chat 骨架已通) |
|
||||
| 风控监测 Agent | 预警、L3、R-02 适当性 | 交易事件、AML 名单 | **已实现**(B1~B7:rules/alert_service/profile_l3/aml_service/engine/scoring 占位 + 4 API + suitability + main 集成与挂账①~⑦) |
|
||||
| 风控监测 Agent | 预警、L3、R-02 适当性 | 交易事件、AML 名单 | **已实现 B1~B7 + C1~C3(对话线四 Tool + risk 分支 StateGraph,A-6 验收)**;追加 FR-8/9/10(C4~C6:集中度/时效升级/行为链)方案已定稿待编码 |
|
||||
| Core 只读层 | L0 事实查询 | `jinrong_core` | **已实现 + 已接对话 Tool(T-04)**:core_ro 经 app/tool/core_tools.py 三只读 Tool(L0/持仓/流水)进 chat;风控扩展查询照旧 |
|
||||
| 共用底座 | 会话、审计、输入防护 | MySQL 11 表 + Redis | **已接入(2026-09-07)**:会话(T-06 session_repository + memory_service 窗口)、审计中间件(T-02 http_access + input_guard_log 双写)、agent_tool_call Tool 留痕(T-04)、输入防护(T-03 input_guard:注入词表纯函数检测 + oversize + Redis 固定窗口限流,chat 链路 限流→注入/超长→归属) |
|
||||
| 对话编排 | LangGraph StateGraph + DeepSeek | langgraph/langchain-openai | **已实现(T-07 骨架 + T-04 Tool 节点,2026-09-07)**:tool(关键词意图→Tool)→llm→guard(免责声明);LLM intent 与风控四 Tool 归 C1/C2 |
|
||||
| 对话编排 | LangGraph StateGraph + DeepSeek | langgraph/langchain-openai | **已实现(T-07 骨架 + T-04 Tool 节点 + C1 风控四 Tool + C2 risk 分支,2026-09-07)**:tool(分组关键词意图→Tool,customer/advisor/risk)→llm→guard(免责声明);analyst 分支与 LLM intent 待后续 |
|
||||
| 同步脚本 | 归属、Neo4j | Core → agent / 图库 | **sync_*.py 已实现** |
|
||||
|
||||
------
|
||||
@@ -50,12 +50,13 @@
|
||||
|
||||
```text
|
||||
api/ → risk / simulate / chat / deps / audit_middleware 已实现;knowledge、admin 空壳 【大部分】
|
||||
service/ → risk/*(rules/alert/aml/engine/l3/scoring/locks/redis_gateway)+ suitability +
|
||||
auth_service(T-01 JWT)+ agent_service(T-07 图 + T-04 tool 节点)+ memory_service(T-06)+
|
||||
tool_service(T-04 对话 Tool 编排:意图/归属校验/run_tool 落库)已实现;
|
||||
rag_service 空壳 【大部分】
|
||||
tool/ → core_tools(T-04:L0/持仓/流水只读 Tool + TOOL_REGISTRY 白名单)已实现;
|
||||
document_parser、embedding_tool、milvus_tool 【部分;RAG 三件空壳】
|
||||
service/ → risk/*(rules/alert/aml/engine/l3/scoring/locks/redis_gateway/chat_tools)+ suitability +
|
||||
auth_service(T-01 JWT)+ agent_service(T-07 图 + T-04 tool 节点 + C2 risk 分支)+ memory_service(T-06)+
|
||||
tool_service(T-04 对话 Tool 编排:意图/归属校验/run_tool 落库)+ input_guard(T-03)+
|
||||
embedding/milvus_service/rag_service(T-21,已实现) 【大部分】
|
||||
tool/ → core_tools(T-04:L0/持仓/流水只读 Tool + TOOL_REGISTRY 白名单)+
|
||||
kb_tools(T21-5:search_knowledge,RISK/KB 注册表第三层)已实现;
|
||||
document_parser、embedding_tool、milvus_tool(早期占位壳,T-21 实现在 service 层) 【部分】
|
||||
repository/ → core_ro(Core 只读)+ risk_repository(风控四表+审计双写)+
|
||||
session_repository(agent_session/agent_message/agent_tool_call,T-06/T-04) 【已实现】
|
||||
gateway/ → 模拟交易网关(trade_gateway + gateway_repository 仅 INSERT core_trade) 【已实现 B5】
|
||||
@@ -75,9 +76,11 @@ main.py → 路由挂载 + trace 中间件(双 ID 贯通 + 500 兜底)
|
||||
```text
|
||||
scripts/core/ → jinrong_core DDL + 种子 + reset.ps1
|
||||
scripts/agent/ → jinrong_agent 种子(risk_aml_list AML 名单等)
|
||||
scripts/demo/ → 演示数据准备(prepare_risk_demo.sql,reset 后重跑)
|
||||
scripts/demo/ → 演示数据准备(prepare_risk_demo.sql,reset 后重跑)+ subscribe/rebuild_alerts
|
||||
scripts/sync/ → sync_advisor_rel.py、sync_neo4j.py
|
||||
scripts/dev/ → rbac-seed-reference.md(联调账号)
|
||||
scripts/dev/ → issue_dev_token.py(JWT 签发)+ rbac-seed-reference.md(联调账号)
|
||||
scripts/kb/ → build_kb.py(知识库入库,T-21)
|
||||
scripts/cron/ → (C5/C6 规划)escalation_scan.py / agent_behavior_scan.py 定时任务
|
||||
```
|
||||
|
||||
------
|
||||
|
||||
@@ -8,3 +8,7 @@
|
||||
| 2026-09-05 | Core 模拟库 jinrong_core + 扩大种子 + Neo4j 同步 | 无真实 Core | FRAMEWORK / FLOW / ENVIRONMENT |
|
||||
| 2026-09-05 | Agent 编排依赖改为 LangGraph 为主 | 状态图 + Tool 节点 | FRAMEWORK |
|
||||
| 2026-09-05 | memory 全量刷新:§0 新 Agent 交接清单 + 实现状态表 + bootstrap | 脚手架已落地,便于无上下文交接 | MEMORY / FRAMEWORK / FLOW / TODO / REQUIREMENTS / ENVIRONMENT |
|
||||
| 2026-09-07 | 追加需求 FR-8/FR-9/FR-10 经独立 AI 评审→修订→复审并入 PRD v1.1 + 规则表 v1.1 + 开发计划 v1.2(C4~C6 任务 + 挂账 #1~#9) | 弥补单笔合规盲区/处置时效红线/代理人操作风险 | PRD / 附-风控规则表 / 开发计划 |
|
||||
| 2026-09-07 | 《实现方案-风控追加需求v1.1-C4C6.md》定稿:独立 AI 评审 FAIL(P0×1/P1×4/P2×6)→ 修订闭环;C4~C6 编码依据可照抄 | 开发流程第 2 步(另一 AI 验证挑毛病) | 实现方案文档 |
|
||||
| 2026-09-07 | 全库文档同步:分支口径修正(`feature/risk` → 实况 `risk-control-agent`,与 main 分叉 67/4)+ T-21 评审闭环 / 425 绿 / T-03 / C1~C3 状态落账 + 新建项目根交接文档.md | 文档与实况不一致(用户排查要求) | MEMORY / TODO / REQUIREMENTS / FRAMEWORK / FLOW / ENVIRONMENT / ITERATION / PRD / 架构设计 / 开发计划 / README / 交接文档 |
|
||||
| 2026-09-07 | **阶段一「对齐 main 基准」AL-01~AL-08 完成**(逐项独立 commit bb244f4~b5fd52e):SUIT-001~008 换核为 core_ro.check_suitability(C×R 矩阵 + match_result 五值 + JR-AST/FM 契约)· risk_suitability_log 重建 21 列 · Core 表 is_hnw/风评 expires_at 七新列 · 种子 33 客户/14 产品 · 全量 **406 passed 0 failed 0 skipped**(425→406,SUIT 测试重写)· uvicorn 冒烟三端点通过 · risk-m1 补打(3c07de6)· 六项拍板全落定 | 阶段一执行(用户拍板 main = 需求唯一基准);基线变更与 SUIT 体系退役需落账 | MEMORY / TODO / REQUIREMENTS / FRAMEWORK / FLOW / ENVIRONMENT / ITERATION / README / 交接文档 |
|
||||
|
||||
+20
-9
@@ -9,7 +9,7 @@
|
||||
|
||||
**项目是什么:** 金融四 Agent(客户财富 / 代理人 / 数据分析 / 风控)共用数据层与合规底座;**不**互调 LLM,跨 Agent 走 L1/L2/L3 画像与预警表。
|
||||
|
||||
**当前进度:** 需求与表设计已定 · **风控模块 B1~B9b 全部完成(M2 tag risk-m2),M4 复核已闭环(2026-09-07),风控阶段 B 正式完结** · **Wave 0 已完成(2026-09-07,经独立 AI 评审闭环)**:T-01 JWT 鉴权(auth_service Auth SDK + deps 工厂替换 + X-Agent-Type 准入矩阵)/ T-02 审计中间件(http_access + 独立 request_id + 4xx/500 统一错误体 + input_guard_log 双写)/ T-06 chat 最小闭环(POST /api/chat + 会话落库 + Redis 窗口)/ T-07 LangGraph StateGraph 骨架 + DeepSeek(无 key 降级)· **T-04 Core RO Tool 节点已完成(2026-09-07)**:app/tool/core_tools.py 三只读 Tool + tool_service(意图/归属校验/run_tool)+ 图 tool 节点 + agent_tool_call 落库 + `utils/authz.py` 公共鉴权留痕,**321 测试绿(首评+复审双闭环)**。**下一步:T-21 Milvus / T-03 输入防护 / 前端 React 多 Agent 入口(HashRouter `web/` init)。风控阶段 C 已完成(2026-09-07,345 绿,tag `risk-m3`,A-6 对话线验收通过,独立 AI 评审 PASS P0=0)。**T-03 输入防护已完成(2026-09-07,378 绿,独立 AI 评审 PASS with findings P0=0):app/service/input_guard.py 注入词表 42 条纯函数检测 + oversize 4000 + actor 级 Redis 固定窗口限流 30 次/分(fail-open);chat 链路顺序 = 鉴权→准入→空白→限流 429→注入/超长 400→归属→会话,被拒 fail-fast 不建会话,blocked 落 input_guard_log(ENUM 四值已用满)。****开发在分支 `feature/risk`(未合入 main)。**
|
||||
**当前进度:** 需求与表设计已定 · **风控模块 B1~B9b 全部完成(M2 tag risk-m2),M4 复核已闭环(2026-09-07),风控阶段 B 正式完结** · **Wave 0 已完成(2026-09-07,经独立 AI 评审闭环)**:T-01 JWT 鉴权(auth_service Auth SDK + deps 工厂替换 + X-Agent-Type 准入矩阵)/ T-02 审计中间件(http_access + 独立 request_id + 4xx/500 统一错误体 + input_guard_log 双写)/ T-06 chat 最小闭环(POST /api/chat + 会话落库 + Redis 窗口)/ T-07 LangGraph StateGraph 骨架 + DeepSeek(无 key 降级)· **T-04 Core RO Tool 节点已完成(2026-09-07)**:app/tool/core_tools.py 三只读 Tool + tool_service(意图/归属校验/run_tool)+ 图 tool 节点 + agent_tool_call 落库 + `utils/authz.py` 公共鉴权留痕,**321 测试绿(首评+复审双闭环)**。风控阶段 C 已完成(2026-09-07,345 绿,tag `risk-m3`,A-6 对话线验收通过,独立 AI 评审 PASS P0=0)。T-03 输入防护已完成(2026-09-07,378 绿,独立 AI 评审 PASS with findings P0=0):app/service/input_guard.py 注入词表 42 条纯函数检测 + oversize 4000 + actor 级 Redis 固定窗口限流 30 次/分(fail-open);chat 链路顺序 = 鉴权→准入→空白→限流 429→注入/超长 400→归属→会话,被拒 fail-fast 不建会话,blocked 落 input_guard_log(ENUM 四值已用满)。**阶段一「对齐 main 基准」AL-01~AL-08 已完成(2026-09-07,逐项独立 commit bb244f4~b5fd52e):适当性判定换核为 main 的 core_ro.check_suitability(C×R 矩阵表数据驱动,match_result 五值/JR-AST-012/FM-01/FM-03/JR-AST-PRO 契约,SUIT-001~008 退役);risk_suitability_log 重建 21 列;Core 表加 is_hnw/风评七新列(expires_at);种子 33 客户/14 产品;全量 406 passed 0 failed 0 skipped + uvicorn 冒烟三端点通过;risk-m1 已补打(指向 3c07de6)**。**下一步:阶段一验收门(用户浏览器目视确认)→ AL-09 合并 main → AL-10 PRD v1.2 → AL-11 docx 登记 → 阶段二 C4~C6(实现方案已定稿并经独立 AI 评审修订闭环)/ 前端 React 多 Agent 入口(HashRouter `web/` init)。****开发在分支 `risk-control-agent`(与 main 已分叉:领先 75 提交 / main 独有 4 提交;旧文档中的 `feature/risk` 为过时口径)。**
|
||||
|
||||
**仓库地图:**
|
||||
|
||||
@@ -22,21 +22,22 @@
|
||||
| `app/service/embedding.py` `milvus_service.py` `rag_service.py` | **已实现(T21-1/2/4)** | Ollama bge-m3 1024 维(失败不静默降级)/ kb_product_rules 建集合+upsert+合规过滤检索 / search_knowledge→chunks+source_refs 溯源 |
|
||||
| `app/tool/kb_tools.py` | **已实现(T21-5)** | search_knowledge 对话 Tool(skip_access_check 公开知识;仅 customer/advisor 意图开放,risk 不开放);kb_product_rules 首批 24 块已入库(data/kb 6 产品手册,scripts/kb/build_kb.py 可重灌) |
|
||||
| `app/service/auth_service.py` | **已实现(T-01)** | Auth SDK:JWT 验签(HS256 dev/RS256 生产)、必填 claims、jti 吊销(Redis fail-open);签发 CLI `scripts/dev/issue_dev_token.py` |
|
||||
| `app/service/risk/*` + `service/suitability.py` | **已实现** | RISK-001~005 规则 / 预警聚合 / L3 写入 / AML / 引擎编排 / SUIT-001~008 / locks+redis_gateway 公共原语(B7) |
|
||||
| `app/service/risk/*` + `service/suitability.py` | **已实现** | RISK-001~005 规则 / 预警聚合 / L3 写入 / AML / 引擎编排 / suitability(**阶段一换核:内核改调 core_ro.check_suitability,SUIT-001~008 已退役**)/ locks+redis_gateway 公共原语(B7) |
|
||||
| `app/service/agent_service.py` `memory_service.py` | **已实现(T-07/T-06/T-04/C2)** | LangGraph StateGraph(tool→llm→guard)+ DeepSeek(无 key 降级);T-04 tool 节点(关键词意图 customer/advisor/risk 分组 + tool_service.run_tool);C2 tool_node 守卫放宽(requires_customer=False 允许无绑定客户,支撑 A-6 全量待审);Redis 会话窗口 + MySQL 回源 |
|
||||
| `app/service/tool_service.py` `app/tool/core_tools.py` `service/risk/chat_tools.py` | **已实现(T-04/C1)** | 对话 Tool 编排(统一注册表 get_registered_tool:core+risk / 归属校验 / agent_tool_call 落库)+ Core RO 三只读 Tool(L0/持仓/流水)+ C1 风控四只读 Tool(alert_query/customer_context/suitability_check/aml_lookup,RISK_TOOL_REGISTRY) |
|
||||
| `app/repository/session_repository.py` | **已实现(T-06/T-04)** | agent_session / agent_message / agent_tool_call 读写 |
|
||||
| `app/gateway/` | **已实现** | 模拟交易网关(仅 gateway_repository 可 INSERT core_trade,B5) |
|
||||
| `app/repository/core_ro.py` | **已实现** | Core 只读 SELECT(含风控扩展 sum_trades_on_date / list_trades_range / list_active_customers) |
|
||||
| `app/repository/core_ro.py` | **已实现** | Core 只读 SELECT(含风控扩展 sum_trades_on_date / list_trades_range / list_active_customers);**阶段一吸收 main:check_suitability(C×R 矩阵判定,CURDATE() 改 Python 端 `_is_expired`)/ list_products_for_customer / list_holdings 合并(limit=500+新列)/ list_trades / get_customer_l0 扩列版** |
|
||||
| `app/repository/risk_repository.py` | **已实现** | risk_alert / risk_suitability_log / L3 / risk_aml_list / audit_log / input_guard_log 读写 |
|
||||
| `app/utils/` | **基本就绪** | trace(trace_id+request_id 双 contextvar)/ desensitize / db(引擎工厂)/ response(统一错误体+4xx/500 handler)/ exceptions(含 ApiError)已实现;logger 占位 |
|
||||
| `app/config/settings.py` | **已实现** | 双库 + risk_* 阈值 + JWT 配置(jwt_public_key_path/jwt_dev_secret/jwt_issuer/jwt_audience) |
|
||||
| `scripts/core/*.sql` + `reset.ps1` | **已实现** | Core 模拟库 DDL + 种子 |
|
||||
| `scripts/agent/` `scripts/demo/` `scripts/dev/` | **已实现** | AML 名单种子 + 风控演示数据 + subscribe_alerts/rebuild_alerts + issue_dev_token(JWT 签发) |
|
||||
| `scripts/sync/*.py` | **已实现** | 归属同步 + Neo4j 全图 |
|
||||
| `tests/` | **已实现** | 22 个测试文件 321 用例(sqlite 隔离;DDL 单一事实源 `_ddl.py`;`test_integration_risk.py` 走真 MySQL + TRD-TEST- 前缀隔离) |
|
||||
| `tests/` | **已实现** | 30 个测试模块 406 用例(sqlite 隔离;DDL 单一事实源 `_ddl.py`;`test_integration_risk.py` 走真 MySQL + TRD-TEST- 前缀隔离;pytest 依赖装在系统 Python 3.13.14;阶段一 test_suitability 按 main 契约重写后基线 425→406) |
|
||||
| `docs/需求拆解/` | 已定 | 场景 P0、矩阵、合规原文 |
|
||||
| `docs/PRD/PRD-风控监测Agent.md` | **已冻结** | 风控 PRD v1.0 + 规则表附录 |
|
||||
| `docs/PRD/PRD-风控监测Agent.md` | **已冻结(v1.1)** | 风控 PRD v1.0 + v1.1 追加 FR-8/9/10(§4A)+ 规则表附录 |
|
||||
| `docs/项目框架设计/实现方案-风控追加需求v1.1-C4C6.md` | **已定稿** | C4~C6 编码依据(经独立 AI 评审修订闭环);分支/进度速览另见项目根 `交接文档.md` |
|
||||
| `docs/项目框架设计/表设计/` | 已定 | Agent 共用 11 表 + agent 专用 SQL |
|
||||
| `docs/项目框架设计/Core模拟底座/` | 已定 | 无真实 Core 时的 L0 方案 |
|
||||
| `web/` | **不存在** | 前端 React 待 init |
|
||||
@@ -52,23 +53,33 @@
|
||||
5. mysql … < scripts/agent/seed-aml-list.sql # AML 名单种子
|
||||
(风控演示:scripts/demo/prepare_risk_demo.sql,reset 后重跑)
|
||||
6. python scripts/sync/sync_advisor_rel.py && python scripts/sync/sync_neo4j.py
|
||||
7. uvicorn app.main:app --reload → GET /health;python -m pytest(321 绿)
|
||||
7. uvicorn app.main:app --reload → GET /health;python -m pytest(406 用例,系统 Python 3.13.14)
|
||||
```
|
||||
|
||||
> **本机 ①~⑤已执行、`.env` 已配置,勿重做**;本机状态与已知坑(mysql.exe 路径 / reset.ps1 交互式 -p / `redis`、`python-jose` 包漏装已补)见 `FLOW.md` §0 尾注。
|
||||
> **演示库状态(2026-09-07)**:已按演示 SOP §2 重灌并清理冒烟数据(alerts 0 / AML 8 / 会话 0),pytest 全量可直接跑;**下次演示/走查后再按 SOP §2 重灌**(核查单⑥前置断言会对走查残留显式 fail,属防护行为)。
|
||||
|
||||
**下一步开发(见 TODO):** ~~T-21 Milvus~~(已完成 2026-09-07,425 绿,待独立 AI 评审)/ 前端 React 多 Agent 入口。演示走查按 `docs/项目框架设计/演示SOP-风控模块.md`(debug 头通道仍有效;JWT 通道签发用 `scripts/dev/issue_dev_token.py`)。知识库入库:`python scripts/kb/build_kb.py`(先启 Ollama;**Milvus 数据路径必须纯英文**——faiss 不支持中文路径,本机 .env 已配 C:/Users/YUAN/.jinrong/milvus/)。
|
||||
**下一步开发(见 TODO):** 阶段一验收门(用户浏览器目视确认,pytest 406 绿 + 冒烟已通过)→ AL-09 合并 main → AL-10 PRD v1.2 → AL-11 docx 登记 → 阶段二 C4~C6 追加需求编码(FR-8/9/10 已并入 PRD v1.1 · 实现方案《docs/项目框架设计/实现方案-风控追加需求v1.1-C4C6.md》定稿,AL-05 换核后 SuitabilityResult 字段名需同步核对)/ 前端 React 多 Agent 入口。演示走查按 `docs/项目框架设计/演示SOP-风控模块.md`(debug 头通道仍有效;JWT 通道签发用 `scripts/dev/issue_dev_token.py`;**演示库已按 AL-08 expires_at 新口径重灌**)。知识库入库:`python scripts/kb/build_kb.py`(先启 Ollama;**Milvus 数据路径必须纯英文**——faiss 不支持中文路径,本机 .env 已配 C:/Users/YUAN/.jinrong/milvus/)。
|
||||
|
||||
**禁止(改代码前必记):** Core 正式 C1~C5 不可被画像覆盖 · 审计表只 INSERT · 代理人草稿不外发 · 仅 R-02 可阻断交易 · 四 Agent 不互调 LLM。
|
||||
|
||||
**里程碑 tag 中文对照(tag 本体保留英文原名——git 技术标识符需跨平台/脚本稳定引用,符合「技术字面量保留英文」约定;中文名经对照表统一):**
|
||||
|
||||
| tag | 中文名 | 状态 |
|
||||
| --- | --- | --- |
|
||||
| `risk-m1` | 阶段A · 适当性校验可用 | 已补打(2026-09-07,指向阶段 A 完成提交 `3c07de6`,历史归档) |
|
||||
| `risk-m2` | 阶段B · 事件线全链路 | 已打(2026-09-07,附注含验收走查记录) |
|
||||
| `risk-m3` | 阶段C前半 · 对话线闭环 | 已打(2026-09-07,指向 C1~C3 完成提交) |
|
||||
| `risk-m4` | 追加需求 · C4~C6(FR-8/9/10) | 拟(完成后打,名待拍板) |
|
||||
| `risk-align1`(拟) | 阶段一 · 对齐 main 基准 | 待定(AL-01~08 已完成,是否为此打 tag 由用户拍板;当前仅 AL 逐项 commit) |
|
||||
|
||||
------
|
||||
|
||||
## 1. 项目简介
|
||||
|
||||
- **名称:** JinRong 金融四 Agent 智能管家
|
||||
- **当前阶段:** **T-21 知识库入库已完成(2026-09-07:embedding/milvus_service/rag_service/kb_tools 四层 + 6 产品手册 24 块真库入库,search_knowledge("基金申购") TopK 验收通过,425 绿,待独立 AI 评审)**;风控阶段 C 完成(M3 tag risk-m3,345 绿);T-03 输入防护完成(378 绿,评审 PASS with findings P0=0);下一批 = 前端 React 入口
|
||||
- **当前优先级:** 前端 React 入口 → Wave 1(T-21 已完成)
|
||||
- **当前阶段:** **阶段一「对齐 main 基准」AL-01~AL-08 已完成(2026-09-07,commit bb244f4~b5fd52e,406 绿 + 冒烟通过,待用户目视确认验收门)**;T-21 知识库入库已完成并评审闭环(2026-09-07,425 绿基线,commit 9cc2e59);风控阶段 C 完成(M3 tag risk-m3,345 绿);T-03 输入防护完成(378 绿,评审 PASS with findings P0=0);追加需求 FR-8/9/10 已并入 PRD v1.1,实现方案(C4~C6)已定稿并经独立 AI 评审修订闭环,编码未开始
|
||||
- **当前优先级:** 阶段一验收门(用户目视确认)→ AL-09/10/11 → 阶段二 C4~C6 → 前端 React 入口
|
||||
|
||||
------
|
||||
|
||||
|
||||
@@ -37,15 +37,18 @@
|
||||
|
||||
## Wave 2 · 风控 P0
|
||||
|
||||
> 详细需求见 **`docs/PRD/PRD-风控监测Agent.md`(v1.0 已冻结)**;范围含 R-04(P1 顺手做)、R-05 仅预留 L3 接口。
|
||||
> 详细需求见 **`docs/PRD/PRD-风控监测Agent.md`(v1.0 冻结 + v1.1 追加 FR-8/9/10)**;范围含 R-04(P1 顺手做)、R-05 仅预留 L3 接口。
|
||||
|
||||
| ID | 需求 | 验收对照 | 状态 | TODO |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| R-01 | 大额预警 | risk_alert pending_review | **已实现**(B1~B6,A-1/A-2 用例绿) | T-30 |
|
||||
| R-02 | 适当性阻断请求 | 唯一阻断场景 | **已实现**(suitability SUIT-001~008 + check API 带鉴权 + 网关阻断,B5/B6;MySQL 手工 SQL 对照挂账 B9b) | T-31 |
|
||||
| R-03 | AML 命中通知 | 不自动冻户 | **已实现**(aml_service + scan API + L3 联动;对话通知线待 T-32 阶段 C) | T-32 |
|
||||
| R-04 | 频繁/试探模式预警 | 聚合出单 + 去重 | **已实现**(B1 规则 + B2 聚合去重) | T-30 |
|
||||
| R-05 | L3 画像写入 | 最小写入(最高档合并) | **已实现**(profile_l3 防降级;`risk_score` 一期保持 NULL 归评分模型首写) | T-30 |
|
||||
| R-01 | 大额预警 | risk_alert pending_review | **已实现**(B1~B6,A-1/A-2 用例绿) | ~~T-30~~ |
|
||||
| R-02 | 适当性阻断请求 | 唯一阻断场景 | **已实现**(~~SUIT-001~008~~ **阶段一换核**:main 的 core_ro.check_suitability C×R 矩阵 + match_result 五值/JR-AST-012/FM-01/FM-03/JR-AST-PRO 契约 + check API 带鉴权 + 网关阻断;risk_suitability_log 21 列落库;MySQL 手工 SQL 对照挂账 B9b) | ~~T-31~~ |
|
||||
| R-03 | AML 命中通知 | 不自动冻户 | **已实现**(aml_service + scan API + L3 联动;对话线随 C1~C3 完成,A-6 验收通过) | ~~T-32~~ |
|
||||
| R-04 | 频繁/试探模式预警 | 聚合出单 + 去重 | **已实现**(B1 规则 + B2 聚合去重) | ~~T-30~~ |
|
||||
| R-05 | L3 画像写入 | 最小写入(最高档合并) | **已实现**(profile_l3 防降级;`risk_score` 一期保持 NULL 归评分模型首写) | ~~T-30~~ |
|
||||
| FR-8 | 客户资产配置集中度预警(RISK-006) | A-10:R4+R5 占比 ≥ 阈值出单(并入事件类聚合);对话线只读展示 | **待编码**(实现方案已定稿,任务 C4) | C4 |
|
||||
| FR-9 | 预警单处置时效监控与自动升级(RISK-007) | A-11:超时分级升级(payload 承载不改 status)+ 幂等 + 降噪 | **待编码**(P0 红线;任务 C5,前置 = risk_manager 角色联动) | C5 |
|
||||
| FR-10 | 代理人异常行为链识别(RISK-008) | A-12:条件 A/B/C 触发 + 代理人维度出单(payload.actor_id)+ 明细仅 officer/manager 可见 | **待编码**(任务 C6,前置 = trade_gateway actor 透传) | C6 |
|
||||
|
||||
## Wave 3 · 客户 P0
|
||||
|
||||
|
||||
+20
-3
@@ -5,12 +5,29 @@
|
||||
|
||||
## 进行中
|
||||
|
||||
(无——T-21 已完成待独立 AI 评审;评审通过后下一项 = 前端 React 多 Agent 入口)
|
||||
**阶段一「对齐 main 基准」AL-01~AL-08 已全部完成(2026-09-07,逐项独立 commit bb244f4~b5fd52e)**,验收门进度:pytest 全量 **406 passed 0 failed 0 skipped**(含真库集成)✓ · uvicorn 冒烟三端点(/health · /api/simulate/trade SUIT_RISK_MISMATCH+rule_refs · /api/risk/suitability/check 新契约)✓ · risk-m1 补打 ✓(指向 3c07de6)——**唯一未完成项:用户浏览器目视确认 UI**。确认通过后按 AL-09 → AL-10 → AL-11 收尾,再进阶段二 C4~C6。
|
||||
|
||||
## 待办(推荐顺序)
|
||||
|
||||
- [ ] **【阶段一验收门】用户浏览器目视确认 UI**(唯一卡点;pytest 406 绿 + 冒烟均已自动通过)
|
||||
- [ ] **【阶段一收尾】AL-09 合并 main 分支**(9 文件冲突按修改报告 AL-09 口径解决:memory 文档以我方为准,吸收 main 新增资料;02-seed-base 两方账号并存)
|
||||
- [ ] **【阶段一收尾】AL-10 PRD v1.2 修订**(SUIT-001~008 编号体系退役登记,用户拍板②授权)
|
||||
- [ ] **【阶段一收尾】AL-11 `01-客户.docx` 11~16 条读取登记**(用户拍板⑤:用工具读 docx)
|
||||
- [ ] **【阶段二】C4~C6 追加需求编码**(实现方案已定稿;AL-05 重构后 SuitabilityResult 字段名需同步核对)——前置:阶段一验收门通过
|
||||
- [ ] **【阶段二前置】**`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
|
||||
- [ ] **【阶段二】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
|
||||
- [ ] **【阶段二】C5 RISK-007 时效升级**(FR-9):escalation_service + scripts/cron/escalation_scan.py + query_overdue_alerts Tool + conftest 回拨 fixture;验收 A-11
|
||||
- [ ] **【阶段二】C6 RISK-008 代理人行为链**(FR-10):trade_gateway actor_id 透传(前置)+ agent_behavior_service + scripts/cron/agent_behavior_scan.py + query_agent_behavior Tool;验收 A-12
|
||||
- [ ] **【阶段二收尾】**演示 SOP 补代理人扮演步骤 + 02-redis-keys.md 增补 + 挂账 #1~#9 核对;tag 名待拍板(risk-m3 已被 C0~C3 占用,建议 risk-m4)
|
||||
- [ ] 前端 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 零数据丢失)**
|
||||
- [x] **【阶段一拍板项】六项待确认全部落定(2026-09-07 用户拍板)**:①SUIT-006 退役以 main FM-01 为准 ✓ ②SUIT-001~008 编号体系退役授权 PRD v1.2 ✓ ③risk_assessment_valid_days 退役改 expires_at ✓ ④risk-m1 补打 ✓(已指向 3c07de6)⑤docx 用工具读取 ✓ ⑥合并 main 时机=阶段一验收门后 ✓
|
||||
- [ ] 待办提醒:chat 链路 risk_suitability_log.actor_id 暂落 SYSTEM(run_tool 统一透传需动 core_tools/kb_tools 冻结 func 契约,发起者留痕已由 agent_tool_call 覆盖)——AL-06 遗留,阶段二顺带评估
|
||||
|
||||
- [x] T-04 Core RO 封装为 Tool 节点;A-01 归属校验(chat Tool 接入 + agent_tool_call 落库)—— **完成(2026-09-07)**:`app/tool/core_tools.py`(L0/持仓/流水三只读 Tool + TOOL_REGISTRY 白名单)+ `app/service/tool_service.py`(关键词意图仅 customer/advisor;归属校验对齐 deps.assert_customer_access 口径——Tool 层拒绝不抛 403 而 blocked 留痕,纵深防御;run_tool 执行+落库,落库失败降级)+ agent_service 图 tool 节点(START→tool→llm→guard;结果注入 LLM 上下文,降级回复带摘要)+ session_repository.insert_tool_call(message_id 一期 NULL)。**A-01 口径:本任务只做 Tool 层归属校验语义(customer 本人/advisor assigned/risk_officer 全量/其余拒),A-01 完整场景(代理人画像)仍归 T-20**;risk 分支四 Tool 归 C1 复用 run_tool。**评审闭环(2026-09-07):首评 P1×2+P2×3+P3×2 → 修复 `40a9ee2` → 复审 P2×1+P3×4 → 修复 `1216d26`,pytest 321 绿;入参白名单+days 钳制、公共鉴权双写 `utils/authz.py`、list_holdings LIMIT 均落地**
|
||||
- [x] T-21 Milvus Lite + kb_product_rules 首批入库 —— **完成(2026-09-07,commits e34973f~535c8a0 共 6 个)**:`app/service/embedding.py`(Ollama bge-m3 批量 /api/embed 1024 维,四类失败一律 EmbeddingError 不静默降级)+ `app/service/milvus_service.py`(kb_product_rules 幂等建集合+upsert+search_kb 溯源/effective_date 合规过滤)+ `data/kb/` 6 只种子产品手册(prospectus/fee/rule/risk 四节 24 块)+ `scripts/kb/build_kb.py`(--dry-run/--kb-dir)+ `app/service/rag_service.py` 落地(search_knowledge→chunks+source_refs,异常上抛防 LLM 编造)+ `app/tool/kb_tools.py` 挂注册表第三层(**ToolSpec 新增 skip_access_check**:公开知识无归属语义,advisor 无绑定客户可查;意图层限定 customer/advisor,risk 不开放——用户拍板)+ tool_node 按 spec 白名单注入 query + summarize 溯源口径。**真库验收:24 块入库,search_knowledge("基金申购") Top3 命中申赎规则(score 0.73+),溯源完整**。三坑收口:Milvus Lite 跨进程重开须显式 load / faiss 不支持中文路径(本机 .env 改 C:/Users/YUAN/.jinrong/milvus/)/ build_kb sys.path 引导。知识库 API(上传/重建端点)一期不做(knowledge.py 仍空壳,用户拍板),425 绿
|
||||
- [x] T-21 Milvus Lite + kb_product_rules 首批入库 —— **完成(2026-09-07,commits e34973f~535c8a0 共 6 个 + 评审闭环 9cc2e59)**:`app/service/embedding.py`(Ollama bge-m3 批量 /api/embed 1024 维,四类失败一律 EmbeddingError 不静默降级)+ `app/service/milvus_service.py`(kb_product_rules 幂等建集合+upsert+search_kb 溯源/effective_date 合规过滤)+ `data/kb/` 6 只种子产品手册(prospectus/fee/rule/risk 四节 24 块)+ `scripts/kb/build_kb.py`(--dry-run/--kb-dir)+ `app/service/rag_service.py` 落地(search_knowledge→chunks+source_refs,异常上抛防 LLM 编造)+ `app/tool/kb_tools.py` 挂注册表第三层(**ToolSpec 新增 skip_access_check**:公开知识无归属语义,advisor 无绑定客户可查;意图层限定 customer/advisor,risk 不开放——用户拍板)+ tool_node 按 spec 白名单注入 query + summarize 溯源口径。**真库验收:24 块入库,search_knowledge("基金申购") Top3 命中申赎规则(score 0.73+),溯源完整**。三坑收口:Milvus Lite 跨进程重开须显式 load / faiss 不支持中文路径(本机 .env 改 C:/Users/YUAN/.jinrong/milvus/)/ build_kb sys.path 引导。知识库 API(上传/重建端点)一期不做(knowledge.py 仍空壳,用户拍板),425 绿
|
||||
- [x] T-03 输入防护规则(F-03:prompt_injection/oversize/限流)—— **完成(2026-09-07,commits 497554d/65b45aa/cc6f34f/207fc79)**:`app/service/input_guard.py`(注入短语词表 42 条四类纯函数检测 + `inspect_message` oversize 4000 先于 injection + `check_rate_limit` Redis INCR 固定窗口 actor 级 30 次/分 fail-open)+ chat 路由接入(顺序:鉴权→准入→空白→限流 429→注入/超长 400→归属→会话;被拒 fail-fast 不建会话不落消息,blocked 落 input_guard_log,留痕降级不改拒绝语义;Pydantic 硬顶 20000,业务限 4000 移 guard 层换留痕)+ redis_gateway.incr + settings.guard_rate_limit_*;拍板:命中即拒不清洗、仅 blocked 留痕、词表代码常量可审计。**独立 AI 评审 PASS with findings(P0=0;P2×3 已收口:词表断言修正/补 7 条同构变体/窗口 TTL 断言+EXPIRE 失败取舍锁定;P3 已收 session_id 截断,挂账对抗变体扩表)**,378 绿
|
||||
- [x] 风控阶段 C(C0 pytest-asyncio / C1 chat_tools / C2 risk 分支 StateGraph / C3 A-6 验收)—— **完成(2026-09-07)**:`app/service/risk/chat_tools.py` 四只读 Tool(alert_query/customer_context/suitability_check/aml_lookup)挂 `RISK_TOOL_REGISTRY`;`tool_service.run_tool` 改查 core+risk 统一注册表 `get_registered_tool` 且恒传 `risk_repo`;`_normalize_params` 读 spec 白名单;`match_intent` 按 agent 分组扩 risk 关键词;`agent_service.tool_node` 守卫放宽(`requires_customer=False` 允许无绑定客户,支撑 A-6 全量待审);A-6 验收+诱导处置边界(无处置 Tool、系统提示禁自动处置、诱导只触发只读且预警状态不变);**独立 AI 评审 PASS(P0=0,P2 补 advisor 归属/空 product_id 单测已收口),345 绿,tag `risk-m3`**
|
||||
- [ ] 前端 React 多 Agent 入口(HashRouter,`web/` init)
|
||||
@@ -18,7 +35,7 @@
|
||||
### 风控模块(PRD v1.0 已冻结 · `docs/PRD/PRD-风控监测Agent.md`,事件驱动线不依赖 T-07 可先行)
|
||||
|
||||
- [x] T-30 风控事件线 —— **全部完成(B1~B9b,M2 tag risk-m2)**:规则引擎/预警聚合/L3/AML/交易网关/4 API/演示走查 11/11 PASS + 核查单①~⑥收口,均经独立 AI 评审闭环;scan_all 幂等读后写无锁留痕(接批量时 run_locked)
|
||||
- [x] T-31 `service/suitability.py` 公共校验(SUIT-001~008)+ `POST /api/risk/suitability/check` —— **交付=suitability 服务函数+单测(77 例;check API 随 B6 带鉴权+直调审计);MySQL 手工 SQL 对照(阶段 A 评审 P2-8)2026-09-07 收口:4 组演示组合真库 SQL 推导与函数判定逐项一致(演示 SOP 核查单附行)**
|
||||
- [x] T-31 `service/suitability.py` 公共校验(SUIT-001~008)+ `POST /api/risk/suitability/check` —— **交付=suitability 服务函数+单测(77 例;check API 随 B6 带鉴权+直调审计);MySQL 手工 SQL 对照(阶段 A 评审 P2-8)2026-09-07 收口:4 组演示组合真库 SQL 推导与函数判定逐项一致(演示 SOP 核查单附行)。【2026-09-07 阶段一退役】SUIT-001~008 编号体系已随 AL-05 换核退役,判定内核改为 main 的 core_ro.check_suitability(C×R 矩阵 + JR-AST/FM 契约),测试按 main 契约重写(原 77 例作废,全量基线 425→406)**
|
||||
- [x] T-32 预警台账与人工处置 API + 对话线 —— **台账/处置 API 已由 B6 覆盖并复审通过(A-7/A-9 用例绿);交付=对话线,归阶段 C(C1~C3,T-07 已就绪)**
|
||||
|
||||
## 已完成
|
||||
|
||||
Reference in New Issue
Block a user