工作要点一键入模(workplan-template-fill)
把本部门工作要点内容稿,按学校官方模板("三清单工作法":任务清单 + 措施清单 + 责任清单 + 成果效果)保真填充,产出可直接提交的 docx。
硬性约定(每次执行必须遵守,违反即返工)
- 先对齐再动手:必须先输出勘查报告与行数计划,把关键选择用选项交用户拍板,确认后才写盘。绝不擅自改写内容、绝不盲填。
- 编号:用
1. 2. 3.字面文字编号,禁用 Word 自动编号。工作内容 / 主要举措 / 任务成果三列严格 1:1 对应(内容第 n 点 ↔ 举措第 n 点 ↔ 成果第 n 点)。 - 占位:保留 X、(待定)、人名占位、完成时限,绝不编造数据。封面第 2 行("部门名称:(盖章)×××")按源文档部门名填充,格式不动。
- 排版:重点工作区照模板原生纵向合并(vMerge);编号条目每条独占一行且首行缩进 2 字符(
w:ind firstLineChars=200);表格区域单元格水平 + 垂直居中;字体沿用模板(表头/标题楷体_GB2312、正文仿宋_GB2312,以模板实际为准)。 - 产出为独立新文件,原模板与内容稿一律不动。
依赖
python-docx(本机 WorkBuddy 托管 Python 隔离环境)。脚本运行前检测:
"<python>" -c "import docx" 2>/dev/null || "<python>" -m pip install python-docx
不要用 Word COM(Office 自动化在本类环境下会卡死);不要用 tencent-docs 上云链路(连接器未授权时不可用);本地 python-docx 是唯一可靠路径。
五阶段工作流
阶段 1:体检识别内容稿
python scripts/probe.py --source <内容稿.docx>
- 内容稿是三清单表格 docx(表头含 序号/任务名称/工作内容/主要举措/责任人/完成时限/成果)→ 走快速路径,进入阶段 2。
- 识别失败(纯文字、普通一览表、结构对不上)→ 不硬猜,问用户二选一:
- 路线 A:把
references/内容稿空白模板.docx给用户,请按格式整理后再来; - 路线 B:逐项问答采集——一次问一个工作任务,让用户一段话描述该任务的名称/内容/举措/责任人/时限/成果,自行拆解,缺项才追问(粗粒度,不逐字段提问)。
阶段 2:自动勘查模板 + 内容稿重排
python scripts/probe.py --template <官方模板.docx> # 模板勘查报告
python scripts/rearrange.py --source <内容稿.docx> --check # 只读体检
python scripts/rearrange.py --source <内容稿.docx> --in-place --backup # 需要时才落盘
勘查报告给出:区块标题位置、表头双行、数据行原型(物理 tc 数 / gridSpan / vMerge)、列名→物理格映射、行数计划。必须连同行数计划一起呈给用户。
重排器自动完成:字面编号规范化、内容/举措/成果三列 1:1 对齐检查、同任务内去重、日常工作表缺列检测与补列(补列后的内容文字由你按用户确认撰写,脚本只建结构)。
阶段 3:拍板确认(AskUserQuestion)
把勘查结论 + 以下必要选择交给用户拍板(有默认推荐项):
- 重点工作区是否照模板纵向合并(推荐:是);
- 日常工作是否放入"工作内容/主要举措"两列(取决于模板该区是否有此两列,没有则默认不放);
- 重排检查发现的三列不对齐如何处理(逐项列出,让用户确认改法)。
阶段 4:保真填充
python scripts/fill.py --template <模板.docx> --source <内容稿.docx> \
--output <输出.docx> --dept "部门名" --title "2026年度本学期工作要点"
内部保证:扩行 = deepcopy 模板自己的数据行(gridSpan/vMerge/边框/字体天然对齐);先在内存构造好全部行再整批插入(防行号漂移);按物理 tc 顺序填值;合并列只在 vMerge restart 首格写字;封面、工作目标(总述行 + 编号行缩进)、居中后处理。若输出被占用(PermissionError)自动另存 *_new.docx 并提示。
阶段 5:校验 + 预览 + 交付
python scripts/verify.py --output <输出.docx> --source <内容稿.docx>
python scripts/preview_html.py --docx <输出.docx> --html <输出>_预览.html
校验项:每行累计 gridSpan 与表头一致、vMerge restart↔continue 配对、内容稿所有任务名已入模、占位符(X/(待定)/(盖章))完整、表头与正文字体保留、无模板示例文字残留。校验必须 ALL_OK 才能交付;同时把 HTML 网格预览交给用户目视。最后 present_files 呈现 docx + HTML 预览。
输出结构约定
主表含区块"(一)日常工作 /(二)重点工作 /(三)创新工作"(或同义标题);重点工作每任务的行数 = 成果条数,序号/任务名称/工作内容/主要举措/责任人纵向合并为一格,完成时限与成果逐行拆开。创新工作"责任清单"若模板拆为三列则按三列填,合并为单列则按"第一责任人:×××;具体责任人:×××;完成时限:×××"填。
注意
- 遇到全新结构的模板,先跑 probe,报告里任何"未识别/存疑"项都必须在阶段 3 与用户确认,不得跳过。
- 文件在编辑器中打开时会有
~$锁文件,属正常,不影响读写磁盘副本;保存报 PermissionError 时用 fill.py 的自动另存。 - 更多坑与正确做法见
references/pitfalls.md(执行填充前必读)。