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`)。