# 复核页字段契约与口径校验器 ## 诊断流程样例\n\n### 场景\n\n生成 `人工客服原声_智能AI标签体系对齐_session复核_2026-05-14_v31.html` 后,用户打开页面发现左侧汇总区都是空值或 0。\n\n### 输入\n\n```bash\npython scripts/smoke_review_html_contract.py \\\n --html output/review_pages/人工客服原声_智能AI标签体系对齐_session复核_2026-05-14_v31.html \\\n --csv clean/人工客服原声_智能AI标签体系对齐_session复核_2026-05-14_v31.csv \\\n --schema config/review_html_contracts/v31_user_intent.json\n```\n\n### 检查步骤\n\n1. 从 HTML 解析 `window.__REVIEW_PAYLOAD__`,确认 payload 存在且 row count 为 5000。\n2. 从 CSV 读取明细列,确认 `二级分类`、`三级分类`、`四级分类`、`标签层级` 以及页面分组依赖字段都存在。\n3. 比对 schema 中声明的 JS 读取字段与 payload summary 字段,例如页面读取 `二级分类/三级分类/四级分类`,payload 却提供 `生命周期状态/子领域/下一级标签` 时直接 fail。\n4. 用 CSV groupby 复算各层级数量,和 HTML payload 中的 summary 数量做 exact match。\n5. 用浏览器 smoke 打开页面,检查主要汇总表首列文本非空、总数非 0、筛选枚举包含 `商品创建/商品审核/非商品域` 等 v31 项。\n\n### 成功信号\n\n```text\nPASS review_html_contract\nrows: csv=5000 payload=5000\nrequired_columns: ok\nsummary_keys: ok\nrecomputed_summary: ok\nfilter_options: ok\nvisual_smoke: ok\n```\n\n### 失败样例\n\n```text\nFAIL summary_keys\nDOM block: subdomainSummaryTable\nJS expects: 二级分类, 三级分类, 四级分类\npayload has: 生命周期状态, 子领域, 下一级标签\nimpact: rendered row labels empty; dynamic recompute returns 0\nfix: update finalize payload mapping or review template field contract before delivery\n```\n\n### 建议落地\n\n把该脚本挂到所有复核页生成脚本的最后一步:HTML、CSV、Excel 生成完后必须先通过 smoke test,再在最终回复里给用户链接。