# wb-ins-font-verify.py 加粗检查输出解读

## 脚本输出格式

```
PASS: all N WB INS runs font-consistent, M title(s) bold-consistent
```

两个指标独立判断：
- **font-consistent**：`w:rFonts` 四属性 + `w:hint` + `w:sz` 与原文一致
- **bold-consistent**：`w:b` 状态与原文同级标题一致（仅对标题段落检查）

## "0 title(s) bold-consistent" 的含义

**不要假设"0 titles = 没有标题需要检查"。**

脚本自动检测标题段落（基于编号模式如"第X条""X．XXX"等），但检测策略可能漏检。输出 `M title(s) bold-consistent` 时，M 表示**通过加粗检查的标题数**。

- `M > 0`：有 M 个标题通过了加粗检查
- `M = 0`：**需要人工复核**——可能是：
  - (a) 脚本未检测到任何标题段落（检测策略遗漏）
  - (b) 所有检测到的标题都未通过加粗检查
  - (c) 确实没有标题（纯内容合同）

**处理方式**：当 `M = 0` 时，reviewer 必须手动逐条检查所有 WB INS 新增标题段落的加粗状态。

## 强制手动加粗检查（当 M=0 时）

1. 提取所有 WB INS 新增段落（`w:ins[@author='WB']` 所在的 `<w:p>`）
2. 判断哪些是标题段落（含编号如"第X条""X．"等）
3. 对每个标题段落，提取其 INS run 的 `w:rPr`，检查是否含 `<w:b/>`
4. 与相邻原文标题段落的 rPr 对比（取最近一个原文标题段落）
5. 不一致的标记为 format issue（severity: major）

## 实例（2026-06-27 朱家角标识标牌合同）

脚本输出：`PASS: all 17 WB INS runs font-consistent, 0 title(s) bold-consistent`

- P84 "19．知识产权" 标题为 WB INS 段落
- P82 "18．合同转让和分包"（原文标题）rPr 含 `<w:b/>`
- P84 INS run 的 rPr **缺少** `<w:b/>`
- 脚本未将 P84 识别为标题段落（或 bold check 覆盖不到），`M=0` 未报警

**结论**：`M=0` 时必须手动逐条检查。不能因为脚本 PASS 就跳过加粗验证。