From 3c3ce4e5d6b1a98429edb297dc33208cbe32d670 Mon Sep 17 00:00:00 2001 From: YUAN Date: Mon, 7 Sep 2026 08:15:50 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BA=A4=E6=8E=A5=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=A2=9E=E9=87=8F=E5=90=8C=E6=AD=A5=E2=80=94=E2=80=94=E6=BC=94?= =?UTF-8?q?=E7=A4=BA=E5=BA=93=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0(?= =?UTF-8?q?=E5=B7=B2=E6=8C=89=20SOP=20=E9=87=8D=E7=81=8C+=E5=86=92?= =?UTF-8?q?=E7=83=9F=E6=B8=85=E7=90=86,=20pytest=20=E5=8F=AF=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=B7=91,=20=E8=B5=B0=E6=9F=A5=E5=90=8E=E9=9C=80?= =?UTF-8?q?=E5=86=8D=E9=87=8D=E7=81=8C)=20+=20FLOW=20=E5=B0=BE=E6=B3=A8?= =?UTF-8?q?=E8=A1=A5=20python-jose=20=E6=BC=8F=E8=A3=85=E5=9D=91(=E4=B8=8E?= =?UTF-8?q?=20redis=20=E5=8C=85=E5=90=8C=E7=B1=BB,=20=E9=99=84=20import=20?= =?UTF-8?q?=E8=87=AA=E6=A3=80=E5=91=BD=E4=BB=A4)=20+=20JWT=20=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=AF=86=E9=92=A5=20warning=20=E5=B1=9E=E9=A2=84?= =?UTF-8?q?=E6=9C=9F/DEEPSEEK=20=E7=A9=BA=20chat=20=E9=99=8D=E7=BA=A7?= =?UTF-8?q?=E5=85=A5=E6=9C=AC=E6=9C=BA=E7=8A=B6=E6=80=81=20+=20AGENTS.md?= =?UTF-8?q?=20=E4=BB=A3=E7=A0=81=E5=85=A5=E5=8F=A3=E5=88=B7=E6=96=B0(main?= =?UTF-8?q?=20=E5=85=A8=E8=B7=AF=E7=94=B1/=E9=89=B4=E6=9D=83=E5=B7=A5?= =?UTF-8?q?=E5=8E=82/Auth=20SDK/StateGraph)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 9 ++++++--- docs/memory/FLOW.md | 4 ++-- docs/memory/MEMORY.md | 4 ++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index cfa7547..dc2ef09 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,10 +24,13 @@ ## 代码入口 ```text -app/main.py # FastAPI;当前仅 /health -app/config/settings.py # 双库 jinrong_agent + jinrong_core +app/main.py # FastAPI:路由挂载 + trace/audit 中间件 + lifespan(风控 4 API + /api/simulate + /api/chat 已挂载) +app/api/deps.py # 鉴权工厂(T-01 JWT:Bearer 优先,dev debug 头兜底)+ 归属断言 +app/service/auth_service.py # Auth SDK:JWT 验签/吊销(T-01);签发 CLI scripts/dev/issue_dev_token.py +app/service/agent_service.py # LangGraph StateGraph 骨架 + DeepSeek(T-07) +app/config/settings.py # 双库 jinrong_agent + jinrong_core + risk_* 阈值 + JWT 配置 app/repository/core_ro.py # Core 只读(已实现) -scripts/core/reset.ps1 # 本地灌 Core 模拟库 +scripts/core/reset.ps1 # 本地灌 Core 模拟库 ``` 技术选型硬阀门见 MEMORY 第 3、7 节。Cursor 以 `.cursor/rules/project-memory.mdc` 为准。 diff --git a/docs/memory/FLOW.md b/docs/memory/FLOW.md index f84b654..5aa5001 100644 --- a/docs/memory/FLOW.md +++ b/docs/memory/FLOW.md @@ -50,9 +50,9 @@ Client → Gateway(JWT/RBAC) → api/chat → agent_service(LangGraph) → Tools 当前:**风控事件线 + Wave 0 共用底座完成**(交易网关 → 规则引擎 → 预警/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 复核闭环;273 测试绿);阶段 B 完结;**对话链路骨架已通**(chat → LangGraph → 免责声明 → 落库),Tool 节点与 RAG 待 T-04/T-21、输入防护待 T-03。 -**本机已就位状态(2026-09-07 更新 · 已完成上述 ①~⑤,无需重做):** `.env` 已配置(学习项目,`MYSQL_PASSWORD=123456`;NEO4J/DEEPSEEK 留空——DEEPSEEK_API_KEY 空时 chat 走降级回复,不阻塞演示;JWT 配置走默认 dev secret,启动有 warning 属预期);`jinrong_core` + `jinrong_agent` 已灌库(28 客户 / AML 名单 8 条 / 演示测评已刷新 / 归属同步 28 行);`python -m pytest` 273 用例(重灌后全绿;集成测试真连本机 MySQL,未灌库的机器自动 skip 集成模块。**演示库当前含 B9b 走查残留,跑集成前先按演示 SOP §2 重灌**——核查单⑥前置断言会对残留数据显式 fail);本机 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` 已灌库(28 客户 / AML 名单 8 条 / 演示测评已刷新 / 归属同步 28 行);`python -m pytest` 273 用例全绿(集成测试真连本机 MySQL,未灌库的机器自动 skip 集成模块);**演示库已重灌并清理冒烟数据(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` 包 requirements 有但初始 `pip install -r` 漏装(B9a 于 2026-09-07 补装,重装环境时留意)。 +**本机已知坑:** `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"` 自检**。 ------ diff --git a/docs/memory/MEMORY.md b/docs/memory/MEMORY.md index a830825..e8448e0 100644 --- a/docs/memory/MEMORY.md +++ b/docs/memory/MEMORY.md @@ -52,8 +52,8 @@ 7. uvicorn app.main:app --reload → GET /health;python -m pytest(209 绿) ``` -> **本机 ①~⑤已执行、`.env` 已配置,勿重做**;本机状态与已知坑(mysql.exe 路径 / reset.ps1 交互式 -p / redis 包漏装已补)见 `FLOW.md` §0 尾注。 -> **⚠️ 演示库当前含 B9b 走查残留(2026-09-07)**:直接跑 `pytest` 集成模块会因核查单⑥前置断言显式 fail 约 6 例(防护行为,非环境损坏)——先按 `docs/项目框架设计/演示SOP-风控模块.md` §2 重灌再跑,即恢复全绿。 +> **本机 ①~⑤已执行、`.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-03 输入防护 / T-04 Core RO 封装 Tool(agent_tool_call 随 C1)/ T-21 Milvus / 风控阶段 C(C0~C3,A-6 对话验收)。演示走查按 `docs/项目框架设计/演示SOP-风控模块.md`(debug 头通道仍有效;JWT 通道签发用 `scripts/dev/issue_dev_token.py`)。