Files
Neo-ZQYY/.kiro/specs/h5-miniprogram-migration-subsequent/design.md
2026-03-15 10:15:02 +08:00

26 KiB
Raw Blame History

技术设计文档H5 → 微信小程序像素精调

1. 概述

本设计文档为 17 个页面(共 79 个对照处理单元)的 Step 6-7 像素精调提供技术方案。所有页面已完成 Step 0-5 结构迁移TS 零诊断、路由注册、四态处理)。

核心设计思路:以「对照处理单元」为最小粒度,通过两阶段收敛流程(结构级修正 → 像素级精调)系统性消除视觉差异。

参考文档(不重复,仅索引):

  • 迁移规则与转换公式:docs/prd/MIGRATION-PLAYBOOK.md
  • 样式标准值:docs/h5_ui/design-tokens.json(颜色灰阶、字号、圆角、阴影的标准 rpx 值)
  • 工具链源码:scripts/ops/anchor_compare.py

2. 截图策略

2.1 双端参数对齐

参数 H5 MP 对比基准
viewport 430×752 430×752windowHeight 统一
DPR 1.5 1.5MCP 有效 DPR 统一
输出尺寸 645×1128 645×1128 统一,无需缩放

验证数据2026-03-10 board-finance 实测H5 Playwright DPR=1.5 输出 645×1128MP MCP screenshot 输出 645×1128。两端尺寸完全一致无需任何缩放处理。

2.2 固定步长滚动方案

采用固定 600px 步长滚动截图,替代锚点方案。两端使用完全相同的 scrollTop 序列0, 600, 1200, ...),不依赖锚点位置,消除 H5/MP 元素位置差异导致的对齐问题。

