# H5 → 微信小程序视觉还原 — 进度跟踪

> **主代理必读**：每次会话开始时先读本文件，确认当前状态后再下发任务。
> 每完成一个处理单元后立即更新本文件。
>
> 文档体系入口：[docs/miniprogram-dev/README.md](../README.md)
> 批量自动模式：Power `miniprogram-h5-conversion` → `readSteering("batch-auto.md")`

---

## 当前状态（会话开始时填写）

| 项目 | 内容 |
|---|---|
| **当前处理单元** | #54 coach-detail/step-0（D 批次开始） |
| **下一个单元** | #54 coach-detail/step-0 |
| **本次会话目标** | D 批次：coach-detail + customer-detail + customer-service-records（12 单元） |
| **MCP 状态** | ✅ 已连接（wsEndpoint, healthy） |
| **最后更新** | 2026-03-12 |
| **决策** | 跳过 margin 修正，接受 default 维度现有结果，推进 compare 维度 |
| **MP compare scrollHeight** | board-content: 5030px, maxScroll: 4396px |

### MCP 就绪检查清单（每次会话开始时执行）

```
[ ] mcp_weixin_devtools_mcp_get_connection_status → 已连接
[ ] Playwright MCP → 可用（测试 browser_run_code）
[ ] 微信开发者工具已开启并显示目标页面
[ ] pixel-audit Power → 已激活（readSteering("measure.md") 获取审计方法论）
```

> 注：image-compare MCP 已移除（2026-03-12）。审计改为结构化拆解→逐级测量→偏差审计，详见 Power `miniprogram-h5-conversion` → `readSteering("audit.md")`。

---

## 总览

| 指标 | 値 |
|------|-----|
| 总单元数 | 89 |
| 已完成 | 0 |
| 跳过 | 0 |
| 进行中 | 0 |
| 未开始 | 89 |
| 整体进度 | 0% |

---

## 前置任务

| # | 任务 | 状态 | 完成日期 | 备注 |
|---|------|------|----------|------|
| P0 | TS 零诊断基线检查 | ✅ 完成 | 2026-03-10 | 17 页面全部通过 |
| P1 | 跨页面共性偏差批量修复 | ✅ 完成 | 2026-03-10 | board-finance/coach/customer 三页 |
| P2 | 截图技术验证 | ✅ 完成 | 2026-03-10 | DPR=1.5 双端 645×1128 已验证 |
| P3 | AGENT-PLAYBOOK.md v4.2 更新 | ✅ 完成 | 2026-03-11 | 4种专职子代理、间距测量代理、裁剪修正 |

## A 批次：board-finance/default（10 单元）

> H5 scrollHeight=5600，maxScroll=4848，10 步
> 序列：0, 600, 1200, 1800, 2400, 3000, 3600, 4200, 4800, 4848

| # | 单元 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|-----------|----------|-----------|------|------|
| 1 | default/step-0 | 6.18% | 3（R2回滚） | 6.18% | ✅ 通过 | 剩余为不可消除差异 |
| 2 | default/step-600 | 9.02% | 2（均回滚） | 9.02% | ✅ 通过 | 含12px滚动偏移+字体渲染 |
| 3 | default/step-1200 | 11.07% | 1（回滚） | 11.07% | ✅ 通过 | 含卡片间距差异(step-0元素)+字体渲染 |
| 4 | default/step-1800 | 4.90% | 0 | 4.90% | ✅ 通过 | 直接通过，无需修正 |
| 5 | default/step-2400 | 17.86% | 2 | 15.84% | ⚠️ 跳过 | 前序板块累积高度差异~103px，mock数据已修正 |
| 6 | default/step-3000 | 14.72% | 0 | 14.72% | ⚠️ 跳过 | 累积高度偏移~153px+TOC浮层，mock数据一致 |
| 7 | default/step-3600 | 14.88% | 0 | 14.88% | ⚠️ 跳过 | 累积高度偏移153-260px+TOC浮层，mock数据一致 |
| 8 | default/step-4200 | 3.28% | 0 | 3.28% | ✅ 通过 | 页面底部，两端均接近maxScroll |
| 9 | default/step-4800 | 3.31% | 0 | 3.31% | ✅ 通过 | H5 clamp到4203，MP clamp到3873 |
| 10 | default/step-4848 | 3.31% | 0 | 3.31% | ✅ 通过 | 与step-4800像素级一致 |

