干部任免表(.lrmx)批量审核
这个技能解决什么问题
干部任免表填报后需要人工逐份核对格式与规范,工作量、易漏检。本技能把核对过程自动化:
- 读取 .lrmx(本质是 UTF-8 with BOM 的 XML,根节点
<Person>) - 比对 基准模板的 34 个字段结构与填写规范
- 校验 30+ 类规则,分严重/一般/提示三级
- 输出 Excel 报告,含逐人问题清单与整改建议,可直接作为返工依据
快速开始
# 1. 先审核整个工作区(结果写入 scripts/result.json)
python scripts/audit.py --root "<待审工作区根目录>" --tpl "<基准模板文件名>"
# 2. 按部门出报告
python scripts/report.py "<部门文件夹名>" "<输出路径.xlsx>" dept
# 3. 或按单份出报告
python scripts/report.py "<姓名>" "<输出路径.xlsx>" one
依赖:Python 3.8+、openpyxl(仅出报告时需要)。
pip install openpyxl
关键概念
基准模板是唯一审核依据
规则的来源不是外部标准,而是基准模板 .lrmx 的 JianLi 字段内嵌的「提示」文本块。模板里写了什么,就按什么审。更换模板即更换审核标准,无需改代码。
> 关于 references/基准模板.lrmx.txt:它是一份脱敏示例模板,内容就是 .lrmx 的 XML 原文。因部分技能发布平台的文件类型白名单不接受 .lrmx 扩展名,故以 .txt 后缀随包分发。使用前请复制一份并把后缀改回 .lrmx,或直接用本单位真实模板。实际审核时 --tpl 指向的必须是待审工作区根目录下的 .lrmx 文件。
典型模板的 7 条提示:
| # | 规范 | 校验方式 |
|---|---|---|
| 1 | 横线为 2 个短横线 | 1997.09--1999.09,单个 - 报错 |
| 2 | 空 2 格填写 | 时间与内容之间须恰好 2 个空格 |
| 3 | 从大/中专院校学习时填起 | 首段内容须含"学习/就读/学校/毕业"等字样 |
| 4 | 单位职务使用全称 | 人工复核,引擎仅提示 |
| 5 | 各时间段要衔接,中间不能有空断 | 相邻段 prev.end 与 next.start 月份差须为 0 或 1 |
| 6 | 最后一行横线后空 9 格 | -- 后须有 9 个空格且无结束时间 |
| 7 | 不需要冒号、逗号、分号 | 简历正文检出标点即报错 |
问题分级(决定处置方式)
- 严重 — 数据错误导致内容不可信或无法解析,必须退回。例:同段起止时间倒置、年份首位漏写、核心栏目空白、身份证与性别矛盾
- 一般 — 格式不规范,不影响有效性,需整改。例:学历用非标准词、简历单短横线、括号不成对
- 提示 — 提醒核实,不强制。例:已故成员出生日期留空、身份证非本地户籍、已达退休年龄
报告结构
- 部门模式(3 表):审核结论(逐人问题分布 / 审核统计 / 问题清单 / 自动生成的说明与整改要求)、人员基本信息、家庭成员核查(按人分块)
- 单人模式(2 表):审核结论、家庭成员核查
「审核说明与整改要求」章节由 report.py 的 build_conclusion() 依据实际数据自动生成,与数据强一致,无需人工撰写。
配置
config/config.json:
| 键 | 说明 |
|---|---|
id_prefix |
身份证行政区划前缀(4 位地级市码)。本级与下辖县市均以此开头。设为 "" 关闭该项校验 |
area_name |
行政区划提示中显示的地名 |
base_date |
报告基准日 YYYY-MM,用于计算年龄与退休年龄。每次复审如基准月变化须同步更新 |
tpl |
基准模板文件名。留空则自动取根目录按文件名排序的第一个 .lrmx(不推荐) |
首次使用务必先配 id_prefix 与 base_date,否则身份证区划与退休年龄提示会不准。
规则清单
简历(占问题总数一半以上)
| 规则 | 级别 | 触发条件 |
|---|---|---|
| 同段起止倒置 | 严重 | 结束时间早于起始时间(年份笔误) |
| 年份首位数字漏写 | 严重 | 年份数值 < 1000,如 0986.08 |
| 整段位置错乱 | 严重 | 某段起始晚于下一段起始(跳过已判笔误的段) |
| 整段位置颠倒 | 严重 | 上一段起始晚于下一段起始 |
| 时间段空断 | 一般 | 相邻段间隔 > 1 个月 |
| 简历首段非院校经历 | 提示 | 首段不含"学习/就读/学校/毕业"(参军服役、技工学校除外) |
| 单个短横线 | 一般 | 使用 - 而非 -- |
| 中文破折号 | 提示 | 使用 —— 作连接符 |
| 半角括号 | 一般 | 含 () 但无全角 |
| 括号不成对 | 一般 | ( 与 ) 混用 |
| 内容末尾句号 | 一般 | 以 。; 结尾 |
| 重复段落 | 一般 | 去掉括注后内容完全相同 |
| 同一行挤两段 | 一般 | 剥离括注后仍残留时间段(换行符丢失) |
| 末行未体现"至今" | 一般 | 末行有结束时间 |
| 末行空格不足 9 格 | 提示 | -- 后空格数不足 |
| 简历含标点 | 一般 | 冒号/逗号/分号 |
字段规范
| 规则 | 级别 | 说明 |
|---|---|---|
| 学历非标准选项 | 一般 | 仅 高中/中专/大专/本科/研究生/双学历/无;其余经 XUELI_MAP 归一化后给建议 |
| 本科学历学位栏空 | 提示 | 归一化后判断,避免"本科教育"等写法漏检 |
| 学位填写为学历 | 提示 | 如学位栏填"本科" |
| 民族缺"族"字 | 一般 | "汉"→"汉族" |
| 日期非 6 位 | 一般 | 出生年月/入党时间/参加工作时间须 YYYYMM |
| 填表时间非 8 位 | 一般 | 须 YYYYMMDD |
| 奖惩情况漏填 | 一般 | 模板注明"奖\惩都没有填无",无则填"无" |
| 核心栏目空白 | 严重 | 如现任职务、拟任职务等 |
| 多余空格 | 提示 | 单位名称中夹连续空格 |
| 填表人为本人 | 提示 | 应由组织人事部门经办人填写 |
家庭成员
- 称谓方向性:子女/儿媳/女婿须晚于本人;父母/公婆/岳父母须早于本人;配偶年龄可大可小,仅年龄差 > 20 年才提示
- 已故/已退休成员出生日期可留空,识别"已故/去世/退休/殁"后降级为提示
- 政治面貌仅接受 中共党员/中共预备党员/共青团员/群众/无党派人士
- "幼儿"不属于政治面貌 → 建议改"群众"
- 工作单位及职务、政治面貌不得留空
身份证(GB 11643 / ISO 7064)
- 18 位,出生日期取第 7-14 位,性别由第 17 位奇偶判定
- 校验码验证,末位
X须大写 - 与出生年月交叉核对
- 行政区划前缀比对(由配置项控制)
经验积累(重要,加新规则前必读)
这些是实战中总结的误报陷阱,改引擎时务必遵守:
- 括注内的经历不算独立条目。
(其间2009.03--2012.01某某学院学习)中的时间是同一段时间内的追加经历。写"同行多段""括注不成对"类规则时必须先剥离括注,否则大量误报。 - 判断"首段是否从院校填起"要看内容而非年份。按起始年份与出生年月做差会误伤正常入学者。
- 年级/学历判定前必须用
XUELI_MAP归一化。否则"本科教育""专科教育"等写法会漏掉学位校验。 - 区划白名单要确认"哪个才是标准值"。曾经把本市本级代码当成"非本级",导致 7 人被误报。
- 判"年份异常"要用数值比较,不能只数字符位数。
0986恰好是 4 位字符但数值 986。 - 年末→年初的 1 个月空断属正常,级别降为提示。
- "出生至参加工作跨度偏大"要先看简历是否已填待业。已如实填写过渡段则不报。
- 模板与内部
_audit目录要排除,否则模板自身会被计入受审。
目录结构
xtsy-lrmx-audit/
├── SKILL.md
├── config/
│ └── config.json # 属地化配置
├── references/
│ ├── 基准模板.lrmx.txt # 脱敏示例模板(.lrmx 的 XML 原文,用前改回 .lrmx)
│ ├── 字段字典.md # 34 字段中文名对照
│ └── 审核规则手册.md # 全部规则详解
└── scripts/
├── audit.py # 审核引擎
├── report.py # 报告生成
└── result.json # 运行产物(自动生成)
注意事项
- 引擎只读不写原始
.lrmx,不改任何待审文件 - Word 打开 .lrmx 时会在同目录生成
~xxx.lrmx.pic临时文件,引擎按后缀自动排除 - 文件夹名可能含连续空格、全角括号,脚本参数须原样传入
- 目录被重命名后
report.py的家庭成员表会按文件名全局兜底查找 - 每次复审前先备份旧
result.json,便于对比整改效果