核心参数:

  • 步长600px逻辑像素
  • scrollTop 序列:从 0 开始,每次 +600最后一屏 clamp 到 maxScroll = scrollHeight - viewportHeight
  • 段数计算:N = floor(maxScroll / 600) + 1(首屏 step-0 + 每 600px 一步 + 最后一步 clamp 到 maxScrollmaxScroll ≤ 10 的页面视为单屏N=1

实测精度board-finance2026-03-10

  • H5 端Playwright window.scrollTo 精确命中目标值(偏差 0px
  • MP 端:wx.pageScrollTo 精确命中目标值

2.3 底部浮动元素处理

H5 端存在 #bottomNav64px fixed 底部导航)和 .ai-float-btn-container56px 浮动按钮MP 端使用原生 tabBar不在 webview 截图中)。

处理方式H5 截图前用 JS 隐藏所有底部浮动元素:

document.getElementById('bottomNav').style.display = 'none';
document.querySelectorAll('.ai-float-btn-container').forEach(el => el.style.display = 'none');

MP 端原生 tabBar 本来不在截图中无需处理。MP 端如果存在 AI 浮动按钮,因 H5 端已隐藏,该区域的差异在对比时可忽略,不计入差异率。

2.4 浮动元素专项检测(结构校验阶段)

长页面滚动截图中sticky/fixed 元素(如 sticky 导航栏、筛选栏)在每一屏的相同位置出现。通过滚屏上下页对比,可以精准识别这些浮动元素的差异并专项修复。

检测方法:

  1. 对同一页面的相邻屏截图进行对比,在不同屏中持续出现在相同位置的差异区域即为 sticky/fixed 元素
  2. 对 H5 vs MP 的 sticky 区域做像素对比,差异即为浮动元素的样式偏差
  3. sticky 元素差异在每一屏都会重复出现,修复一次即可消除所有屏的该区域差异

适用场景:

  • board-finance.safe-area-top(45px) + #filterBar(71px) = 116px sticky
  • board-coach/board-customer.board-tabs(42px) + .filter-bar(68px) = 110px sticky
  • 所有带 sticky 头部的长页面

优化效果:修复 sticky 区域差异后,所有屏的差异率会同步下降(因为每屏都包含相同的 sticky 区域)。

2.5 截图操作指南

2.5.1 H5 截图

底层技术Playwright + Chromiumviewport 430×752DPR=1.5headless=True。

流程:

  1. 打开 Live Server 提供的 H5 页面(http://localhost:5500/docs/h5_ui/<page>.html
  2. 等待 Tailwind CDN JIT 渲染1500ms
  3. 隐藏滚动条 + 底部浮动元素(#bottomNav + .ai-float-btn-container
  4. 按 scrollTop 序列逐屏截图:先 scrollTo(0,0)scrollTo(0, target)

截图脚本:scripts/ops/anchor_compare.py extract-h5 <page>(固定 600px 步长模式)

输出:docs/h5_ui/compare/<page>/h5--step-<scrollTop>.png645×1128

2.5.2 MP 截图

前置条件微信开发者工具已打开MCP 已连接。

流程:

  1. 导航到目标页面tabBar 页面用 switch_tab,其他用 navigate_to
  2. 等待页面加载2000ms
  3. 按相同 scrollTop 序列逐屏截图:
    // 每屏:先回顶再滚到目标,确保精确
    wx.pageScrollTo({ scrollTop: 0, duration: 0 })
    // 等待 200ms
    wx.pageScrollTo({ scrollTop: target, duration: 0 })
    // 等待 500ms读取实际 scrollTop截图
    

输出:docs/h5_ui/compare/<page>/mp--step-<scrollTop>.png645×1128

2.5.3 多维度页面 MP 截图

board-coach 和 board-customer 为多维度页面,每个维度的卡片模板不同,需逐维度截图。

board-coach4 种排序维度):

  • 维度通过筛选栏下拉切换(onSortChange),对应 4 种卡片模板:perf(定档业绩)、salary(工资)、sv(客源储值)、task(任务完成)
  • MP 操作:获取页面快照 → 点击排序筛选下拉 → 选择目标维度 → 等待列表刷新 → 截图
  • H5 操作:通过 JS 调用 selectType('perf_desc') 等切换 dim-container 显隐 → 截图
  • 子目录:board-coach/perf/board-coach/salary/board-coach/sv/board-coach/task/

board-customer8 种客户维度):

  • 维度通过筛选栏下拉切换(onDimensionChange),对应 8 种卡片模板:recall(最应召回)、potential(消费潜力)、balance(最高余额)、recharge(最近充值)、recent(最近到店)、spend60(最高消费)、freq60(最频繁)、loyal(最专一)
  • MP 操作:获取页面快照 → 点击维度筛选下拉 → 选择目标维度 → 等待列表刷新 → 截图
  • H5 操作:通过 JS 调用 selectType('recall') 等切换 dim-container 显隐 → 截图
  • 子目录:board-customer/recall/board-customer/potential/ ... board-customer/loyal/

交互文档参考:docs/h5_ui/interactions/board-coach.mddocs/h5_ui/interactions/board-customer.md

2.5.4 逐屏对比

对同一 scrollTop 的 H5/MP 截图做像素对比:

mcp_image_compare_compare_images
  image1_path: "docs/h5_ui/compare/<page>/h5--step-<N>.png"
  image2_path: "docs/h5_ui/compare/<page>/mp--step-<N>.png"
  diff_output_path: "docs/h5_ui/compare/<page>/diff--step-<N>.png"
  threshold: 0.1

2.5.5 双端高度不一致处理

MP 端页面高度可能与 H5 不一致(样式差异导致内容更短或更长)。如果直接按 H5 的 scrollTop 序列去滚 MP可能滚过头scrollTo 被 clamp或漏截页面更长

处理流程:

  1. 先截双端 step-0首屏对比确认基线
  2. 再截 step-600第二屏读取 MP 端实际 scrollTop
    • 如果 MP 实际 scrollTop 远小于 600被 clamp说明 MP 页面比 H5 短,后续步骤需按 MP 实际 maxScroll 调整序列
    • 如果 MP 实际 scrollTop ≈ 600说明双端高度接近继续按 H5 序列推进
  3. 之后逐屏推进,每屏截图前先读取 MP 端实际 scrollTop确认到达预期位置
  4. 如果 MP 页面比 H5 长MP 还能继续滚但 H5 序列已结束),追加额外步骤直到 MP 也到达 maxScroll

此规则防止因双端高度差异导致后续屏截图错位或遗漏。

2.6 长页面级联影响与修正规则

修正某一屏的 WXSS 时,可能影响后续屏的布局。因此:

  1. 修正后必须重新截取所有屏的截图(因为固定步长方案下,布局变化会影响每屏内容)
  2. 优先修复 sticky 区域差异(一次修复,所有屏受益)
  3. 从 step-0 开始顺序审查差异,确保前序屏达标后再处理后续屏
  4. 如果修正引入回归,回退到受影响的最早屏重新验证

2.7 结构级视觉元素识别清单(阶段一修正范围)

以下元素类型在双端截图中容易产生大面积差异(>10%),属于阶段一优先识别和修正的对象。严重缺失时可能导致 >15% 触发重写。

2.7.1 大面积背景

背景类型 MP 支持 处理方式
纯色 / linear-gradient / radial-gradient / repeating-linear-gradient 直接迁移,查 docs/h5_ui/design-tokens.json 取精确色值和方向
backdrop-filter: blur() 改用 background: rgba(255,255,255,0.95) 半透明纯色
url("data:image/svg+xml,...") 用 CSS 渐变模拟,或导出为 PNG/base64 引用

精调要点:

  • 渐变方向和色值必须与 H5 完全一致,大面积色差肉眼极其明显
  • 半透明背景透明度差 0.1 在大面积上可见

2.7.2 复杂图标与 SVG

Step 0-5 已完成所有 SVG 迁移决策(详见 MIGRATION-PLAYBOOK.md 3.5 节)。精调阶段关注:

图标类型 精调关注点 已审计案例
TDesign <t-icon> sizerpxcolor 与 H5 原始 SVG 一致 目录按钮 view-list、筛选箭头 caret-down-small
导出 SVG + <image> width/heightrpx与 H5 显示尺寸一致 AI 悬浮按钮、底部导航栏图标
文字/Emoji 替代 可接受差异,不计入差异率 环比箭头 ↑↓、AI 机器人 🤖
CSS 渐变 + 文字组合(如头像) 渐变方向、色值、圆角、文字大小一致 客户头像8 种渐变色 135deg
帮助"?"图标(文字+圆形背景) 圆形背景 size/color、文字 font-size 一致 board-finance 指标标签旁

图标缺失或尺寸严重偏差属于阶段一结构级问题;尺寸/颜色微调属于阶段二。

2.7.3 带文字的标签Badge / Tag

标签是高频偏差元素,涉及背景色、圆角、字号、内边距的组合,任一偏差都会在截图中明显可见:

标签类型 精调维度 已审计偏差案例
状态 Badge跟/弃) 背景渐变、font-size、min-width、height、border-radius 弃 badge radius 10rpx→应为 12rpx
超期标签(超期>7天/≤7天 背景透明度、padding、border-radius、文字色 radius 6rpx→应为 8rpx
潜力标签(高频/高客单/高余额) 背景色、文字色、font-weight 已正确迁移
高消费标签 bg-warning/10 + text-warning + font-bold 已正确迁移
板块标题标签Emoji + 文字) Emoji 渲染、font-size、间距 板块 Emoji 📈💳💰🧾📤🎱 已正确