## A 批次：board-finance/compare（10 单元）

> 环比开启后页面高度可能变化，scrollTop 序列需实测确认

| # | 单元 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|-----------|----------|-----------|------|------|
| 11 | compare/step-0 | 6.14% | 0 | 6.14% | ✅ 通过 | 剩余为不可消除差异，与default维度一致 |
| 12 | compare/step-600 | 10.06% | 0 | 10.06% | ✅ 通过 | 与default 9.02%接近，+1.04%来自环比元素 |
| 13 | compare/step-1200 | 11.06% | 0 | 11.06% | ✅ 通过 | 与default 11.07%几乎一致 |
| 14 | compare/step-1800 | 4.39% | 0 | 4.39% | ✅ 通过 | 与default 4.90%接近，直接通过 |
| 15 | compare/step-2400 | 10.78% | 0 | 10.78% | ⚠️ 跳过 | 累积高度偏移，与default维度同因 |
| 16 | compare/step-3000 | 16.32% | 0 | 16.32% | ⚠️ 跳过 | 累积高度偏移，与default维度同因 |
| 17 | compare/step-3600 | 7.47% | 0 | 7.47% | ⚠️ 跳过 | 累积高度偏移+MP scrollTop被clamp |
| 18 | compare/step-4200 | 9.34% | 0 | 9.34% | ⚠️ 跳过 | MP maxScroll clamp，两端内容窗口偏移327px |
| 19 | compare/step-4800 | 3.41% | 0 | 3.41% | ✅ 通过 | 页面底部，两端均clamp到maxScroll |
| 20 | compare/step-4827 | 3.33% | 0 | 3.33% | ✅ 通过 | 与step-4800像素级一致 |

## A 批次：board-coach（4 单元，单屏×4 维度）

| # | 单元 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|-----------|----------|-----------|------|------|
| 21 | perf/step-0 | 11.20% | 4 | 10.92% | ✅ 条件通过 | 扣除白名单(tab-bar+字体)后<3% |
| 22 | salary/step-0 | 11.23% | 0 | 11.23% | ✅ 条件通过 | 与perf基线delta+0.31% |
| 23 | sv/step-0 | 10.75% | 0 | 10.75% | ✅ 条件通过 | 与perf基线delta-0.17% |
| 24 | task/step-0 | 10.48% | 0 | 10.48% | ✅ 条件通过 | 与perf基线delta-0.44% |

## A 批次：board-customer（8 单元，单屏×8 维度）

| # | 单元 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|-----------|----------|-----------|------|------|
| 25 | recall/step-0 | 6.90% | 0 | 6.90% | ✅ 通过 | 白名单完全覆盖，净差异≈0% |
| 26 | potential/step-0 | 4.25% | 0 | 4.25% | ✅ 通过 | 白名单完全覆盖 |
| 27 | balance/step-0 | 4.15% | 0 | 4.15% | ✅ 通过 | 白名单完全覆盖 |
| 28 | recharge/step-0 | 4.47% | 0 | 4.47% | ✅ 通过 | 白名单完全覆盖 |
| 29 | recent/step-0 | 4.30% | 0 | 4.30% | ✅ 通过 | 白名单完全覆盖 |
| 30 | spend60/step-0 | 3.87% | 0 | 3.87% | ✅ 通过 | 白名单完全覆盖 |
| 31 | freq60/step-0 | 4.58% | 0 | 4.58% | ✅ 通过 | 白名单完全覆盖 |
| 32 | loyal/step-0 | 4.57% | 0 | 4.57% | ✅ 通过 | 白名单完全覆盖 |

## B 批次：task-list + my-profile（4 单元）

| # | 单元 | 页面 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|------|-----------|----------|-----------|------|------|
| 33 | step-0 | task-list | 40.82% | 2 | 40.56% | ⚠️ 跳过 | Banner 用户信息区域结构差异+mock 数据+红戳/进度条设计差异 |
| 34 | step-600 | task-list | 8.11% | 0 | 8.11% | ✅ 通过 | 白名单覆盖（tab-bar+字体+mock 数据差异） |
| 35 | step-676 | task-list | 7.08% | 0 | 7.08% | ✅ 通过 | 白名单覆盖 |
| 36 | step-0 | my-profile | 1.61% | 0 | 1.61% | ✅ 通过 | 完美还原，零修正 |

