# UI 原型源文件与导出图一致性检查 ## 诊断流程样例 ### 场景 用户指出 `点击此处` 仍有下划线,但 HTML 源码里 `.inline-link` 已经是 `text-decoration: none`。目录里同时存在 `文案态`、`半浮层表单态`、`底部半浮层表单态` 三张 PNG。 ### 输入 ```bash python tools/mockup_artifact_check.py \ --source inbox/flower_category_open_mockups.html \ --artifacts 'inbox/鲜花绿植类目开通_*_2026-05-20.png' \ --manifest inbox/mockup_artifacts.manifest.json ``` ### 检查 | 步骤 | 检查内容 | 失败例 | |---|---|---| | source 定位 | 文案是否只来自 mockup HTML,而不是历史数据样本 | 全仓 `rg 点击此处` 命中数据文件,无法确认真实渲染源 | | browser 渲染 | 用本地 HTTP server 渲染 HTML 并截临时 PNG | `file://` 被拒绝,只有代码确认没有视觉确认 | | state 完整性 | manifest 中声明的 3 个 state 是否都重新导出 | 只更新了文案态,半浮层态仍带旧背景 | | 产物一致性 | 临时截图与目标 PNG 的 hash/像素 diff 是否一致 | 目标 PNG 仍有旧卡片或旧下划线 | | 文案规则 | 必含词/禁含词是否满足 | `点击此处` 未替换为 `点击下方`,或 `开通辅营类目` 仍残留 | ### 输出 ```text SOURCE_ARTIFACT_SYNC_FAIL source: inbox/flower_category_open_mockups.html stale_artifacts: - inbox/鲜花绿植类目开通_半浮层表单态_2026-05-20.png reason: PNG contains forbidden text/card not present in current source next: regenerate all states from source, then overwrite target PNGs after backup ``` ### 通过信号 ```text SOURCE_ARTIFACT_SYNC_OK source: inbox/flower_category_open_mockups.html states: 3/3 forbidden_text: 0 pixel_diff: all below threshold artifacts: - 鲜花绿植类目开通_文案态_2026-05-20.png - 鲜花绿植类目开通_半浮层表单态_2026-05-20.png - 鲜花绿植类目开通_底部半浮层表单态_2026-05-20.png ```