标签精调规则:

  • 背景色优先查 docs/h5_ui/design-tokens.json,禁止使用非标准色值
  • border-radius 是标签最常见偏差±2rpx必须逐个核对
  • padding 注意 H5 Tailwind 的 px-1.5 py-0.5 换算×2×0.875
  • 渐变背景标签(如跟/弃 badge的渐变方向和双色值必须精确

2.7.4 组合元素(图标+文字+背景)

多个基础元素组合成的复合 UI 单元,整体偏差会被放大:

组合元素 构成 精调关注点
筛选按钮 文字 + 下拉箭头 + 背景 + 圆角 整体高度、内边距、箭头与文字间距
环比指标 数值 + 箭头(↑↓) + 百分比 + 颜色 上升色 #e34d59 / 下降色 #00a870、font-size
确认收入横条 标签 + 金额 + 半透明背景 bg-white/10 透明度、padding、border-radius
迷你柱状图 柱条 + 数字 + 标签 柱条高度/gap/圆角/透明度渐变、数字 font-size
助教服务行 头像 + 姓名 + 分隔符 + 跟/弃 badge 分隔符颜色/间距、badge 与文字对齐
AI 悬浮按钮 图标 + 渐变背景 + 圆角 + 阴影 整体 size、border-radius、渐变色

组合元素精调策略先确认整体布局flex 方向、对齐方式)正确,再逐个子元素微调。

