海报确认、文案生成、海报生成增加服务端失败关闭门禁,绑定文件哈希、解析快照哈希和确认数据哈希,并返回 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:通过,仅有换行符提示
3.8 KiB
3.8 KiB
PPT 与海报生成全链路首迭代实施记录
日期:2026-08-02
依据:PPT与海报生成全链路详细修复计划书_20260802.md
1. 本轮范围
本轮完成计划书“立即执行的第一轮迭代”中的 P0-A、P0-B、P0-C,并建立 Goldens 与三份核心 Schema 的基础设施。计划书中 Phase 1~6 的长期改造不在本轮范围内。
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 passed,1 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/cjsflat config;本轮以生产构建和vue-tsc作为前端静态验证。 - Phase 1~6(完整事实模型、Document IR 持久化、场景规则库、Poster RenderDocument、模板克隆增强、可观测性与发布治理)仍按原计划书继续推进。
5. 下一轮入口条件
- 提供至少 10 份脱敏且获批的真实计划书样本及人工标准答案。
- 产品、精算、合规共同确认三份 Schema 的待决项。
- 决策通过后再创建迁移 036/037,并进入 Phase 1/2。