# .docx 文件处理说明 ## 脚本说明 ### process_templates_docx_only.py 这是一个专门处理已转换为 .docx 格式的模板文档的脚本。 **特点:** - ✅ 只处理 .docx 文件,跳过 .doc 文件 - ✅ 不需要转换功能,直接处理已转换的文档 - ✅ 自动识别文档类型 - ✅ 智能添加占位符 - ✅ 保持原有目录结构 ## 使用步骤 ### 1. 确保文件已转换 确保所有需要处理的文档都已经转换为 .docx 格式,并放在 `模板/原始模板` 目录下。 脚本会自动查找所有子目录中的 .docx 文件,包括: - `模板/原始模板/2-初核模版/1.初核请示/批量改格式_20251207182627/` 目录下的文件 - 其他任何子目录中的 .docx 文件 ### 2. 运行脚本 ```bash python process_templates_docx_only.py ``` ### 3. 检查结果 脚本会: - 扫描所有 .docx 文件 - 识别文档类型 - 添加占位符 - 保存到 `模板` 文件夹(保持目录结构) ## 输出说明 ### 处理成功 ``` 处理: 1.请示报告卡(XXX)_转自DOC.docx 类型: REPORT_CARD 输入: 模板\原始模板\2-初核模版\1.初核请示\批量改格式_20251207182627\1.请示报告卡(XXX)_转自DOC.docx 输出: 模板\2-初核模版\1.初核请示\1.请示报告卡(XXX).docx 处理: 1.请示报告卡(XXX)_转自DOC.docx ✓ 处理成功,替换了 3 处占位符 ``` ### 无法识别类型 ``` ⚠ 无法识别文档类型: 某个文件.docx 路径: 模板\原始模板\...\某个文件.docx ``` ### 处理失败 ``` ✗ 处理失败: [错误信息] ``` ## 文件命名规则 脚本会自动清理文件名: - 移除 `_转自DOC` 后缀 - 移除 `(XXX)`、`(XXX)`、`XXX` 等占位符标记 - 保持原有文件名核心部分 **示例:** - `1.请示报告卡(XXX)_转自DOC.docx` → `1.请示报告卡(XXX).docx` - `2.初步核实审批表(XXX)_转自DOC.docx` → `2.初步核实审批表(XXX).docx` ## 占位符处理逻辑 脚本会识别以下模式并添加占位符: 1. **字段名称: 具体值** → **字段名称: {{field_code}}** - 例如:`被核查人姓名: 张三` → `被核查人姓名: {{target_name}}` 2. **字段名称: XXX/待填** → **字段名称: {{field_code}}** - 例如:`被核查人姓名: XXX` → `被核查人姓名: {{target_name}}` 3. **表格中的字段**:同样处理表格单元格中的字段 ## 支持的文档类型 脚本支持以下文档类型: 1. 请示报告卡 (REPORT_CARD) 2. 初步核实审批表 (PRELIMINARY_VERIFICATION_APPROVAL) 3. 初核方案 / 附件初核方案 (INVESTIGATION_PLAN) 4. 谈话通知书 (NOTIFICATION_LETTER) 5. 谈话笔录 (INTERVIEW_RECORD) 6. 谈话询问对象情况摸底调查30问 (INVESTIGATION_30_QUESTIONS) 7. 被谈话人权利义务告知书 (RIGHTS_OBLIGATIONS_NOTICE) 8. 点对点交接单 (HANDOVER_FORM) 9. 陪送交接单 (ESCORT_HANDOVER_FORM) 10. 保密承诺书 (CONFIDENTIALITY_COMMITMENT) 11. 办案人员-办案安全保密承诺书 (INVESTIGATOR_CONFIDENTIALITY_COMMITMENT) 12. 请示报告卡(初核报告结论) (REPORT_CARD_CONCLUSION) 13. 初核情况报告 (INVESTIGATION_REPORT) 14. 谈话审批表 (INTERVIEW_APPROVAL_FORM) 15. 谈话前安全风险评估表 (PRE_INTERVIEW_RISK_ASSESSMENT) 16. 谈话方案 (INTERVIEW_PLAN) 17. 谈话后安全风险评估表 (POST_INTERVIEW_RISK_ASSESSMENT) ## 文件结构 处理后的文件结构: ``` 模板/ ├── 2-初核模版/ │ ├── 1.初核请示/ │ │ ├── 1.请示报告卡(XXX).docx ← 处理后的文件 │ │ ├── 2.初步核实审批表(XXX).docx │ │ └── 3.附件初核方案(XXX).docx │ └── ... └── ... ``` ## 注意事项 1. **只处理 .docx 文件** - 脚本会自动跳过 .doc 文件 - 如果还有 .doc 文件需要处理,请先转换为 .docx 2. **文件位置** - 源文件:`模板/原始模板/` 目录下(包括所有子目录) - 输出文件:`模板/` 目录下(保持相对目录结构) 3. **占位符检查** - 处理后的模板需要人工检查 - 确保占位符格式正确:`{{field_code}}` - 确保占位符位置合理 4. **文件名清理** - 脚本会自动清理文件名中的转换标记 - 如果文件名不符合预期,可以手动调整 ## 常见问题 ### Q1: 某些文件没有被处理 **A:** 检查: 1. 文件是否是 .docx 格式(不是 .doc) 2. 文件是否在 `模板/原始模板` 目录下 3. 文档类型是否被识别(查看输出日志) ### Q2: 占位符没有添加 **A:** 可能原因: 1. 文档中字段名称与映射表不匹配 2. 字段值已经是占位符格式 3. 字段值为空或特殊字符 **解决方案:** - 检查文档内容 - 手动添加占位符 - 检查字段名称是否正确 ### Q3: 文件名不正确 **A:** 脚本会自动清理文件名,如果不符合预期: - 可以手动重命名输出文件 - 或者修改脚本中的文件名清理逻辑 ## 与 process_templates.py 的区别 | 特性 | process_templates.py | process_templates_docx_only.py | |------|---------------------|-------------------------------| | 处理 .doc 文件 | ✅ 是(需要转换) | ❌ 否(跳过) | | 处理 .docx 文件 | ✅ 是 | ✅ 是 | | 需要 Word/COM | ✅ 是(用于转换) | ❌ 否 | | 转换功能 | ✅ 有 | ❌ 无 | | 适用场景 | 原始 .doc 文件 | 已转换的 .docx 文件 | ## 推荐使用场景 **使用 process_templates_docx_only.py 当:** - ✅ 所有文件已经手动转换为 .docx 格式 - ✅ 不想处理 .doc 文件转换 - ✅ 只需要处理已转换的文档 **使用 process_templates.py 当:** - ✅ 还有 .doc 文件需要自动转换 - ✅ 系统已安装 Microsoft Word 和 pywin32 - ✅ 需要完整的自动化流程 ## 下一步 处理完成后: 1. **检查生成的模板** - 打开处理后的模板文件 - 检查占位符是否正确添加 - 手动调整不正确的占位符 2. **运行初始化脚本** ```bash python init_all_templates.py ``` - 上传模板到 MinIO - 更新数据库配置 3. **测试文档生成** - 使用 API 测试文档生成功能 - 确认模板可以正常使用