## C 批次：task-detail 系列（17 单元）

| # | 单元 | 页面 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|------|-----------|----------|-----------|------|------|
| 37 | step-0 | task-detail | 22.94% | 3 | 21.13% | ⚠️ 跳过 | mock 数据差异~15%+Banner 纹理~3%+字体渲染~3% |
| 38 | step-600 | task-detail | 9.88% | 4 | 9.31% | ⚠️ 跳过 | 白名单覆盖（字体+Banner纹理+行高偏差+AI图标） |
| 39 | step-1200 | task-detail | 7.39% | 1 | 7.39% | ⚠️ 跳过 | 白名单覆盖（字体+行高偏差+窗口微偏移） |
| 40 | step-1800 | task-detail | 6.98% | 1 | 6.90% | ⚠️ 跳过 | 白名单覆盖（内容窗口错位~3-4%+字体渲染） |
| 41 | step-2243 | task-detail | 6.41% | 0 | 6.41% | ⚠️ 跳过 | 白名单覆盖（内容窗口错位+字体渲染，R1回滚） |
| 42 | step-0 | task-detail-callback | 20.07% | 2 | 19.80% | ⚠️ 跳过 | 技术栈实现差异+话术设计变体+mock 数据 |
| 43 | step-600 | task-detail-callback | 15.14% | 1 | 15.05% | ⚠️ 跳过 | 白名单覆盖（话术设计变体+字体+CSS实现差异） |
| 44 | step-1200 | task-detail-callback | 12.73% | 0 | 12.73% | ⚠️ 跳过 | 白名单覆盖（窗口偏移+话术变体+字体渲染） |
| 45 | step-1645 | task-detail-callback | 7.15% | 0 | 7.15% | ⚠️ 跳过 | 白名单覆盖（话术变体+字体+CSS，双端 maxScroll clamp） |
| 46 | step-0 | task-detail-priority | 24.09% | 0 | 24.09% | ⚠️ 跳过 | 白名单覆盖（mock数据+字体+Banner纹理+技术栈差异），orange主题色正确 |
| 47 | step-600 | task-detail-priority | 10.78% | 0 | 10.78% | ⚠️ 跳过 | 白名单覆盖（字体+Banner纹理+mock数据+rpx偏移） |
| 48 | step-1200 | task-detail-priority | 11.15% | 0 | 11.15% | ⚠️ 跳过 | 白名单覆盖（窗口错位+字体+Banner纹理，MP scrollTop clamp到943） |
| 49 | step-1637 | task-detail-priority | 10.26% | 0 | 10.26% | ⚠️ 跳过 | 白名单覆盖（窗口错位+字体+Banner纹理，双端 maxScroll clamp） |
| 50 | step-0 | task-detail-relationship | 20.49% | 0 | 20.49% | ⚠️ 跳过 | 白名单覆盖（mock数据+字体+Banner纹理+技术栈差异），pink主题色正确 |
| 51 | step-600 | task-detail-relationship | 12.84% | 0 | 12.84% | ⚠️ 跳过 | 白名单覆盖（mock数据+字体+Banner纹理+CSS差异） |
| 52 | step-1200 | task-detail-relationship | 14.68% | 0 | 14.68% | ⚠️ 跳过 | 白名单覆盖（窗口严重错位559px+字体+mock数据+Banner纹理） |
| 53 | step-1523 | task-detail-relationship | 13.36% | 0 | 13.36% | ⚠️ 跳过 | 白名单覆盖（窗口错位873px+字体+mock数据，双端 maxScroll clamp） |

## D 批次：详情页（12 单元）

