武汉监检资料审查
> 技能 ID(目录名 / 调用名):wuhan-jianjian-review
把已跑通 14 个项目的审查方法论固化为可复用流程。主文件只保留决策骨架,细节全部下沉到 references/。
> ✅ v1.1 已端到端验证(2026-09-06,某住宅小区燃气工程,29 页扫描件)
> OCR 耗时基线 ≈4.5 秒/页(29 页 ≈ 2 分 10 秒),可据此预估工期。
>
> 📦 本包为公开发布版:已移除真实项目编号、工程名称、单位与人名,
> 真实样例目录(examples/)不在包内;config/review_params.yaml 中的
> 区域前缀、运营主体等均已改为占位符,首次使用请先按本单位情况补齐。
端到端一条龙(照抄即可)
PY="python" # 或你的 venv python 绝对路径
S="<本技能安装目录>" # 例:~/.workbuddy/skills/wuhan-jianjian-review
mkdir -p "<工作目录>/ocr"
"$PY" "$S/scripts/probe_pdf.py" "<PDF或目录>" # 判文字层
"$PY" "$S/scripts/ocr_pdf.py" "<PDF或目录>" "<工作目录>/ocr" # 扫描页 OCR(≈4.5s/页,长任务放后台)
# 人工:读 ocr/*.txt → 建档案卡 → 填 issues.json(模板:templates/)
"$PY" "$S/scripts/gen_report_docx.py" "<工作目录>/issues.json" "<工作目录>/审查报告.docx"
# 复审回流:
"$PY" "$S/scripts/extract_docx_comments.py" "<复审版.docx>"
关键业务假设(执行前确认,不符则改)
| # | 假设 | 不符时的处理 |
|---|---|---|
| A1 | 对象 = 压力管道安装监检资料(竣工/监检阶段),不含设计方案审查、不含长输管道与门站储配站 | 设计图纸审查走另建 skill |
| A2 | 输入 = 扫描件 PDF(多数无文字层),可能单文件多页,也可能一个文件夹多文件 | 见 references/06 |
| A3 | 判定基准 = 法定安全底线(GB 55009 强制条文 + TSG D7006)+ 运营单位 12 项资料清单;地方细则以 config/review_params.yaml 为准 |
该 yaml 里所有 TODO 项必须先与用户确认 |
| A4 | 规范版本锚定 工程完工时点 的当年现行规范,不是审查时点 | 见 references/02 |
| A5 | 交付 = Word(.docx) 审查报告,问题分四级色标;HTML 可选 | 用 scripts/gen_report_docx.py |
| A6 | OCR 识别不清的数字 → 一律归入「待核实」,绝不编造 | 铁律 2 |
| A7 | 用户方会有复审人在 Word 里批注,需支持回流修正 | Step 7 |
何时用
- 用户给一个 PDF / 一个文件夹,说「审查监检资料」「检查资料的完整性、准确性、签章、逻辑一致性」
- 用户说「列出问题并给整改建议」「形成审查报告」「审查报告以 Word 版出」
- 用户拿回一份带批注的审查报告,说「按 XX 复审意见重新学习并修改审核逻辑」
标准作业流程(SOP · 7 步)
Step 0 · 取证
python scripts/probe_pdf.py <文件或目录> # 判文字层 → 决定直读 or OCR
python scripts/ocr_pdf.py <文件或目录> <输出目录> # 无文字层时批量 OCR
多文件目录按文件名序号排序,OCR 输出按「一文件一 txt」落盘,便于逐份核对。
Step 1 · 建项目档案卡
从封面/概况表抽取:工程名称、项目编号、建设单位、施工单位、监理单位、监检机构、设计压力、介质、管材与工程量、开工/竣工日期、户数或用量。
- 监检机构必须实读(监检通知书/申请书落款、监检证书与监检报告盖章单位、封面标注),无默认值;读不到时写「本项目监检机构(以资料落款为准)」。
- 项目编号只取区域位(JX/HP/XZ/WR)做档案归属校验;类别位不解析,工程形态从图纸说明、概况表、设计压力、管材与连接方式实读。
档案卡是后续「名称统一」「工程量三统一」的比对基准,必须先建。
Step 2 · 定范围(四步走第①步,最关键)
压力管道 = 最高工作压力 ≥0.1MPa + 介质可燃/易爆/有毒/腐蚀 + 公称直径 ≥50mm(三者同时满足)。
- 不是压力管道 → 无需上传强度/严密性试验记录,不得判缺失
- 是压力管道 → 进入 Step 3
Step 3 · 定资料需求(四步走②③④步)
① 定范围 → ② 定材质(PE / 钢管) → ③ 定连接方式(丝扣/焊接;热熔/电熔) → ④ 定资料需求
- 钢管 + 丝扣连接(镀锌钢管 DN≤50)→ 无需焊接记录/无损检测/底片
- 钢管 + 焊接连接 + 压力管道 → 焊接记录 + 无损检测报告 + 底片 必备
- 中压 D57(DN50) 及以上焊接钢管 → 无损检测报告必备项,缺失直接判问题,不许标「待核实」
Step 4 · 四维核查
| 维度 | 查什么 | 明细 |
|---|---|---|
| 完整性 | 必备项是否齐备 | references/01 |
| 时效性 | 证件/仪表/规范版本是否在有效期内 | references/04 |
| 签章 | 施工/监理/建设/监检四方签字盖章是否齐全 | references/01 |
| 逻辑一致性 | 名称、工程量三统一、编号、人员、批次、时间链 | references/04 |
Step 5 · 问题判定与分级
对照 references/03 的缺陷分类给每条问题定级(严重/中等/轻微/待核实),每条必须写全「位置 + 证据 + 依据条款 + 整改建议」。
Step 6 · 出报告
python scripts/gen_report_docx.py <issues.json> <输出.docx>
JSON 结构见 templates/审查报告数据模板.json;章节骨架见 templates/审查报告模板.md。
Step 7 · 复审回流(可选但重要)
python scripts/extract_docx_comments.py <复审版.docx>
拿到复审人批注(含锚定正文)后:逐条判断是审核逻辑错误还是个案判断差异;属逻辑错误的必须同步改 references/ 与 config/,并在报告首章写明「本次修正了什么」。
交付前自检(出报告前逐条过,来自验证样例)
- [ ] 监检机构已实读并写入档案卡;读不到则确实用了兜底措辞「本项目监检机构(以资料落款为准)」,没有沿用旧机构名(铁律 6)
- [ ] 工程类别是从图纸/概况表/管材实读的,没有引用编号类别位(铁律 5)
- [ ] 压力管道范围判定已写明(压力 / 管径 / 介质三条件)
- [ ] 试压记录逐管材核对过长度,钢管没有被漏在试验之外(样例 S-02)
- [ ] 严重/中等/轻微/待核实 四类都有归属,无「先把所有问题丢进待核实」
- [ ] 时间链覆盖到 OA 审批,且验收早于审批只判提示
- [ ] 每条问题写全「位置 + 证据 + 依据条款 + 整改建议」四要素
- [ ] 结论里给了优先整改顺序 + 系统性通病提示
六条铁律(来自 3 次复审 + 用户指示)
- 先定范围再查细节 —— 跳过压力管道判定就判「缺试验记录」,是最典型的误判。
- 绝不编造数字 —— OCR 不清或不识字时标「待核实」,不得用推测值填充报告。
- 规范版本锚定完工时点 —— 且不得凭记忆判断替代关系,必须查证(曾误判 CJJ 94-2009 已废止)。
- 缺失 ≠ 错误 —— 条件触发项(无损检测、底片、钢管焊接记录)只有在该工程实际需要时才判缺失。
- 编号只认区域,不认类型 —— 类别位与工程形态、资料需求无可靠映射,⛔ 禁止据编号推断项目类型或资料需求(用户指示 2026-09-06)。
- 机构名逐项目实读 —— 监检机构无默认值,⛔ 不得沿用一个项目、不得凭记忆填写;读不到就用兜底措辞(用户指示 2026-09-06)。
文件拆分说明(为什么这样切)
| 位置 | 内容 | 放这里的原因 |
|---|---|---|
SKILL.md |
决策骨架、SOP、铁律 | 每次加载,必须短 |
references/01 资料清单与核对要点 |
12 项必备 + 条件触发 + 四维核查表 | 内容长、需逐条对照时再读 |
references/02 规范依据与数值速查 |
压力分级、试验压力、壁厚、无损检测比例、规范替代关系 | 查数值时才需要 |
references/03 缺陷分类与判定规则 |
缺陷分类码表 + 定级规则 + 13 项目高频问题统计 | 判级时才需要 |
references/04 时间逻辑与闭环规则 |
工序时间链、时效性、九大核对原则 | 做一致性核查时读 |
references/05 武汉监检特殊要求 |
地方机构、编号规则、上传要求(含可配置项) | 地域相关,换城市只需换这份 |
references/06 取证工作流与 OCR |
pymupdf/RapidOCR 用法、已知坑、OCR 误读规律 | 动手前读一次即可 |
config/review_params.yaml |
武汉当地可配置参数(机构名、清单口径、底片要求、编号规则等) | 不改代码即可适配 |
scripts/ |
4 个脚本 | 免重复造轮子 |
templates/ |
报告章节骨架 + 数据结构 + 问题清单 CSV | 保证输出结构稳定 |
templates/ |
报告章节骨架 + 数据结构 + 问题清单 CSV | 保证输出结构稳定;填写参照 审查报告数据模板.json 内注释 |
常见失败模式
| 症状 | 根因 | 修正 |
|---|---|---|
| 报告里出现具体数字但用户说「不对」 | 没做 OCR 就凭图片猜 | 回到 Step 0,必须 OCR |
| 判「缺无损检测报告」被驳回 | 没先判定是否压力管道 / 是否焊接连接 | 回到 Step 2、3 |
| 判「引用废止规范」被驳回 | 用审查时点而非完工时点;或记错替代关系 | 查 references/02 的替代关系表 |
| 判「会审日期不能等于开工日期」被驳回 | 过严 | 允许等于,见 references/04 |
| 判「竣工早于审批」但对方说正常 | OA 补录是常态,属「提示」不属「错误」 | 降级为提示 |
| 报告抬头的监检机构被指出「不是这家」 | 沿用了上一个项目的机构名 | 铁律 6:回 Step 1 从落款实读,读不到写兜底措辞 |
| 判「这是 X 类工程,所以应备 XX 资料」被驳回 | 据编号类别码推断了工程类型 | 铁律 5:改从图纸/概况表/管材/连接方式实读 |
| 中压钢管的试验/检测被漏判 | 试压记录只列了 PE 段,未逐管材核对长度 | 自检第 4 条:竣工工程量里每根钢管都要在试验记录里找到对应 |