3. 两阶段收敛流程

3.1 流程图

获取双端截图
    ↓
image_compare 对比 → 初始差异率
    ↓
首轮审计报告(截图 + H5 源码 + MP 源码 三方对照)
    ↓
┌─ 差异率 > 10% ──→ 阶段一:结构级修正(每轮 2-5 处)
│                      ↓ 循环直到 ≤ 10%
├─ 差异率 5%~10% ─→ 阶段二:像素级精调(每轮 1-3 处)
│                      ↓ 循环直到 < 5%
├─ 差异率 < 5% ───→ ✅ 通过
└─ > 15% 且无法收敛 → 🔄 触发重写

3.2 首轮审计报告(强制)

第一轮对比完成后,必须同时读取 H5 源码HTML + 内联 CSS 的 Tailwind 类名和 <style> 块)和 MP 源码WXML + WXSS结合 diff 截图三方对照,产出一份完整的审计报告。此报告是后续所有修改的指导依据。

审计报告格式包含:

章节 内容 数据来源
A. 结构对照 页面区域结构是否完整、顺序是否一致 diff 截图 + H5 HTML 结构
B. CSS 风险点 不支持的 CSS 特性(::after 复杂场景、clip-pathbackdrop-filter 等) H5 <style>
C. 关键样式映射 逐元素核对Tailwind 类名 → computed 值 → WXSS 现值 → 是否一致 H5 源码 + MP WXSS
D. 图标处理 每个 SVG/图标的迁移决策和当前状态 H5 源码 + MP WXML
E. 偏差清单 所有 ⚠️ 偏差项汇总,按优先级排序 C/D 节中标记的偏差

审计报告输出到 docs/h5_ui/compare/<page>/audit.md

关键原则:

  • 不能只看 diff 图猜测问题,必须回溯到 H5 源码确认正确值
  • Tailwind 类名是唯一可信的样式来源(不是肉眼估算)
  • 每个偏差项必须记录H5 值(含 Tailwind 类名)→ 换算后的 rpx 值 → MP 现值 → 差异
  • 审计报告完成后,阶段一/二的修正严格按报告中的偏差清单执行

3.3 阶段一:结构级修正

目标:消除明显的视觉差异,将差异率从 >10% 降到 ≤10%。

修正重点(按优先级):

  1. 区域缺失或顺序错误
  2. 整块背景色/渐变色不匹配
  3. 字号明显偏差≥4rpx
  4. 间距明显偏差≥4rpx

操作模式:

  • 按审计报告偏差清单逐项修正,不靠肉眼猜测
  • 对照 H5 源码 Tailwind 类名 + docs/h5_ui/design-tokens.json 确认正确值
  • 修改 WXSS → 重新截图 → 重新对比

3.4 阶段二:像素级精调

目标:消除细微差异,将差异率从 5%~10% 降到 <5%。

