diff --git a/docs/memory/MEMORY.md b/docs/memory/MEMORY.md index 624786a..5bf7a01 100644 --- a/docs/memory/MEMORY.md +++ b/docs/memory/MEMORY.md @@ -60,7 +60,7 @@ | `app/api/knowledge.py` `admin.py` | 空壳 | 待审计查询台与知识库 API(T-21 拍板一期只做脚本入库,上传/重建端点不做) | | `app/service/platform/` | **已实现(v0.1)** | 封装 core_ro + `PLATFORM_RESPONSE_DESENSITIZE` 脱敏开关 | | `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/tool/kb_tools.py` | **已实现(T21-5)** | search_knowledge 对话 Tool(skip_access_check 公开知识;仅 customer/advisor 意图开放,risk 不开放);**kb_product_rules 尚未灌入向量库**(2026-09-14 实测两份 milvus store 均无此 collection,MEMORY 此前「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 / 引擎编排 / 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 + 方案 C)** | 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 回源。**方案 C:`stream_chat` 生成器(Tool 同步跑完→逐块推 LLM 文本)+ `needs_disclaimer`(首帧 meta 与落库尾部共用口径)** | diff --git a/docs/memory/TODO.md b/docs/memory/TODO.md index 1a9f651..f8e60e8 100644 --- a/docs/memory/TODO.md +++ b/docs/memory/TODO.md @@ -476,7 +476,7 @@ - [x] **【AL-09】合并接线**(2026-09-08):JWT 统一 · 模块 chat 恢复 · auth_adapter · test_module_boundary 绿 · **502 pytest 绿** - [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 个 + 评审闭环 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-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 绿。**〔2026-09-14 勘误〕** 当时 24 块灌入的是 `C:/Users/YUAN/.jinrong/milvus/`;当前 `.env` 指向 `C:/Users/Windows/.jinrong/milvus/milvus.db`,实测该库**无** kb_product_rules(两份现存 store 均无),需重跑 `scripts/kb/build_kb.py` 灌入当前库 - [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`** diff --git a/docs/来自客户的项目资料/金融/答辩所需文本交付物清单.txt b/docs/来自客户的项目资料/金融/答辩所需文本交付物清单.txt index 78ac3d7..9205168 100644 --- a/docs/来自客户的项目资料/金融/答辩所需文本交付物清单.txt +++ b/docs/来自客户的项目资料/金融/答辩所需文本交付物清单.txt @@ -1,7 +1,20 @@ -文本交付物: -1.每日会议纪要 (每天组内至少组织一次会议,评审需求或评估进度以及任务分配调整) -2.开发计划 -3.表的设计文档 -4.API接口文档 -5.答辩PPT -6.需求文档 +文本交付物(答辩提交对照): +1.每日会议纪要 → docs/答辩/提交物料/01-每日会议纪要.md + + docs/项目管理/01-每日会议纪要模板与流程.md(模板与示例 §7) + + docs/项目管理/纪要/2026-09-13.md +2.开发计划 → docs/答辩/提交物料/02-开发计划.md(摘要) + + docs/项目管理/02-项目开发计划.md(全文 · §11 已更新 2026-09-13) +3.表的设计文档 → docs/答辩/提交物料/03-表设计文档.md(说明) + + docs/项目管理/03-表设计文档.md(全文) + + docs/项目框架设计/表设计/(DDL) +4.API接口文档 → docs/答辩/提交物料/04-API接口文档.md(说明) + + docs/项目框架设计/接口契约-代销平台API-v0.1.md(正文) + + 可选 openapi.json 自 http://127.0.0.1:8000/openapi.json 导出 +5.答辩PPT → docs/答辩/presentation/index.html → 浏览器 Ctrl+P 导出 PDF + + docs/答辩/提交物料/05-答辩PPT.md(操作说明) +6.需求文档 → docs/答辩/提交物料/06-需求文档.md(索引) + + docs/memory/REQUIREMENTS.md + + docs/需求拆解/业务场景优先级清单.md 等 + +总索引:docs/答辩/提交物料/README.md +答辩须知:docs/来自客户的项目资料/金融/答辩须知.md diff --git a/docs/答辩/README.md b/docs/答辩/README.md index 7ad4acf..13bb7ba 100644 --- a/docs/答辩/README.md +++ b/docs/答辩/README.md @@ -13,6 +13,7 @@ | HTML 幻灯片 | [`presentation/index.html`](presentation/index.html) | 投屏 / Ctrl+P 导出 PDF | | 知识点提纲 + 深 Q&A | [`答辩知识点清单.md`](答辩知识点清单.md) | 备查;§八为内部工程项**不上台** | | **Demo 功能测试(内部)** | [`DEMO-功能测试流程.md`](DEMO-功能测试流程.md) | 答辩前自测,**不对评委念** | +| **客户文本交付 6 项** | [`提交物料/README.md`](提交物料/README.md) | 对照 `答辩所需文本交付物清单.txt` 打包提交 | | 登录账号备忘 | `web/src/config/defenseAccounts.ts` | 登录页记号本 | ## 业务展示亮点(可口播) @@ -46,5 +47,5 @@ python scripts/sync/sync_advisor_rel.py ## 维护约定 -改 Demo 动线或业务口径时,同步:**本 README** · **答辩稿** · 全流程 SOP · 幻灯片 · 总览课 [`08-defense.html`](../course/jinrong-overview/modules/08-defense.html)(改后 `python docs/course/build_all.py`)。 +改 Demo 动线或业务口径时,同步:**本 README** · **答辩稿** · 全流程 SOP · 幻灯片 · 总览课 [`08-defense.html`](../course/jinrong-overview/modules/08-defense.html)(改后 `python docs/course/build_all.py`)· **[`提交物料/`](提交物料/README.md)**(客户 6 项索引)。 工程边界只写在 **MEMORY / 知识点清单 §八 / 功能测试**,不写入口播稿与幻灯片「边界页」。 diff --git a/docs/答辩/提交物料/01-每日会议纪要.md b/docs/答辩/提交物料/01-每日会议纪要.md new file mode 100644 index 0000000..f7e9d4a --- /dev/null +++ b/docs/答辩/提交物料/01-每日会议纪要.md @@ -0,0 +1,30 @@ +# 1 · 每日会议纪要(答辩提交汇编) + +> **Canonical 模板与规范:** [`docs/项目管理/01-每日会议纪要模板与流程.md`](../../项目管理/01-每日会议纪要模板与流程.md) +> **完整示例(M0~M1 前 3 天):** 同上文档 **§7.1~§7.3**(2026-09-07 / 08 / 09) +> **最新归档:** [`docs/项目管理/纪要/2026-09-13.md`](../../项目管理/纪要/2026-09-13.md) + +## 1.1 会议制度(摘要) + +- **频次:** 工作日至少 1 次站会(15~20 分钟)。 +- **三件事:** 评审需求(对照 F/C/A/D/R)· 评估进度(对照本周验收门)· 任务分配调整(Blocked by → 解锁了)。 +- **归档:** `docs/项目管理/纪要/YYYY-MM-DD.md`(见模板 §8)。 + +## 1.2 项目关键节点纪要(决议摘要 · 非逐字稿) + +以下摘自 [`docs/memory/ITERATION.md`](../../memory/ITERATION.md) 与组内同步,供答辩说明「过程中的尝试与调整」;详细阻塞链见模板示例。 + +| 日期 | 里程碑 | 决议 / 完成摘要 | +| --- | --- | --- | +| 2026-09-07 | M0 启动 | Core 模拟库 33 客户/14 产品对齐;适当性换核 C×R 矩阵;全员 bootstrap 与接口契约评审 | +| 2026-09-08 | M0 | 代销平台 API **路由 A(业务域)**拍板;chat B/C 方案(sessions + SSE)立项 | +| 2026-09-08 | AL-09 | 风控模块并入宿主:JWT 统一 · 双栈 gateway + deps | +| 2026-09-09 | M1 | 前端 P0 主链路;Redis Docker 6380;四角色 Dashboard 口径 | +| 2026-09-10 | Wave3 | 客服 1B sanitize · C-04/C-05/C-11;风控前端三页 + prepare_all | +| 2026-09-11 | 问数/行情 | D-06 缓存 · `/api/ready` · 净值历史种子 · TEST-RISK/AN 沙盘修复 | +| 2026-09-12 | 合并线 | 顾问 Agent 接缝 · 基金转换 T+1 · 问数 analyze/模板原句 | +| 2026-09-13 | 答辩周 | 客户线交易 E2E(CT-001)收口;第五轮三线 HTTP+浏览器补测;答辩物料本目录整理 | + +## 1.3 答辩提交说明 + +评委若要求「每日会议纪要」:提交 **本文件 + 模板 §7 三条示例 + `纪要/2026-09-13.md`** 即可覆盖「制度 + 样例 + 最近同步」。若需补全更多日期,按模板 §6 空白模板复制到 `docs/项目管理/纪要/`。 diff --git a/docs/答辩/提交物料/02-开发计划.md b/docs/答辩/提交物料/02-开发计划.md new file mode 100644 index 0000000..0524e10 --- /dev/null +++ b/docs/答辩/提交物料/02-开发计划.md @@ -0,0 +1,31 @@ +# 2 · 开发计划(答辩提交摘要) + +> **全文(项目级 5 周 · Wave×Phase · 依赖链 · 答辩准备 §8.3):** +> [`docs/项目管理/02-项目开发计划.md`](../../项目管理/02-项目开发计划.md) + +## 2.1 计划结构(一句话) + +5 人垂直切分 + **Wave 0→3 依赖解锁** + **M1~M5 周验收门**;每周五 Demo,第 5 周答辩。 + +## 2.2 当前进度快照(2026-09-13 · 与 §11 同步) + +| Wave / 主题 | 状态 | 答辩可演示 | +| --- | --- | --- | +| Wave 0 底座 | JWT/RBAC · 审计 trace · Core 只读 · 输入防护 | ✅ 越权 403 + 留痕 | +| Wave 1 问数/顾问 | NL2SQL + 模板/缓存/analyze · 顾问合规/异动/模板 | ✅ 问数 + 理财师工作台 | +| Wave 2 风控 | R-01~R-05 · 模拟交易 · 转换 T+1 受理/确认 | ✅ 台账 + 转换节奏 | +| Wave 3 客户 | 客服 14 节点 · RAG · 选购清单 · 交易中心 | ✅ Chat + 交易带过 | +| 代销平台 API v0.1 | customers/products/simulate/chat… | ✅ 与 Agent 共用事实源 | +| 前端 `web/` | 四角色 Dashboard + Chat + 风控/问数页 | ✅ Live Demo 主界面 | + +**未在答辩展开:** sprint 集成债、全量 pytest 基线、生产部署与 `app_env` 登录门禁(见 MEMORY §0 · 知识点 §八)。 + +## 2.3 答辩准备清单(摘自开发计划 §8.3) + +| 交付物 | 本仓库对应 | +| --- | --- | +| PPT | [`05-答辩PPT.md`](05-答辩PPT.md) → `presentation/index.html` | +| Demo 脚本 | `docs/答辩/DEMO-SOP-答辩全流程.md` · `DEMO-SOP-问数.md` | +| API 文档 | [`04-API接口文档.md`](04-API接口文档.md) | +| 架构/数据流 | 幻灯片 Mermaid + `docs/项目框架设计/表设计/00-架构总览.md` | +| 问答预案 | `docs/答辩/答辩知识点清单.md` §九 | diff --git a/docs/答辩/提交物料/03-表设计文档.md b/docs/答辩/提交物料/03-表设计文档.md new file mode 100644 index 0000000..00ab13b --- /dev/null +++ b/docs/答辩/提交物料/03-表设计文档.md @@ -0,0 +1,28 @@ +# 3 · 表的设计文档(答辩提交说明) + +> **答辩提交请附全文:** [`docs/项目管理/03-表设计文档.md`](../../项目管理/03-表设计文档.md)(给人看的字典 · 约 650 行) +> **DDL 原文:** [`docs/项目框架设计/表设计/`](../../项目框架设计/表设计/) · Core [`scripts/core/01-ddl.sql`](../../../scripts/core/01-ddl.sql) + +## 3.1 分层一览(口播用) + +| 存储 | 库/组件 | 职责 | +| --- | --- | --- | +| MySQL | `jinrong_core` | L0 正式档案 · 持仓 · 流水 · 产品 · **转换受理/批次**(只读给 Agent,写经 simulate/convert 网关) | +| MySQL | `jinrong_agent` | 会话 · 审计 · L1/L2/L3 · 预警 · 专用表 11+5 | +| Redis | :6380 | 会话窗口 · 画像热读 · 限流 · Chat 交易抽槽 | +| Neo4j | Desktop | 归属 · 持仓图 · R-02 关系查询(同步自 Core) | +| Milvus Lite | `data/milvus.db` | 产品/制度 RAG(bge-m3 1024 维) | + +## 3.2 2026-09-13 相对初版计划的增量(答辩若被问到「表有没有增」) + +| 主题 | 说明 | 深读 | +| --- | --- | --- | +| 申赎写侧 | `core_share_lot` + **`core_holding` 网关同步**(与转换确认段口径一致) | MEMORY 地图 · `trade_gateway` | +| 基金转换 T+1 | `core_convert_request` · `core_convert_lot_detail` · 交易日历 | [`架构设计-基金转换交易.md`](../../项目框架设计/架构设计-基金转换交易.md) | +| 顾问合并 | `scripts/agent/migrate-advisor-agent-sprint1-3.sql` 专用表 | 理财顾问合并说明 | + +## 3.3 红线(合规口播) + +- **审计类表只 INSERT**(`audit_log` 等)。 +- **L0 正式 C 档不可被 L1/L2/L3 覆盖**。 +- **适当性阻断**落 `risk_suitability_log` + 网关/simulate 口径一致。 diff --git a/docs/答辩/提交物料/04-API接口文档.md b/docs/答辩/提交物料/04-API接口文档.md new file mode 100644 index 0000000..8b895a8 --- /dev/null +++ b/docs/答辩/提交物料/04-API接口文档.md @@ -0,0 +1,45 @@ +# 4 · API 接口文档(答辩提交说明) + +## 4.1 契约正文(必附) + +| 文档 | 职责 | +| --- | --- | +| [`docs/项目框架设计/接口契约-代销平台API-v0.1.md`](../../项目框架设计/接口契约-代销平台API-v0.1.md) | **Canonical REST**:业务域路由 · 命名 · v0.1 端点 · Agent 迁移表 | +| [`docs/项目框架设计/接口契约-代销平台API-v0.2-行情扩展草案.md`](../../项目框架设计/接口契约-代销平台API-v0.2-行情扩展草案.md) | 净值快照 / sync 扩展(Phase B 草案) | +| [`docs/项目管理/04-从需求到公共API开发方法.md`](../../项目管理/04-从需求到公共API开发方法.md) | 需求 → Service → API 分批方法 | + +## 4.2 与答辩 Demo 直接相关的路由分区 + +```text +/api/auth/login Mock JWT(四角色 demo 账号) +/api/customers/* 客户 L0 · 持仓 · 流水 +/api/products/* 产品 · 净值 · nav/history +/api/simulate/trade 模拟申赎/convert(适当性网关) +/api/risk/* 预警 · AML · 适当性 check · 转换管理端 +/api/chat/* 四 Agent 对话(含 SSE) +/api/analyst/* 问数 · interpret · analyze · 模板 +/api/advisor-agent/* 理财师合规 · 异动 · KYC · 模板 +GET /api/ready Redis + 关键路由自检 +GET /docs FastAPI OpenAPI(Swagger) +``` + +**当前 OpenAPI 路径规模:** 约 **66** 条(以本机 `/openapi.json` 或 CT-001 自检为准)。 + +## 4.3 导出 OpenAPI(可选附件) + +后端本地启动后: + +```powershell +Invoke-WebRequest "http://127.0.0.1:8000/openapi.json" -OutFile "openapi-merger.json" +``` + +浏览器打开 `http://127.0.0.1:8000/docs` 可交互试调(答辩 Live Demo 用 curl/前端即可,不必现场导 Swagger)。 + +## 4.4 NL2SQL / NL2API / RAG 在 API 层的落点(对照答辩须知) + +| 能力 | 答辩怎么说 | 主要 API / 机制 | +| --- | --- | --- | +| RAG 知识问答 | 客户/顾问问产品规则 | Chat Tool → Milvus `kb_product_rules` | +| GraphRAG / 图谱 | 持仓与适当性关系 | Neo4j 同步 + Tool Cypher(非第二套 LLM) | +| NL2SQL | 问数工作台 | `POST /api/analyst/query` + sql_guard + `analytics_query_log` | +| NL2API(业务操作) | 模拟交易 · 转换受理 | `POST /api/simulate/trade` · convert 202 受理模型 | diff --git a/docs/答辩/提交物料/05-答辩PPT.md b/docs/答辩/提交物料/05-答辩PPT.md new file mode 100644 index 0000000..63689dd --- /dev/null +++ b/docs/答辩/提交物料/05-答辩PPT.md @@ -0,0 +1,26 @@ +# 5 · 答辩 PPT(答辩提交说明) + +## 5.1 源文件(维护处) + +| 文件 | 职责 | +| --- | --- | +| [`docs/答辩/presentation/index.html`](../presentation/index.html) | HTML 幻灯片(Mermaid 架构 · 四 Agent · Demo 动线 · 合规铁律) | +| [`docs/答辩/presentation/README.md`](../presentation/README.md) | 操作说明 · CDN 依赖 · 与 SOP 同步约定 | + +**内容同步源:** `DEMO-SOP-答辩全流程.md` · `答辩知识点清单.md` · `答辩稿.md`(业务口径,不含测试失败数)。 + +## 5.2 导出 PDF(提交评委用) + +1. 用 Chrome/Edge 打开 `presentation/index.html`(需联网:字体 / Mermaid / Rough.js)。 +2. **Ctrl+P** → 目标 **另存为 PDF** → 边距 **无** 或 **最小**。 +3. 建议文件名:`JinRong-四Agent答辩-2026-09-13.pdf` + +## 5.3 现场翻页 + +- **← → / 空格**:翻页 +- **F11**:全屏 +- 口播对照 [`docs/答辩/答辩稿.md`](../答辩稿.md),不必逐页念幻灯片备注。 + +## 5.4 若必须用 .pptx + +仓库不提供 `.pptx` 源。路径:**PDF → PowerPoint「从 PDF 导入幻灯片」**,或按 `index.html` 章节手工重做(不推荐,易与 SOP 漂移)。 diff --git a/docs/答辩/提交物料/06-需求文档.md b/docs/答辩/提交物料/06-需求文档.md new file mode 100644 index 0000000..568f8ad --- /dev/null +++ b/docs/答辩/提交物料/06-需求文档.md @@ -0,0 +1,28 @@ +# 6 · 需求文档(答辩提交说明) + +## 6.1 验收对照主文档(必附) + +| 文档 | 职责 | +| --- | --- | +| [`docs/memory/REQUIREMENTS.md`](../../memory/REQUIREMENTS.md) | Wave 0~3 · 场景 ID(F/C/A/D/R)· 实现状态 | +| [`docs/需求拆解/业务场景优先级清单.md`](../../需求拆解/业务场景优先级清单.md) | P0 场景全表(来源用户故事) | +| [`docs/需求拆解/Agent风险与合规约束汇总.md`](../../需求拆解/Agent风险与合规约束汇总.md) | 合规红线 | +| [`docs/需求拆解/数据交互矩阵.md`](../../需求拆解/数据交互矩阵.md) | 四 Agent 数据读写矩阵 | + +## 6.2 分 Agent PRD / 深读 + +| 线 | 文档 | +| --- | --- | +| 风控 | [`docs/PRD/PRD-风控监测Agent.md`](../../PRD/PRD-风控监测Agent.md)(v1.1 冻结) | +| 基金转换 | [`docs/PRD/PRD-基金转换交易.md`](../../PRD/PRD-基金转换交易.md) | +| 顾问 | [`docs/开发文档/53-顾问Agent实现需求与开发计划.md`](../../开发文档/53-顾问Agent实现需求与开发计划.md) | +| 问数 | [`docs/需求拆解/01-数据分析Agent需求规格.md`](../../需求拆解/01-数据分析Agent需求规格.md) | + +## 6.3 本轮范围(答辩 30 秒版) + +- **做:** 四角色对话 + 代销只读/模拟写 + 合规审计 + 问数留痕 + 风控人工处置。 +- **不做:** 自动交易、Agent 互调 LLM、自动冻户、生产 Core 对接。 + +## 6.4 用户故事原件(可选附件) + +`docs/需求拆解/用户故事/` 下四角色 `.docx` · [`平台与行业背景.md`](../../需求拆解/用户故事/平台与行业背景.md) · [`四角色行业调研.md`](../../需求拆解/用户故事/四角色行业调研.md) diff --git a/docs/答辩/提交物料/README.md b/docs/答辩/提交物料/README.md new file mode 100644 index 0000000..8c70021 --- /dev/null +++ b/docs/答辩/提交物料/README.md @@ -0,0 +1,41 @@ +# 答辩文本提交物料(对照客户清单) + +> 客户清单原文:`docs/来自客户的项目资料/金融/答辩所需文本交付物清单.txt` +> 答辩流程与时长:`docs/来自客户的项目资料/金融/答辩须知.md` +> **上台口径**(不口播缺陷/测试数):`docs/答辩/README.md` + +本目录为**提交用索引 + 汇编页**;正文以仓库内 canonical 文档为准,避免双份漂移。打包答辩 ZIP 时,按下列 **6 项**各取「提交路径」即可。 + +| # | 客户要求 | 状态 | 本仓库提交路径(答辩包) | Canonical 正文(维护处) | +| --- | --- | --- | --- | --- | +| 1 | 每日会议纪要 | ✅ 已备 | [`01-每日会议纪要.md`](01-每日会议纪要.md) | [`docs/项目管理/01-每日会议纪要模板与流程.md`](../../项目管理/01-每日会议纪要模板与流程.md) · 示例见模板 §7 · 归档 [`docs/项目管理/纪要/`](../../项目管理/纪要/) | +| 2 | 开发计划 | ✅ 已更新 | [`02-开发计划.md`](02-开发计划.md) | [`docs/项目管理/02-项目开发计划.md`](../../项目管理/02-项目开发计划.md) **§11 快照 2026-09-13** | +| 3 | 表的设计文档 | ✅ 已更新 | [`03-表设计文档.md`](03-表设计文档.md) | [`docs/项目管理/03-表设计文档.md`](../../项目管理/03-表设计文档.md) · SQL [`docs/项目框架设计/表设计/`](../../项目框架设计/表设计/) | +| 4 | API 接口文档 | ✅ 已备 | [`04-API接口文档.md`](04-API接口文档.md) | [`docs/项目框架设计/接口契约-代销平台API-v0.1.md`](../../项目框架设计/接口契约-代销平台API-v0.1.md) · v0.2 行情草案 | +| 5 | 答辩 PPT | ✅ 已备 | [`05-答辩PPT.md`](05-答辩PPT.md) | [`docs/答辩/presentation/index.html`](../presentation/index.html) → 浏览器 **Ctrl+P 导出 PDF** | +| 6 | 需求文档 | ✅ 已备 | [`06-需求文档.md`](06-需求文档.md) | [`docs/memory/REQUIREMENTS.md`](../../memory/REQUIREMENTS.md) · [`docs/需求拆解/`](../../需求拆解/) · 各线 PRD | + +## 答辩现场配套(非文本清单项 · 建议一并带) + +| 中文职责 | 路径 | 用途 | +| --- | --- | --- | +| 口播主稿 | [`docs/答辩/答辩稿.md`](../答辩稿.md) | 12~15 分钟 | +| Live Demo 脚本 | [`docs/答辩/DEMO-SOP-答辩全流程.md`](../DEMO-SOP-答辩全流程.md) | 四角色动线 | +| 问数分册 | [`docs/答辩/DEMO-SOP-问数.md`](../DEMO-SOP-问数.md) | NL2SQL / interpret / analyze | +| 知识点 + Q&A | [`docs/答辩/答辩知识点清单.md`](../答辩知识点清单.md) | 备查;§八工程项不上台 | +| Demo 自测(内部) | [`docs/答辩/DEMO-功能测试流程.md`](../DEMO-功能测试流程.md) | 不对评委念 | + +## 建议打包顺序(ZIP) + +```text +答辩提交/ + 01-每日会议纪要.md + 02-开发计划.md + 03-表设计文档.md ← 或附 项目管理/03-表设计文档.md 全文 + 04-API接口文档.md ← 附 接口契约-v0.1.md + 可选 OpenAPI 导出 + 05-答辩PPT.pdf ← 由 presentation/index.html 打印 + 06-需求文档.md ← 附 REQUIREMENTS.md + 业务场景优先级清单.md + (可选)答辩稿.md · DEMO-SOP-答辩全流程.md +``` + +**维护:** 改 Demo 口径或 Wave 进度时,同步更新 canonical 文档 + 本表「状态」列;§11 开发计划快照见 `02-项目开发计划.md`。 diff --git a/docs/答辩/答辩知识点清单.md b/docs/答辩/答辩知识点清单.md index 3bf80c0..4b7a35f 100644 --- a/docs/答辩/答辩知识点清单.md +++ b/docs/答辩/答辩知识点清单.md @@ -222,6 +222,7 @@ | **口播答辩稿** | `docs/答辩/答辩稿.md` | | **Demo 功能测试** | `docs/答辩/DEMO-功能测试流程.md` | | **HTML 幻灯片** | `docs/答辩/presentation/index.html` | +| **客户文本交付 6 项(打包索引)** | `docs/答辩/提交物料/README.md` | | 端到端链路与 bootstrap | `docs/memory/FLOW.md` | | 选型与分层 | `docs/memory/FRAMEWORK.md` | | 场景 ID 对照 | `docs/memory/REQUIREMENTS.md` | @@ -240,4 +241,17 @@ --- +## 十一、客户《答辩所需文本交付物清单》对照(2026-09-13) + +| # | 客户项 | 提交用 | 正文维护处 | +| --- | --- | --- | --- | +| 1 | 每日会议纪要 | `docs/答辩/提交物料/01-每日会议纪要.md` + `docs/项目管理/纪要/2026-09-13.md` | `docs/项目管理/01-…模板.md` §7 示例 | +| 2 | 开发计划 | `docs/答辩/提交物料/02-开发计划.md` | `docs/项目管理/02-项目开发计划.md` §11 | +| 3 | 表设计 | `docs/答辩/提交物料/03-表设计文档.md` | `docs/项目管理/03-表设计文档.md` | +| 4 | API 文档 | `docs/答辩/提交物料/04-API接口文档.md` | `接口契约-代销平台API-v0.1.md` | +| 5 | 答辩 PPT | PDF 自 `presentation/index.html` 打印 | `提交物料/05-答辩PPT.md` | +| 6 | 需求文档 | `docs/答辩/提交物料/06-需求文档.md` | `docs/memory/REQUIREMENTS.md` + `docs/需求拆解/` | + +--- + **配套:** 总览课模块 8 把本节压成滚动动效 + 测验;各 Agent 深潜课与 §四 一一对应。 \ No newline at end of file diff --git a/docs/答辩/答辩稿.md b/docs/答辩/答辩稿.md index 481a80b..e57e619 100644 --- a/docs/答辩/答辩稿.md +++ b/docs/答辩/答辩稿.md @@ -92,6 +92,13 @@ | 数字从哪来? | 客服/看板走 Core 只读;问数走 SQL 护栏;解读与表对齐。 | | 交易谁说了算? | 适当性在网关;确认后写模拟账,看板与助手同源刷新。 | | 和真银行系统关系? | 演示用模拟 Core,验证**业务流程与合规设计**,不是生产托管对接。 | +| **开发中是否用 Vibe Coding?遇到过什么坑?** | **有。** 四 Agent + 双库 + 合规铁律,靠 AI 辅助写代码和测试很快,但**三类坑**要人工把关:① **文档/测试与实现漂移**(例如登录从 `/api/v1` 改 canonical 后,仓库外 E2E 集体失效;pytest ignore-glob 写错导致「假绿基线」)—— 对策:**MEMORY/TODO + 端到端包** 先报告再修;② **合规口径不能交给模型猜**(C3×R4 需揭示:前端、对话、网关必须同口径)—— 对策:**L0 矩阵 + 单点网关** 写死在代码;③ **演示数据与断言**(holding 与 lot 不一致)—— 对策:Demo 前 `prepare_all` / 用**前后差值**叙事。经验:**契约先行、小步提交、真 HTTP/浏览器取证**,比「一次 prompt 全绿」可靠。 | + +--- + +## 10. 必问主观题 · Vibe Coding(答辩须知) + +见上表最后一行;可口语化 1 分钟,**不展开具体 FAIL 数字**(细节见知识点 §八 · 内部测试包)。 --- diff --git a/docs/项目框架设计/接口契约-代销平台API-v0.1.md b/docs/项目框架设计/接口契约-代销平台API-v0.1.md index 60462fa..6621eaf 100644 --- a/docs/项目框架设计/接口契约-代销平台API-v0.1.md +++ b/docs/项目框架设计/接口契约-代销平台API-v0.1.md @@ -1,8 +1,8 @@ # 接口契约 · 代销平台 API v0.1 -> 状态:**v0.1 已实现(2026-09-08)** · 519 pytest 绿 +> 状态:**v0.1 已实现** · OpenAPI 约 **66** 路径(2026-09-13 CT-001 自检) > 范围:**未接 Agent 前的 Core 代销平台 REST**(客户 App / 理财师工作台 / 内勤只读) -> 关联:[04-从需求到公共API开发方法.md](../项目管理/04-从需求到公共API开发方法.md) · [02-JWT-RBAC鉴权手册.md](./技术选型和版本/02-JWT-RBAC鉴权手册.md) +> 关联:[04-从需求到公共API开发方法.md](../项目管理/04-从需求到公共API开发方法.md) · [02-JWT-RBAC鉴权手册.md](./技术选型和版本/02-JWT-RBAC鉴权手册.md) · 答辩索引 [`docs/答辩/提交物料/04-API接口文档.md`](../答辩/提交物料/04-API接口文档.md) --- diff --git a/docs/项目管理/02-项目开发计划.md b/docs/项目管理/02-项目开发计划.md index 08c6d31..706ff6f 100644 --- a/docs/项目管理/02-项目开发计划.md +++ b/docs/项目管理/02-项目开发计划.md @@ -16,7 +16,7 @@ | 团队规模 | 5 人(P1~P5),全栈新手 | | 里程碑 | M0 启动 → M1~M5 对应 Phase 1~5 | | 验收节奏 | 每周五 Demo + 答辩在第 5 周末 | -| 当前日期 | 2026-09-07(本计划制定日) | +| 0 | 当前日期 | 2026-09-13(§11 快照已更新 · 答辩周) | --- @@ -314,37 +314,32 @@ Demo 脚本(P1 主持): --- -## 11. 当前状态快照(2026-09-07) +## 11. 当前状态快照(2026-09-13 · 答辩周) -### 11.1 Wave 0 已完成项 +> 开发自用细节见 [`docs/memory/MEMORY.md`](../memory/MEMORY.md) §0 · 答辩提交摘要见 [`docs/答辩/提交物料/02-开发计划.md`](../答辩/提交物料/02-开发计划.md) -- [x] FastAPI 骨架 + /health + settings 双库配置 -- [x] core_ro.py(Core 只读 + check_suitability)+ suitability.py(R-02 log 映射) -- [x] Core 模拟库 scripts/core/* + reset.ps1(33 客户 / 14 产品 / KYC / C×R 矩阵 / AML) -- [x] sync_advisor_rel.py + sync_neo4j.py -- [x] JWT/RBAC 中间件、审计落库、trace_id、Mock 登录、统一 /api/chat、LangGraph echo 骨架、输入防护(9 个测试通过) -- [x] Core 模拟库 + agent 库已灌库 -- [x] Milvus/Neo4j 已灌基础数据 -- [x] 需求拆解、表设计、技术选型、JWT 手册、画像/适当性文档 +### 11.1 已交付(可 Demo) -### 11.2 Wave 0 待完成项 +- [x] Wave 0:JWT/RBAC · 审计/trace · Core 只读 · 输入防护 · Mock 登录 · `/api/ready` +- [x] Wave 1:问数 NL2SQL + 模板/缓存/analyze · 顾问 `/api/advisor-agent/*` 接缝 +- [x] Wave 2:风控 R-01~R-05 · 模拟网关 · **基金转换 T+1**(受理/确认分离) +- [x] Wave 3:客服 LangGraph + RAG · 选购清单 · **客户交易中心/行情快捷交易** +- [x] 代销平台 API v0.1 + 前端四角色 `web/` 主链路 +- [x] 答辩材料:`docs/答辩/`(稿 · SOP · 幻灯片 · **提交物料 6 项**) -- [ ] DeepSeek 真 LLM 接入(client 封装) -- [ ] 前端 web/ init -- [ ] agent 专用 5 表灌库验收(02-mysql-agent专用.sql) -- [ ] kb_product_rules 首批产品入库 -- [ ] /api/chat 真实闭环(echo → 真 LLM) -- [ ] R-02 风控 service 落 log 联调 +### 11.2 进行中 / 答辩不展开 -### 11.3 关键待办(见 TODO.md) +- [ ] `merger` 工作区多批功能 **待你确认后 commit**(客户交易 · 字体栈 · E2E 证据) +- [ ] 顾问 `test_sprint*` 集成与陈旧 DDL 期望(F-α · 转 sqlite 后暴露) +- [ ] 全量 `pytest` **非幂等**(F-η)—— 不以单次 passed 数作唯一门闸 +- [ ] 登录 `/api/auth/login` 的 **`app_env` 生产门禁**(P0 方向② · 已拍板答辩后部署前再修) +- [ ] 「网点办理」文案 vs 无理财师交易 API(F-β 记账 · 答辩口径:一期线下未实现) -- T-01 Auth SDK / JWT 中间件(已实现,待真 LLM 联调) -- T-06 挂载 app.api 路由到 main.py;chat 最小闭环 -- T-07 LangGraph agent_service StateGraph 骨架 + DeepSeek -- T-04 Core RO 封装为 Tool 节点;A-01 归属校验 -- T-31 R-02 风控 service 落 log -- T-21 Milvus Lite + kb_product_rules 首批入库 -- 前端 React 多 Agent 入口 +### 11.3 关键文档入口 + +- 待办:[`docs/memory/TODO.md`](../memory/TODO.md) +- 端到端证据:[`docs/memory/tests/`](../memory/tests/)(CT-001 · AN-003 · AD-001 · RK-001 · XC-001) +- Bootstrap:[`docs/memory/FLOW.md`](../memory/FLOW.md) §0 --- diff --git a/docs/项目管理/03-表设计文档.md b/docs/项目管理/03-表设计文档.md index bc9d8b1..1261763 100644 --- a/docs/项目管理/03-表设计文档.md +++ b/docs/项目管理/03-表设计文档.md @@ -321,7 +321,25 @@ | 用途 | 客户持仓(份额、成本、市值、盈亏) | | 关键字段 | `customer_id` · `product_id` · `qty` · `cost_amount` · `market_value` · `pnl_pct` · `as_of` | | 关键查询 | C-01 持仓问答;A-01 客户概况 | -| 关联 | ← `core_customer` · `core_product` | +| 关联 | ← `core_customer` · `core_product` · **`core_share_lot`(FIFO 批次;申赎/转换确认后网关同步快照 qty)** | +| 2026-09-13 | 模拟申赎经 `trade_gateway` 维护批次并 **UPSERT `core_holding`**;读侧另有 `list_holdings_from_lots_gap` 补偿历史只写 lot 的演示态 | + +### 3.8a `core_share_lot` · 份额批次(FIFO) + +| 项 | 内容 | +| --- | --- | +| 用途 | 申赎/转换按批次扣减与追溯(赎回费按持有天数分档) | +| 关键字段 | `lot_id` · `remain_qty` · `nav` · `confirmed_at` | +| 谁写 | 模拟网关写侧(subscribe/redeem/convert 确认段) | +| 关联 | 与 `core_holding` 快照一致化;转换见 `core_convert_lot_detail` | + +### 3.8b `core_convert_request` · 基金转换受理单(T+1) + +| 项 | 内容 | +| --- | --- | +| 用途 | T 日**受理**(不扣份额);T+1 **确认**扣批/写流水 | +| 关键字段 | `convert_group_id` · `client_request_id`(幂等)· `status` · `accept_date` / 确认日 | +| 深读 | [`架构设计-基金转换交易.md`](../项目框架设计/架构设计-基金转换交易.md) | ### 3.9 `core_trade` · 交易流水(含 AML 字段) diff --git a/docs/项目管理/README.md b/docs/项目管理/README.md index 41bc192..611e005 100644 --- a/docs/项目管理/README.md +++ b/docs/项目管理/README.md @@ -14,7 +14,8 @@ | 2 | [02-项目开发计划.md](./02-项目开发计划.md) | 项目级 5 周计划:Wave×Phase 双视角、依赖链、周验收门、第1周天级、风险、答辩准备 | 每周初、里程碑评审 | | 3 | [03-表设计文档.md](./03-表设计文档.md) | 给人看的表设计字典:MySQL双库/Redis/Neo4j/Milvus 分层、谁写谁读、关键字段中文释义、建表顺序 | 写代码查表、联调对字段 | | 4 | [04-从需求到公共API开发方法.md](./04-从需求到公共API开发方法.md) | **方法论文档**:需求→矩阵→存储→Service→API→Agent 主线、分批策略、统筹分工、Phase A 接口清单 | 搭公共底座/API 前;新人 onboarding | -| 5 | [../项目框架设计/接口契约-代销平台API-v0.1.md](../项目框架设计/接口契约-代销平台API-v0.1.md) | **代销平台 REST 契约**:业务域路由、命名规范、v0.1 端点、Agent 合并迁移表 | 写平台 API / Review Agent 重复接口 | +| 5 | [../项目框架设计/接口契约-代销平台API-v0.1.md](../项目框架设计/接口契约-代销平台API-v0.1.md) | **代销平台 REST 契约** | 写平台 API / Review Agent 重复接口 | +| — | [../答辩/提交物料/README.md](../答辩/提交物料/README.md) | **答辩文本 6 项提交索引**(对照客户清单) | 打包答辩 ZIP | | 6 | [../项目框架设计/C-05-行情数据源选型对比.md](../项目框架设计/C-05-行情数据源选型对比.md) | **C-05 净值/行情数据源**:P0 种子 vs Phase B 第三方 sync vs 生产 Wind/Choice | 答辩、发群、Phase B 拍板 | | 7 | [../项目框架设计/接口契约-代销平台API-v0.2-行情扩展草案.md](../项目框架设计/接口契约-代销平台API-v0.2-行情扩展草案.md) | **v0.2 草案**:`nav-snapshot` · `sync_market_nav` · 前端/Agent 契约 | 做产品行情页 Phase B、后端 sync | diff --git a/docs/项目管理/纪要/2026-09-13.md b/docs/项目管理/纪要/2026-09-13.md new file mode 100644 index 0000000..371400c --- /dev/null +++ b/docs/项目管理/纪要/2026-09-13.md @@ -0,0 +1,60 @@ +# 每日会议纪要 · 2026-09-13 + +## ① 基本信息 + +| 项 | 内容 | +| --- | --- | +| 日期 | 2026-09-13(周六 · 答辩准备日) | +| 里程碑 | M5 演示与答辩材料收口 | +| 主持人 | 项目组统筹 | +| 参会人 | 全员(垂直负责人) | +| 缺席人 | 无 | + +## ② 昨日完成 + +| 成员 | 完成事项(对照场景编号) | 状态 | +| --- | --- | --- | +| 平台 | 客户线 CT-001 缺陷修复(P0 鉴权 / P1 自助适当性 / L1 幂等)+ E2E 复跑取证 | 🟢 | +| 平台 | 第五轮 E2E:问数/理财师/风控/横切 HTTP 包 + 8 支浏览器脚本收仓 | 🟢 | +| 前端 | 客户交易中心 · 行情快捷交易 · Inter/Radix 设计栈(待 commit) | 🟡 | +| 测试 | sprint 单测写真库根因修复(F-ε);陈旧 `/api/v1` 登录迁移 | 🟢 | + +## ③ 今日计划 + +| 成员 | 今日交付(最小可验证单元) | 对应场景 | +| --- | --- | --- | +| 全员 | 对照客户《答辩所需文本交付物清单》整理 6 项文本 + PPT 导出 PDF | 答辩 | +| 平台 | `prepare_all.ps1` + `restart-dev.ps1` 答辩前 60 分钟自检 | F-01~F-04 | +| 主讲 | 答辩稿 + DEMO-SOP 全流程预演一遍(≤15 分钟) | 四 Agent Demo | + +## ④ 阻塞问题 + +| 成员 | 阻塞描述 | 状态 | +| --- | --- | --- | +| 演示 | [Redis 未起] Blocked by [会话/问数缓存] → 解锁了 [CT11 序号续槽对照轮] | 可选(答辩不强制停 Redis) | +| 文案 | [「网点办理」引导] Blocked by [无理财师侧交易 API] → 已拍板答辩口径为「一期线下未实现」 | 已记录 | + +## ⑤ 任务调整 + +| 调整项 | 从谁 | 到谁 | 原因 | +| --- | --- | --- | --- | +| convert 单测 28 条红 | 改业务放行 | **只改测试前提(F-β 选 A)** | C3×R4 自助阻断为设计意图,非缺陷 | +| 答辩 PPT | 重画架构 | **沿用 HTML 幻灯片 + 打印 PDF** | 与 SOP/知识点清单同步维护 | + +## ⑥ 决议 + +| 决议 | 责任人 | 截止时间 | +| --- | --- | --- | +| 文本交付 6 项以 `docs/答辩/提交物料/` 为提交索引 | 文档 | 2026-09-13 | +| 上台不口播 pytest/E2E 失败数;工程细节放知识点 §八 | 主讲 | 答辩前 | +| 必答题「Vibe Coding 坑与经验」写入答辩稿 §10 | 主讲 | 2026-09-13 | + +## ⑦ 风险提示 + +- 演示库若未 `reset.ps1`,持仓快照与批次和可能不一致(B1)—— Demo 用前后差值叙事,不对评委报绝对数。 +- `pytest` 全量非幂等(F-η),答辩前自检以 **Demo 功能测试 P0** 为准,不以单次 pytest 数为唯一门闸。 + +## ⑧ 下次会议 + +- 时间:答辩当日 Demo 前 60 分钟(见 `docs/答辩/README.md`) +- 预计重点:`DEMO-功能测试流程.md` P0 项 + 四角色账号登录