# 商品标签迁移口径校验器:诊断流程样例 ## 场景 用户刚要求把 v31 中 `定邀/报白/白名单准入` 移到 `商品创建 > 商品类目`,并把 `商品信息` 改成 `信息填写` 后同步刷新 HTML 和 Excel。 ## 输入 - 明细:`clean/商品域最终体系_用户版层级_session复核_2026-05-13_v31.csv` - HTML:`output/review_pages/商品域最终体系_用户版层级_session复核_2026-05-13_v31.html` - Excel:`output/excel/商品域最终体系_用户版层级汇总_2026-05-13_v31.xlsx` - 审计表:`analysis/migration_audits/*v31*.csv` - 分母源:`data/最终结果/一二级标签总表.xlsx` - 规则:`config/taxonomy_migration_invariants.v31.yaml` ## 运行 ```bash python scripts/check_taxonomy_migration_invariants.py --project . --version v31 --spec config/taxonomy_migration_invariants.v31.yaml ``` ## 核心检查 | 检查项 | PASS 信号 | FAIL 信号 | |---|---|---| | 明细完整性 | `rows == unique_sessid == 9335` | 行数变化、sessid 重复或缺失 | | HTML 同步 | HTML 内嵌 records 数等于 CSV 行数 | HTML 仍是旧版本或 records 不一致 | | Excel 同步 | Excel 汇总等于 CSV groupby 结果 | 汇总量级、解决数、未解决数不一致 | | 迁移口径 | 旧顶层 `商品信息` 零残留,`商品修改` 合并完成 | 旧标签仍出现在任一产物 | | 类目层级 | `定邀/报白/白名单准入` 只在 `商品创建 > 商品类目` 下出现 | 仍挂在 `商品类型` 或其他旧路径 | | 大盘分母 | 大盘来自 `一二级标签总表.xlsx` 去重 sessid `77328` | 使用 `45341` 人工原声有效会话当大盘 | ## 输出样例 ```text PASS taxonomy_migration_v31 csv_rows=9335 unique_sessid=9335 html_records=9335 excel_total=9335 forbidden_labels=0 denominator=77328 source=一二级标签总表.xlsx report=analysis/invariant_reports/taxonomy_migration_v31_PASS.json ``` 如果失败,输出应指向最小可修复对象,例如:`FAIL html_records=9281 but csv_rows=9335; rerun build_review_html for v31`。