修正重点(按优先级):

  1. 小边距偏差padding/margin/gap ±2rpx如卡片 30→28rpx、列表容器 24→28rpx、分隔符 margin 6→10rpx
  2. 圆角border-radius偏差±2rpx如标签 6→8rpx、卡片 28→32rpx
  3. 颜色色值微调(灰阶偏差如 #c5c5c5→#a6a6a6、透明度差 0.1
  4. 行高line-height缺失或偏差、字重font-weight微调如 600→500
  5. 阴影box-shadow参数微调

操作模式:

  • 使用 image_compare 精确定位差异像素区域
  • 参考 computed-styles.json如有或 H5 源码精确值
  • 每次只改 1-3 处,验证不引入新差异

3.5 收敛停滞处理

当差异率连续 3 轮未下降超过 1% 时:

  1. 分析剩余差异是否为不可消除的结构性差异(字体渲染、抗锯齿、头部区域)
  2. 若是 → 标注为可接受差异,记录到 report.md停止该区域精调
  3. 若否 → 尝试不同修正策略(如换用 flex 布局替代绝对定位)

4. 修改优先级规则(经验提炼)

基于 board-finance17 项偏差、board-coach17 项偏差、board-customer42 项偏差)的实际审计经验,提炼出以下规则:

4.1 高频偏差类型

偏差类型 出现频率 典型案例 修正策略
font-size 偏差 极高 Tab 26rpx→24rpx, 金额 28rpx→32rpx 查 Tailwind 类名换算
border-radius 偏差 标签 6rpx→8rpx, 卡片 28rpx→32rpx, 头像 14rpx→24rpx design-tokens.json
padding/margin 偏差 卡片 30rpx→28rpx, 列表容器 24rpx→28rpx 查 Tailwind 类名换算
line-height 缺失 Tab 文字未写 line-height line-height: 36rpx
颜色偏差 灰色 #c5c5c5→#a6a6a6, 边框 #eeeeee→#e7e7e7 design-tokens.json 灰阶
font-weight 偏差 数据行 600→500 查 Tailwind 类名
flex 比例偏差 筛选按钮 1.8→2 查 H5 源码

4.2 跨页面共性偏差

以下偏差在三个看板页面中重复出现,修正一个页面后应同步检查其他页面:

  • Tab 导航font-size 26→24rpx, padding 24→22rpx, line-height 缺失→36rpx
  • 筛选栏内层border-radius 14→16rpx或 32rpx取决于页面
  • 卡片padding-top/bottom 30→28rpx, margin-bottom 20→22rpx
  • 标签border-radius 6→8rpx

4.3 不修复的差异

以下差异属于结构性差异或设计决策差异,不计入差异率:

  • 头部区域H5 safe-area-top vs MP 状态栏+胶囊)
  • 字体渲染差异H5 Noto Sans SC vs MP 系统字体)
  • 环比箭头H5 SVG vs MP 文字 ↑↓,已确认可接受)
  • AI 浮动按钮区域H5 已隐藏MP 端如存在则忽略该区域差异)

5. 页面清单与截图参数

所有页面统一使用固定 600px 步长滚动截图,不依赖锚点。步数基于 Playwright 实测的 maxScroll = scrollHeight - viewportHeight,公式:N = floor(maxScroll / 600) + 1maxScroll ≤ 10 视为单屏N=1

以下数据基于 2026-03-10 Playwright 实测430×752 视口DPR=1.5,展开所有折叠区域),验证脚本 scripts/ops/_verify_step_counts.py,原始数据 export/SYSTEM/REPORTS/h5_page_heights/step_counts_verified.json

