Safety Rules
参见 _shared/core/safety-rules.md
关键补充:填表/生成一律写新文件,不覆盖模板;证据图为只读引用,不改原件。
申报材料包 (Application Bundle)
"评优/职称/课题/验收"类材料的标准组装法:填表 → 正文 → 证据 → 打包。这是高校行政最常做的四段式,泛化到一切"表格+正文+证据"型交付。
四段工作流
Step 1 填表(模板保真)
复制模板 → 解析合并单元格 → 逐格填值 → 保留签字行/尾部。
a) 解析:打印每个 row.cells 的 (label, 值区) 位置;合并单元格用 id(cell._tc) 去重,
值区写在合并区域主 tc 上(row.cells[位置] 拿到的就是它)。
b) 填值:set_cell 清空值区重写,字体宋体/小四(按模板注要求),多行拆段落。
c) 保留:签字行("负责人签字:""组长签字:""学校公章""年 月 日")绝不覆盖,
事迹区若自带"负责人签字"尾部,先写正文再在末尾补回。
Step 2 正文(事迹/申报书/报告)
按"模板文本结构"组织章节(个人简介/获奖情况/工作任务/业绩情况/结语…)。
格式:标题黑体小三居中,正文宋体小四,1.4 倍行距。
每章可引用 Step3 证据图,图下加"支撑材料:……"注。
Step 3 证据(证书/证明图)
按清单逐项匹配证据文件:证书 jpg/png 直接用;PDF 用 pymupdf 转首屏 PNG。
嵌入 docx 时每图加注(来源/编号/内容)。缺图项在正文标注"待补",不编造。
图尺寸:横版宽 14-15cm,竖版宽 12cm,居中。
Step 4 打包
目录命名:<姓名/单位>-<材料名>-<日期>/
内含:填好的表格 + 正文 + 证据子目录 + 汇总清单 README。
文件命名统一规范(如 <年度>-<奖项>-<排名>.ext)。
合并单元格填写要点(docx)
- 模板里一个合并单元格在
row.cells中会出现多次,用id(cell._tc)去重,只写主 tc。 - 值区可能是合并区域(如"所在单位"跨3列、事迹跨8列),访问
row.cells[i]任意位置拿到同一 tc。 - 清空重写:删多余段落(保留至少1段)、清首段 run、按行 add_paragraph。
- 行高:长文本设
row.height或用row_dimensions[r].height撑开。 - 保存前校验:重新打开读取回填文本,确认每格正确、签字行还在。
证据图嵌入要点
- PDF 转图:
fitz.open(pdf); page.get_pixmap(dpi=110).save(png)。 - jpg 不能直接改名成 .png 后缀(python-docx 会报 UnrecognizedImageError);用 PIL
convert('RGB').save(png,'PNG')转真 PNG。 - 每图加居中说明注(宋体 10.5pt 灰色)。
- 输出文件会很大(几十 MB),属正常。
Anti-Patterns
| 违规 | 严重度 | 后果 |
|---|---|---|
| 覆盖模板原文件 | 高 | 模板丢失 |
| 覆盖签字行/尾部 | 中 | 材料无效 |
| 在合并区域重复写值 | 中 | 单元格错乱 |
| 证据图缺项却编造 | 高 | 材料不实 |
| 正文与表格数字不一致 | 高 | 评审驳回 |
依赖
- Python:
python-docx、openpyxl、pymupdf、PIL - 脚本:
scripts/fill_docx.py(合并单元格表格解析与填充)、scripts/embed_evidence.py(证据图收集与嵌入) - 校验:复用 verify-deliver 的 checklists
文件结构
skills/application-bundle/
├── README.md
├── SKILL.md
├── rules/
│ ├── table-filling.md # 合并单元格填写与保格式
│ ├── evidence.md # 证据图收集与嵌入
│ └── packing.md # 材料包目录与命名
└── scripts/
├── fill_docx.py
└── embed_evidence.py
版本历史
| 版本 | 日期 | 变更 |
|---|---|---|
| 1.0.0 | 2026-09-01 | 初始版本:从评优推荐表+事迹材料生成实战提炼的四段式材料组装 |