用途与实际影响
这项功能怎样使用
为什么需要它
分别修改 Word 和 PDF 最容易让日期、请求、附件编号和签名块漂移;覆盖旧输出又会失去可恢复版本。
举个实际例子
我可以说:“把核对后的退款申请做成可编辑版和打印版,两个版本内容必须一致。”系统会从同一份确认内容生成 DOCX 和 PDF;若本机缺少正常导出条件,会说明改用了什么方式以及仍需复核什么。
最后我会得到什么
得到这次确认内容的可编辑 Word、同内容 PDF 和按序附件,知道使用了哪条导出路线。新版本不覆盖旧文件;导出失败时保留已经核对的输入和旧版。
可以继续制作
文字与附件从同一版内容生成并读回一致后,进入逐页检查。
需要修正
Word、PDF 或附件有一项失败时保留输入和旧版,不把临时文件当可递送成品。
当前不可用
生成 PDF 的环境不可用时说明这一环缺口,不拿旧 PDF 冒充本轮输出。
从哪里开始
要求同一份内容同时得到可编辑 Word 和对应 PDF。
需要准备什么
- 这次已确认的内容或要改的段落
- 要附上的材料(如有)
- 主要用于屏幕阅读还是打印
从开始到拿到结果
- 1
系统核对并处理
从同一规范内容生成两种格式,电子版核对层级与导航,确有打印需求再检查纸面效果。
- 2
交付与接续
交回可编辑 DOCX、固定版 PDF 与附件;导出或字体有问题时保留原内容,重新核对页面。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
四类通用材料和隔离安装后的虚构样张都已完成同源生成与复验;真实个人材料本轮未运行关键规则与设计选择
四类材料都实际通过同一 build→verify 合成回归。
内部 document role 与 channel enum 不进入对外正文,页面显示人话类型。
2.0.1 wheel 包含唯一 Word exporter 资源;兼容构建与新入口共用同一实现。
Word 首选路线和 ReportLab fallback(后备路线) 在 manifest(清单) 中分开,不能互相冒充。
本模块用到的名词
- DOCX
- 可继续编辑、修订和批注的 Word 文档;结构正确仍须逐页检查。
- 固定版面输出;它来自同一规范内容,不是另手工维护的一份正文。
- Build ID(构建标识)
- 一次不可覆盖制作的稳定名字;同名存在就拒绝覆盖。
- Fallback(备用引擎)
- Word 不可用时使用的本地 PDF 路线;manifest(清单) 会保留引擎和警告。
专业定义
plan 只定义制作路线;build 才生成 A4 DOCX、PDF、附件和清单。Word 是首选导出器,备用引擎会在 manifest(清单) 中明确记录。
解决什么
解决电子/打印版本分叉、内部代码泄露、旧输出覆盖和安装后静默缺资源。
当前怎样实现
- A4 DOCX 使用宋体正文、黑体标题、页脚页码与统一边距。
- Word exporter 作为 package resource 随 wheel 安装,并以 CREATE_NO_WINDOW 执行。
- Word 导出失败时生成 ReportLab PDF,并把失败原因写入 export.warning。
- DOCX 与 PDF 重新提取正文,逐项核对所有输出驱动字段。
- build 与 release 都通过临时同卷目录完成后原子晋升。
执行流程
- 1
验证 plan
- 2
创建唯一 build 临时目录
- 3
封存规范输入与附件
- 4
生成 DOCX
- 5
导出 PDF 或显式 fallback(后备路线)
- 6
重读字段与签名
- 7
写 build manifest(清单) 并原子晋升
边界
- 只生成明确请求的当前事项
- 不把能打开写成内容正确
- 不覆盖既有build或release
- 备用引擎不冒充Word输出
- 不自动执行外部递送
失败与恢复
- 同名 build 或 release 已存在
- 拒绝覆盖;使用新 build ID 或继续核对既有版本。
- Word 导出不可用
- 显式记录 warning 并尝试本地 fallback(后备路线);fallback(后备路线) 也失败则停止。
- DOCX/PDF 缺输出字段
- 正文读回失败,不形成 ready_for_delivery(已具备递送条件)材料包。
- 附件复制哈希不同
- 删除本轮临时目录,原件与旧构建保持不变。
真实入口
PRIVATE source · formal_documents.pyDOCX/PDF、附件、导出与不可覆盖构建
PRIVATE source · packaged Word exporterwheel 内 Word 固定版导出
PRIVATE tests · four-type build/verify四类材料、Word/fallback(后备路线) 与隔离安装回归
如何验证
- 四类通用材料均完成合成 build→verify。
- 隔离 wheel 两个入口都以 2.0.1 真实使用 Microsoft Word + Poppler。
- DOCX 不含内部角色代码或原始渠道 enum。
- 真实个人正文和真实打印验收本轮未运行。
与其他模块的关系
本模块形成 produced(已生成)或 signed(本人已签)的 build;逐页审计和自包含 release 由下一模块决定是否可进入 ready_for_delivery(已具备递送条件)。
