baodan/docs/PPT与海报首迭代实施记录_20260802.md
wsb1224 7a3e2870dc 主要成果:
海报确认、文案生成、海报生成增加服务端失败关闭门禁,绑定文件哈希、解析快照哈希和确认数据哈希,并返回 422 业务错误。[validators.py (line 65)](D:/work/code/python/coding/baodanagent/api/insurance/plan_data/validators.py:65)
缺失金额不再转换为 0;删除错误字段兜底和“年缴×年期=合同总保费”事实推导;里程碑冲突会阻断确认。[normalizer.py (line 14)](D:/work/code/python/coding/baodanagent/api/insurance/ppt/normalizer.py:14)
PPT 渲染器支持可空金额和实际币种,缺失值显示“待确认”,避免 float(None)、空值除法等异常。
模板必须覆盖全部输入保司和产品;自动选择排序确定化,同优先级歧义时阻断。[template_selection.py (line 4)](D:/work/code/python/coding/baodanagent/api/insurance/ppt/template_selection.py:4)
场景判定写入 scenarioOverrideTrace,记录请求、模板、服务端及 Worker 最终判定。[routes.py (line 555)](D:/work/code/python/coding/baodanagent/api/insurance/ppt/routes.py:555)
前端增加哈希提交、人工调整原因、模板歧义提示及真实能力说明。
冻结三份核心 Schema,并建立 Goldens manifest、说明和评估脚本。
验证结果:
后端目标回归:111 passed, 1 skipped
PPT 运行时回归:81 passed
前端生产构建和 vue-tsc:通过
Python compileall:通过
三份 Schema JSON:解析通过
git diff --check:通过,仅有换行符提示
2026-08-02 12:58:41 +08:00

65 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PPT 与海报生成全链路首迭代实施记录
日期2026-08-02
依据:`PPT与海报生成全链路详细修复计划书_20260802.md`
## 1. 本轮范围
本轮完成计划书“立即执行的第一轮迭代”中的 P0-A、P0-B、P0-C并建立 Goldens 与三份核心 Schema 的基础设施。计划书中 Phase 16 的长期改造不在本轮范围内。
## 2. 已完成变更
### P0-A 确认与生成门禁
- 确认时校验文件实际 SHA-256、上传记录哈希和前端提交哈希一致。
- 确认时校验解析快照哈希,阻断基于过期解析结果的确认。
- 对币种、年龄、缴费金额、关键利益字段、产品匹配和来源页执行服务端业务校验。
- 手工修改关键字段必须填写覆盖原因;确认快照写入 Schema 版本和各级哈希。
- 海报生成和文案重生成再次执行同一套门禁,禁止绕过确认接口直接生成。
- 业务校验失败统一返回 HTTP 422审计日志仅记录哈希和覆盖原因不写完整敏感快照。
### P0-B 数字口径纠偏
- 缺失或无效数字保留为 `None`,不再归一成 0。
- 移除重疾险、IUL 中不同语义字段之间的兜底映射。
- 移除“年缴保费 × 缴费年期 = 合同总保费”的事实字段推导,只保留明确标记的派生估算字段。
- IRR、回本年和比较指标遇到缺失值时不参与计算。
- 海报显式里程碑与表格冲突时记录未解决冲突,不再静默覆盖。
- PPT 渲染按保单币种展示;缺失数字显示“待确认”;可空金额路径不再执行除法、求和或 `float(None)`
### P0-C 模板确定性
- 模板必须覆盖当前全部保司和全部产品,而不是任意命中一个即通过。
- 自动模板选择采用稳定排序;最高优先级并列时阻断并要求显式选择。
- 前端模板列表采用相同的全量适用规则和确定性排序,并展示歧义提示。
- 管理端明确说明 `slidesConfig` 目前仅控制视觉/元数据,不宣称能控制业务页面结构。
- 任务记录 `scenarioOverrideTrace`包含请求场景、模板场景标签、服务端检测场景、Worker 检测场景和最终场景。
### Schema 与 Goldens
- 冻结 `field-value.schema.json`、`document-ir.schema.json`、`plan-data-snapshot.schema.json` 首版草案。
- 新增 Goldens manifest、使用说明和评估脚本脚本在样本不足时以阻断状态退出。
- 新增 Schema 评审记录,明确迁移 036/037 前仍需产品、精算、合规确认的业务决策。
## 3. 验证结果
- 后端目标回归111 passed1 skipped系统 Python 未安装 `python-pptx`)。
- 使用工作区文档运行时复跑 PPT 相关测试81 passed无跳过。
- 前端生产构建:通过。
- Vue TypeScript 检查:通过。
- Python `compileall`:通过。
- `git diff --check`:通过(仅有仓库既有换行符提示)。
## 4. 未解决项与外部依赖
- Goldens 当前为 0/10仓库内没有经脱敏、经业务批准的真实计划书样本不能用虚构样本替代基线。
- 迁移 036/037 未创建:需先完成 Schema 评审记录中的业务决策,避免把未确认语义固化进数据库。
- 前端 ESLint 暂不能执行:项目使用 ESLint 9但仓库没有 `eslint.config.js`/`mjs`/`cjs` flat config本轮以生产构建和 `vue-tsc` 作为前端静态验证。
- Phase 16完整事实模型、Document IR 持久化、场景规则库、Poster RenderDocument、模板克隆增强、可观测性与发布治理仍按原计划书继续推进。
## 5. 下一轮入口条件
1. 提供至少 10 份脱敏且获批的真实计划书样本及人工标准答案。
2. 产品、精算、合规共同确认三份 Schema 的待决项。
3. 决策通过后再创建迁移 036/037并进入 Phase 1/2。