绩效评价报告复核工作流
适用与产出
- 输入:一份
*绩效评价报告*.docx(通常出自第三方会计师事务所,含正文 + 附件1《绩效评价指标体系》+ 附件2《绩效评价指标得分表》)。 - 产出:同目录同级的一份 《…绩效评价报告复核意见书(第N轮).docx》,必须用
present_files呈现。 - 复核结论固定三档:修改后通过 / 基本通过尚需局部修改 / 不通过。结论要与"总分是否受影响"分开陈述。
环境(Windows / PowerShell)
- PowerShell 工具 stdout 不回显:所有命令输出必须由 Python 脚本写进工作区文件,再用 Read 读。
- MCP 的
doc_resolve_document_structure对段落文本有 200 字上限,正文段落多数超限 → 不要用它做逐句复核,改用下面的本地抽取脚本。 - 生成 Word 用
run_edsdk.py包装器(tencent-local-office-edit的 edsdk.py):
python run_edsdk.py "@out.txt" call create_doc python run_edsdk.py "@out.txt" call doc_insert_markdown "file_id=<id>" idx=0 "markdown=file://<abs path>.md" python run_edsdk.py "@out.txt" call save_file "file_id=<id>" "file_path=<abs path>.docx"
先写 Markdown,再doc_insert_markdown注入,最后save_file。
Step 1 抽取全文(脚本模板)
用 zipfile + ElementTree 直接解析 word/document.xml:
- 遍历 body,按
<w:p>输出[P序号][样式] 正文;空段跳过,但保留全文段计数。 <w:tbl>逐行输出为 Markdown 表:<<<TABLE rows=N cols=M>>>…<<<END TABLE>>>。- 记录
md5(document.xml)、len(document.xml)、段数、字符数 —— 这是判断"报告有没有真的改过"的指纹。 - 图片
word/media/*导出到独立目录并Read查看(常见为现场照片/手写核对表)。 - 长段落用
~续行;后续解析时记得合并。
Step 2 必做的四件套勾稽(核心)
用 Python 对抽取文本重算,不要目测:
- 逐级加总:附件1/附件2 的三级分值 → 二级 → 一级 → 合计,与"合计"行、正文《一级指标得分情况》表、正文各分项"得X分(满分Y分)"逐一对齐。
- 附件1 要点之和 vs 指标分值:抽
该要点分值为([\d.]+)分求和,与"指标分值"列比对;无标注式的行按得([\d.]+)分取最大值人工复核。 - 正文叙述扣分 vs 附件2 得分:正文写"按评分标准扣X分",则附件2 应为 分值 − X;同时核 X 是否为评分标准档距(如"每发现一类扣0.5分")的整数倍。
- 集合差集:
set(附件1三级指标名) vs set(附件2三级指标名)—— 极易发现"某一侧已改、另一侧未改"的残留(如某指标单边残留)。同时比对正文《存在的问题》《相关建议》的条数与摘要所列条数。
解析陷阱(务必注意)
- Markdown 表头分隔行
|---|...首列是---,会被误当数据行 → 加总和集合比对前必须剔除(否则项数虚增 1)。 - 合并单元格在纯文本抽取里会 padding 成空串,容易误判"合计行错列"。如果只是要报告"合计行数值错列",先用 XML 检查
gridSpan/vMerge再下结论,避免误报。 - 正文《一级指标得分情况》表因跨页会出现同一一级指标行重复(合并单元格),加总会虚高,须去重后再判断。
Step 3 逐条核对上轮意见书(多轮复核必备)
用户通常已按上一轮意见修改过。必须建立三栏对账:
| 类别 | 含义 |
|---|---|
| 已整改 | 上轮问题确实消除 |
| 未整改 | 仍在(要给出现报告中的位置) |
| 新引入 | 本轮改动过程中新产生的错误 —— 这是最有价值的部分 |
"改分值不改内文""改附件1不改附件2""改来源不改正文"是这类报告最典型的新错误模式,每次都要专门查。
Step 4 生成意见书
Markdown 结构(注入 Word 后自动成文):
# <单位><年度>…绩效评价报告复核意见书(第N轮)
**复核对象**:文件名 + 保存时间 + 报告文号
**复核范围**:正文段数/字符数 + 附件1/附件2 项数
**复核方式**:抽取后逐项重算
## 一、复核结论 ← 结论 + 总分是否受影响
## 二、本轮已整改到位事项 ← 表格:上轮编号 / 事项 / 整改情况
## 三、A类重大问题 ← 表格或分条,每条给"报告位置 + 现状 + 应为 + 建议"
## 四、B类一般问题 ← 表格
## 五、C类文字体例问题 ← 表格
## 六、得分影响与修改清单 ← 编号步骤,按优先级
**复核人**:___ **复核日期**:YYYY年M月D日
问题按 A(重大问题,对外可被直接发现:合计≠加总、分值超上限、口径打架、关键事实矛盾)/ B(一般:依据不足、数据未衔接、要素缺失)/ C(文字体例:错别字、格式、标题)三级分类,每条必须能定位到具体段落或表格行。
Step 5 校验与交付
- 重新打开生成的 docx,把意见书里的关键结论短语列表逐一
in full_text断言(检查串不要带书名号/引号,否则易误报 missing)。 present_files呈现意见书;正文回复给"结论 + A类要点表 + 得分影响 + 下一步建议",不要复述全文。- 追加工作日志到
<workspace>/.workbuddy/memory/YYYY-MM-DD.md。
常见问题速查(历史高频)
- 附件1 分值列合计 ≠ 100(或 ≠ 表末"合计"行)。
- 附件1 删除某指标行、附件2 未同步(或反之)→ 项数 43 vs 44。
- 某指标"指标分值"改了、"评分标准"内文数字没改。
- 附件2 得分 > 附件1 指标分值。
- 评分标准档位写重(如两档都写"95%≤x<97%")。
- 标准里漏"未"字导致语义相反("每发现1个项目完成…扣0.2分")。
- 排除依赖项后同一指标出现三个执行率、口径未交代。
- 摘要问题/建议条数与正文节数不一致。
- 缺评价人员签字、事务所盖章栏;落款日期早于评价期结束日。