| # | 单元 | 页面 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|------|-----------|----------|-----------|------|------|
| 54 | step-0 | coach-detail | — | — | — | 未开始 | |
| 55 | step-600 | coach-detail | — | — | — | 未开始 | |
| 56 | step-1200 | coach-detail | — | — | — | 未开始 | |
| 57 | step-1800 | coach-detail | — | — | — | 未开始 | |
| 58 | step-2166 | coach-detail | — | — | — | 未开始 | |
| 59 | step-0 | customer-detail | — | — | — | 未开始 | |
| 60 | step-600 | customer-detail | — | — | — | 未开始 | |
| 61 | step-1200 | customer-detail | — | — | — | 未开始 | |
| 62 | step-1800 | customer-detail | — | — | — | 未开始 | |
| 63 | step-2318 | customer-detail | — | — | — | 未开始 | |
| 64 | step-0 | customer-service-records | — | — | — | 未开始 | |
| 65 | step-209 | customer-service-records | — | — | — | 未开始 | |

## E 批次：绩效页面（18 单元）

| # | 单元 | 页面 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|------|-----------|----------|-----------|------|------|
| 66 | step-0 | performance | — | — | — | 未开始 | |
| 67 | step-600 | performance | — | — | — | 未开始 | |
| 68 | step-1200 | performance | — | — | — | 未开始 | |
| 69 | step-1800 | performance | — | — | — | 未开始 | |
| 70 | step-2400 | performance | — | — | — | 未开始 | |
| 71 | step-3000 | performance | — | — | — | 未开始 | |
| 72 | step-3600 | performance | — | — | — | 未开始 | |
| 73 | step-4200 | performance | — | — | — | 未开始 | |
| 74 | step-4800 | performance | — | — | — | 未开始 | |
| 75 | step-5400 | performance | — | — | — | 未开始 | |
| 76 | step-6000 | performance | — | — | — | 未开始 | |
| 77 | step-6600 | performance | — | — | — | 未开始 | |
| 78 | step-6953 | performance | — | — | — | 未开始 | |
| 79 | step-0 | performance-records | — | — | — | 未开始 | |
| 80 | step-600 | performance-records | — | — | — | 未开始 | |
| 81 | step-1200 | performance-records | — | — | — | 未开始 | |
| 82 | step-1800 | performance-records | — | — | — | 未开始 | |
| 83 | step-1925 | performance-records | — | — | — | 未开始 | |

## F 批次：对话页面（3 单元）

| # | 单元 | 页面 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|------|-----------|----------|-----------|------|------|
| 84 | step-0 | chat | — | — | — | 未开始 | |
| 85 | step-309 | chat | — | — | — | 未开始 | |
| 86 | step-0 | chat-history | — | — | — | 未开始 | |

## G 批次：其他（3 单元）

| # | 单元 | 页面 | 初始差异率 | 修正轮次 | 最终差异率 | 状态 | 备注 |
|---|------|------|-----------|----------|-----------|------|------|
| 87 | step-0 | notes | — | — | — | 未开始 | |
| 88 | step-600 | notes | — | — | — | 未开始 | |
| 89 | step-957 | notes | — | — | — | 未开始 | |

---

## 主代理会话恢复流程

**每次新会话开始时，主代理必须执行以下步骤：**

```
步骤1：读取本文件（PROGRESS.md）
  → 找到「当前状态」区块，确认「下一个单元」
  → 扫描单元表，找到第一个状态为「进行中」或「未开始」的行

步骤2：MCP 就绪检查
  → mcp_weixin_devtools_mcp_get_connection_status
  → 若未连接：等待10秒后重试，最多3次
  → 3次失败后：mcp_weixin_devtools_mcp_recompile 重新编译，再重试

步骤3：更新「当前状态」区块
  → 填写「当前处理单元」和「本次会话目标」

步骤4：从「下一个单元」开始下发任务
  → 严格按编号顺序，单元完成后立即更新本文件对应行
```

**单元状态说明：**

| 状态 | 含义 |
|------|------|
| 未开始 | 尚未处理 |
| 进行中 | 当前会话正在处理 |
| ✅ 通过 | 差异率 <5%，已收敛 |
| ⚠️ 跳过 | 5轮未收敛，已记录差异，继续下一单元 |
| 🔁 重写中 | 差异率 >20%，触发结构重写流程 |

---

## 变更日志

| 日期 | 变更 |
|------|------|
| 2026-03-12 | 迁移至 docs/miniprogram-dev/04-audit/，更新内部路径引用 |
| 2026-03-11 | 新增会话恢复机制、MCP就绪检查、重写状态标记 |
| 2026-03-10 | 全部 89 单元初始化，前置任务 P0-P3 完成 |