# 页面 scrollHeight maxScroll 实测步数 scrollTop 序列 主要内容区域
1 board-finance 5600 4848 10 0,600,...,4800,4848 经营一览 / 预收资产 / 应计收入确认 / 现金流入 / 现金流出 / 助教分析
2 board-coach 754 2 1★ 0 助教卡片列表×4 排序维度perf/salary/sv/task
3 board-customer 752 0 1 0 客户卡片列表×8 客户维度recall/potential/balance/recharge/recent/spend60/freq60/loyal
4 task-detail 2995 2243 5 0,600,1200,1800,2243 Banner / 关系 / 建议 / 线索 / 备注
5 task-detail-callback 2397 1645 4 0,600,1200,1645 同上teal 主题)
6 task-detail-priority 2389 1637 4 0,600,1200,1637 同上orange 主题)
7 task-detail-relationship 2275 1523 4 0,600,1200,1523 同上pink 主题)
8 coach-detail 2918 2166 5 0,600,1200,1800,2166 Banner / 绩效概览 / 收入明细 / 前10客户
9 customer-detail 3070 2318 5 0,600,1200,1800,2318 Banner / AI洞察 / 线索 / 任务 / 最爱助教 / 消费记录
10 performance 7705 6953 13 0,600,...,6600,6953 Banner / 收入 / 本月业绩 / 上月收入 / 新客 / 常客(最长页面)
11 task-list 1428 676 3 0,600,676 Banner业绩卡 / 任务列表
12 my-profile 752 0 1 0 整页(单屏)
13 customer-service-records 961 209 2 0,209 Banner统计 / 记录列表
14 performance-records 2677 1925 5 0,600,1200,1800,1925 Banner / 统计概览 / 记录列表
15 chat 1061 309 2 0,309 对话区 / 输入区
16 chat-history 752 0 1 0 整页(单屏)
17 notes 1709 957 3 0,600,957 导航 / 备注列表

★ board-coach maxScroll=2px按实用主义规则≤10px视为单屏。 单屏页面board-coach、board-customer、my-profile、chat-history只需 step-0 一张截图。多维度页面需切换维度后分别截图board-coach ×4 排序维度通过排序筛选下拉切换、board-customer ×8 客户维度(通过维度筛选下拉切换)。

5.1 对照处理单元计算

对照处理单元 = 每页实测步数 × 维度数(无维度的页面维度数=1。数据来源2026-03-10 Playwright 实测(scripts/ops/_verify_step_counts.py)。

页面 步数 维度数 单元数
board-finance 10 1 10
board-coach 1★ 4 4
board-customer 1 8 8
task-detail 5 1 5
task-detail-callback 4 1 4
task-detail-priority 4 1 4
task-detail-relationship 4 1 4
coach-detail 5 1 5
customer-detail 5 1 5
performance 13 1 13
task-list 3 1 3
my-profile 1 1 1
customer-service-records 2 1 2
performance-records 5 1 5
chat 2 1 2
chat-history 1 1 1
notes 3 1 3
合计 79

★ board-coach maxScroll=2px按实用主义规则≤10px视为单屏。

6. 产出物归档结构

所有截图、diff、审计报告统一归入 docs/h5_ui/compare/,按页面分子目录。

docs/h5_ui/compare/
├── board-finance/
│   ├── h5--step-0.png          # H5 截图645×1128
│   ├── h5--step-600.png
│   ├── mp--step-0.png          # MP 截图645×1128
│   ├── mp--step-600.png
│   ├── diff--step-0.png        # 像素对比 diff 图
│   ├── diff--step-600.png
│   ├── report.md               # 差异率汇总 + 对比分析
│   └── audit.md                # 三方对照审计报告
├── board-coach/
│   ├── perf/                   # 多维度页面按排序维度分子目录
│   │   ├── h5--step-0.png
│   │   ├── mp--step-0.png
│   │   └── diff--step-0.png
│   ├── salary/
│   ├── sv/
│   ├── task/
│   ├── report.md
│   └── audit.md
├── board-customer/
│   ├── recall/                 # 8 种客户维度各一个子目录
│   ├── potential/
│   ├── balance/
│   ├── recharge/
│   ├── recent/
│   ├── spend60/
│   ├── freq60/
│   ├── loyal/
│   ├── report.md
│   └── audit.md
├── my-profile/                 # 单屏页面
│   ├── h5--step-0.png
│   ├── mp--step-0.png
│   ├── diff--step-0.png
│   ├── report.md
│   └── audit.md
...17 个页面各一个子目录)

