# 复核页面本地验收工具
## 复核 HTML Smoke 诊断流程样例
### 入口
```bash
python3 /Users/bytedance/Documents/job-bu/data-analysis-workspace/tools/review_html_smoke.py \
--html /Users/bytedance/Documents/job-bu/data-analysis-workspace/adhoc/2026-05-12_人工客服原声商品域标签对齐/output/人工客服原声_商品域v26对齐复核_2026-05-12_v1.html \
--source /Users/bytedance/Documents/job-bu/data-analysis-workspace/adhoc/2026-05-12_人工客服原声商品域标签对齐/output/商品域v26对齐明细.xlsx \
--expected-count 2201 \
--required-text 定邀/报白/白名单准入 \
--required-text 商品类目 \
--forbid-text 旧子领域 \
--serve-and-open
```
### 输入来源
| 输入 | 用途 |
| --- | --- |
| HTML 文件 | 检查页面结构、内嵌 payload、JS 语法、关键文案 |
| Excel/CSV/JSONL 源表 | 对照明细行数、标签字段、原始行号和抽样 session |
| CLI 参数 | 声明期望条数、必含标签、禁用标签、是否启动本地 HTTP 服务 |
### 核心检查
1. 文件级:HTML 存在、非空、标题和主体容器存在。
2. Payload:自动识别 `window.__DATA__`、`const xxx = [...]` 或 script JSON blob,解析失败立即报 `PAYLOAD`。
3. 数据级:明细数等于 `--expected-count`,源表与 HTML payload 抽样一致。
4. 页面级:存在左侧筛选、标签汇总、右侧 session 卡片、用户/客服气泡、原始行号。
5. 标签级:`--required-text` 必须出现,`--forbid-text` 不得出现。
6. 浏览器级:优先用内嵌浏览器打开 HTTP 本地地址;`file://` 被拦截时不算页面失败,但必须记录降级结果。
### 成功信号
```text
SMOKE_OK html=... rows=2201 payload=ok dom=ok labels=ok browser=http://127.0.0.1:8127/...
```
### 失败信号
```text
COUNT expected=2201 actual=2194 source=html_payload
LABEL forbid_text_found text=旧子领域 count=17
PAYLOAD parse_failed candidate=const DATA reason=not_found tried=window.__DATA__,script[type=application/json],regex_assignments
BROWSER file_scheme_blocked fallback_url=http://127.0.0.1:8127/...
```
### 建议落地
把 smoke log 放在 HTML 同目录,例如 `review_html_smoke_2026-05-12.log`。最终回复用户时只说:页面路径、口径、smoke 是否通过、如果浏览器未验收则说明降级原因。