# PPT 与海报生成全链路 Phase 2~5 阶段实施记录 日期:2026-08-02 依据:`PPT与海报生成全链路详细修复计划书_20260802.md` ## 已完成 ### Phase 2:候选、校验与复核基础 - 新增 FieldValue 创建、校验和候选合并;文件名/上下文提示不能静默覆盖 PDF 候选。 - 不同候选值保留为 `conflict`,证据质量只参与排序,不删除冲突候选。 - 新增通用 PlanData 结构校验;确认时阻断冲突、缺失基础身份字段和无证据导出金额。 - PPT 复核页递归记录字段/表格修改,人工修改必须填写原因并由后端持久化。 - 未写入任何未经业务确认的保险推导公式。 ### Phase 3:唯一不可变快照 - 新增 `migrate_037.py`:`insurance_plan_snapshots`、`insurance_field_evidence`、`insurance_plan_overrides`。 - 新增创建、查询、乐观锁编辑、校验、确认、证据、海报投影和 DeckContract API。 - confirmed 快照不可原地改值;编辑和重新确认始终创建新版本并保留 previous link。 - 海报确认生成 confirmed snapshot;海报文案和生成只消费 snapshot projection。 - PPT 复核确认生成每份文档的 confirmed snapshot;生成任务冻结所有 DeckContract。 - PPT Worker 不再读取 `session.extractions_json` 作为生成事实输入。 ### Phase 4:服务端场景解析基础 - 新增 `/insurance/ppt/scenarios/resolve`,仅接受当前用户的 confirmed snapshots。 - 前端删除本地险种数量场景推断,展示服务端场景和 matchTrace。 - 用户明确场景不兼容时后端阻断,不再静默替换。 完整的 ScenarioDefinition、GenerationPolicy、TemplateDefinition 版本表和 draft/validate/publish 管理后台尚未落地;它们需要获批样本和保险公式口径。 ### Phase 5:任务冻结与输出门禁基础 - 新增 `migrate_039.py`,记录 snapshot/scenario/policy/template/renderer 版本、submit revision、对账和视觉检查结果。 - 任务完成时按 submit revision 标记 `current` 或 `stale`;stale 成品不覆盖当前工作区。 - 新增无 Office 依赖的 PPTX XML 数值/币种对账;检测到冻结契约之外的金额或币种时任务失败并阻止下载。 - 文档统一入口支持上传、表格查询和异步字段提取任务。 ## 验证 - 后端目标回归:133 passed,3 skipped。 - Python compileall、Vue TypeScript、前端生产构建均纳入最终复跑。 ## 仍受阻的发布门禁 - Goldens 仍为 0;无法声称达到 99.5% 标量精确率、99% 单元格精确率或 100% 导出证据覆盖率。 - 未确认各险种公式、强制字段、场景口径和跨产品可比条件,不能发布 GenerationPolicy。 - 未确认源 PDF、IR、快照、证据和成品留存期限,不能启用到期实删。 - 现有模板资产尚未逐个完成语义 slot 标注和真实样本渲染,不能把旧模板自动标记为 published。 - LibreOffice/Office/WPS 的最终打开和视觉回归仍需部署环境执行。