文件命名规则:

  • h5--step-<scrollTop>.png / mp--step-<scrollTop>.png / diff--step-<scrollTop>.png
  • scrollTop 值0, 600, 1200, 1800 ...
  • 文件名不含页面名(已在子目录中)
  • 单屏页面只有 --step-0 一组
  • 多维度页面board-coach ×4 排序维度、board-customer ×8 客户维度)按维度分子目录

废弃目录(不再使用):

  • docs/h5_ui/screenshots/ → 已清理
  • docs/h5_ui/mp-screenshots/ → 已清理
  • docs/h5_ui/h5-segments/ → 已清理
  • docs/h5_ui/diffs/ → 已清理
  • docs/h5_ui/anchors/ → 已清理
  • docs/h5_ui/analysis/ → 审计报告迁入各页面子目录

7. 风险与依赖

7.1 外部依赖

依赖项 风险等级 说明 Fallback
微信开发者工具 MCP 连接 MCP 连接偶尔断开(超时/端口占用),需重连 reconnect_devtools 重连;若反复失败,手动截图后放入 compare/<page>/
Playwright 浏览器 首次运行需 playwright install chromium uv run playwright install chromium
image_compare MCP MCP server 未启动时 compare_images 不可用 使用 anchor_compare.py compare 命令行替代

7.2 已知限制

  • 字体渲染引擎差异Chromium vs 微信 webview可能引入约 1-2% 的固有差异率
  • 字体渲染差异H5 Noto Sans SC vs MP 系统字体)不可消除,属于可接受差异
  • 微信开发者工具截图不支持指定 DPR实际 DPR 取决于模拟器设置(当前 iPhone 15 Pro Max 有效 DPR=1.5
  • board-coach/board-customer 的多维度截图验证4/8 种维度)需要 Mock 数据支持不同维度的展示

8. 页面执行顺序

8.0 前置任务TS 零诊断基线检查与共性偏差批量修复

在进入 A 批次之前,需完成两项前置工作:

8.0.1 TS 零诊断基线检查

对 17 个页面的 .ts 文件运行 getDiagnostics,确认全部为零诊断。这是 Step 0-5 结构迁移的交付基线,如果此时已有 TS 错误,必须先修复再进入像素精调,否则精调过程中引入的新错误会与历史错误混淆。

8.0.2 跨页面共性偏差批量修复

基于 4.2 节已识别的跨页面共性偏差,在 app.wxss 或共享组件样式中统一修正:

共性偏差 涉及页面 修正方案
Tab 导航 font-size 26→24rpx board-finance/coach/customer 统一修正各页面 Tab 样式
Tab 导航 padding 24→22rpx board-finance/coach/customer 同上
Tab 导航 line-height 缺失→36rpx board-finance/coach/customer 同上
筛选栏内层 border-radius 14→16rpx board-finance/coach/customer 统一修正筛选栏样式
卡片 padding-top/bottom 30→28rpx board-finance/coach/customer 统一修正卡片容器样式
标签 border-radius 6→8rpx board-finance/coach/customer 统一修正标签样式

先批量修复共性偏差,再进入各页面的个性化精调,可显著减少重复工作量。修复后需对三个看板页面快速截图验证,确认共性修正未引入新问题。

8.1 批次执行顺序

按原批次顺序,简单页面优先积累经验:

批次 页面 预估复杂度 对照单元总数
A board-finance, board-coach, board-customer 22
B task-list, my-profile 低-中 4
C task-detail主页面 5 单元)+ 3 变体(各 4 单元,仅验证主题色) 17
D coach-detail, customer-detail, customer-service-records 12
E performance, performance-records 18
F chat, chat-history 3
G notes 3
合计 79