## 诊断流程样例
### 输入
- `clean/lifecycle_sessions_v20.csv`:当前版本 session 明细
- `output/review_pages/商品域最终体系_生命周期映射_session复核_2026-05-09_v20.html`:复核页
- `output/生命周期汇总_标签拆列_2026-05-09_v20.xlsx`:汇总 Excel
### 命令
```bash
python scripts/audit_lifecycle_review_pack.py \
--version v20 \
--csv clean/lifecycle_sessions_v20.csv \
--html output/review_pages/商品域最终体系_生命周期映射_session复核_2026-05-09_v20.html \
--excel output/生命周期汇总_标签拆列_2026-05-09_v20.xlsx \
--out analysis/audits/v20_consistency_audit.json
```
### 成功输出
```json
{
"version": "v20",
"csv_rows": 9335,
"html_payload_rows": 9335,
"excel_rows_basis": 9335,
"remaining_mismatches": [],
"blank_bucket_collisions": [],
"status": "pass"
}
```
### 失败输出
```json
{
"version": "v7",
"status": "fail",
"remaining_mismatches": [
{
"parent": "价格相关",
"parent_total": 447,
"child_sum": 242,
"missing_or_blank_child_count": 205,
"likely_cause": "下一级标签为空,页面只展示非空子类"
}
],
"suggested_fix": "补齐互斥下一级标签,或显式落到 `其他` 子类后重新生成 HTML/Excel。"
}
```
### 人工判断规则
| 检查项 | 通过信号 | 失败信号 | 处理动作 |
|---|---|---|---|
| 明细总行数 | CSV、HTML payload、Excel 分母一致 | 任一来源少/多行 | 停止发布,追溯生成脚本输入 |
| 父子加总 | 每个父桶 `parent_total = child_sum` | 子类加总小于或大于父类 | 查空子类、重复子类、多标签误用 |
| 空值规范 | NaN、空字符串、未归类只有一种表示 | 出现两个空白行或重复空桶 | 统一 normalize 后重算汇总 |
| 多标签口径 | 多标签统计只用于解释,不用于互斥页面加总 | 多标签行加总超过父类且未说明 | 增加 `主标签`/`主配置项` 字段 |