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

475 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现计划H5 → 微信小程序批量迁移
## 概述
基于 33 条需求和技术设计文档,将 17 个 H5 原型页面迁移为原生微信小程序页面。按 A-G 七个批次执行,每页走完 7 步标准流程(含 Step 0 页面分析)。输入物分两批提供:第一批(结构迁移 Step 0-5、第二批像素精调 Step 6-7
## 任务
- [x] 1. 全局基础设施搭建
- [x] 1.1 创建 AI 图标配色工具模块
- 文件:`utils/ai-color.ts`
- 实现 `AI_COLOR_SCHEMES` 常量6 种配色red/orange/yellow/blue/indigo/purple
- 实现 `getRandomAiColor()` 函数,返回 `{ className, vars }` 对象
- _需求: 32.1, 32.3, 32.5_
- [x] 1.2 创建 AI 图标全局 WXSS 样式
-`app.wxss` 中添加 `.ai-inline-icon``.ai-title-badge``.ai-color-*` 6 个配色类
- 实现 `ai-shimmer`12s`ai-pulse`3s两个 `@keyframes` 动画
- _需求: 32.1, 32.2_
- [x] 1.3 导出小系列机器人 SVG
- 从 H5 源码提取白色填充版机器人 SVG保存为 `assets/icons/ai-robot-sm.svg`
- 复用已有 `assets/icons/ai-robot.svg`(大系列)
- 更新 `docs/h5_ui/icon-mapping.md`
- _需求: 32.6, 33.2, 33.3_
- [x] 1.4 创建中间生成物目录结构
- 创建 `docs/h5_ui/mp-screenshots/`MP 截图,按页面分子目录)
- 创建 `docs/h5_ui/diffs/`(像素对比结果,按页面分子目录)
- 创建 `docs/h5_ui/h5-segments/`H5 逐段截图,按页面分子目录)
- 确认 `.gitignore` 不排除这些目录
- _需求: 33.1_
- [x] 1.5 验证全局基础设施
- 编译验证 `app.wxss` 无警告
- 在任意已有页面中测试 AI 配色工具模块可正常导入和调用
- _需求: 17.1_
- [ ] 2. A 批次 — board-finance看板-财务)
- [x] 2.1 Step 0: 页面分析
- 打开 H5 原型截图 + `interactions/board-finance.md`
- 确认屏数(预计 6 段:经营一览/预收资产/应计收入/现金流入/现金流出/助教分析)
- 列出所有交互态(时间筛选/区域筛选/指标弹窗/目录面板/长按菜单)
- 输出工作量估算表
- _需求: 1.1, 1.3_
- [x] 2.2 Step 1-2: 输入物冻结 + 迁移审计
- 冻结第一批输入物Playbook + design-tokens + icon-mapping + HTML + CSS + interactions
- 输出《迁移审计报告》7 项(页面结构/CSS 风险/样式映射/图标处理/交互映射/外部依赖/缺失信息)
- _需求: 3.1, 3.2, 4.1, 4.2, 4.3_
- [x] 2.3 Step 3: 规则化转换(按屏逐个开发)
- 创建四文件骨架 → .json 注册组件 → 按屏转换 WXML/WXSS/TS
- 包含filter-dropdown 复用、metric-card 复用、ai-float-button 集成
- filter-bar 高度统一 70 逻辑像素
- Mock 数据 + 三态处理
- _需求: 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 21, 23.1, 32_
- [x] 2.4 Step 4-5: 编译验证 + 结构还原验证
- 7 项编译检查WXML/WXSS/控制台/图片/组件/路由/TS 类型)
- 9 项结构核对(按屏逐个验证)
- _需求: 17, 18_
- [-] 2.5 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 1.1
- _需求: 3.3, 19, 20_
- [ ] 3. A 批次 — board-coach看板-助教)
- [x] 3.1 Step 0: 页面分析
- 确认屏数、交互态(排序筛选/擅长项目筛选/时间筛选)
- _需求: 1.1, 1.3_
- [x] 3.2 Step 1-2: 输入物冻结 + 迁移审计
- _需求: 3.1, 3.2, 4_
- [x] 3.3 Step 3: 规则化转换
- P0: error 状态补充WXML 分支 + TS onRetry + pageState 类型扩展)
- P1: 卡片按压反馈hover-class="coach-card--hover" 替代 :active
- P2: dev-fab 组件注册JSON 补注册)
- P3: 样式偏差修复 8 项Tab 24rpx/36rpx/22rpx、salary-amount 32rpx、right-sub #a6a6a6 22rpx、right-text 24rpx、right-highlight 28rpx、filter-item--wide flex:2
- _需求: 5-16, 21, 23.2, 23.4, 23.5, 32_
- [x] 3.4 Step 4-5: 编译验证 + 结构还原验证
- 7/7 编译检查通过9/9 结构核对通过
- _需求: 17, 18_
- [-] 3.5 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 1.2
- _需求: 19, 20_
- [x] 4. A 批次 — board-customer看板-客户)
- [x] 4.1 Step 0: 页面分析
- 确认屏数、交互态(客户类型筛选/偏爱项目筛选)
- _需求: 1.1, 1.3_
- [x] 4.2 Step 1-2: 输入物冻结 + 迁移审计
- _需求: 3.1, 3.2, 4_
- [x] 4.3 Step 3: 规则化转换
- P0: error 状态补充WXML + TS + WXSS
- P1: 卡片按压反馈hover-class 替代 :active
- P2: dev-fab 组件注册
- P3: 16 项 Step 3 级别样式偏差修复Tab/筛选栏/卡片圆角/头像/中间行/网格/柱状图/专一表等)
- _需求: 5-16, 21, 23.3, 23.4, 23.5, 32_
- [x] 4.4 Step 4-5: 编译验证 + 结构还原验证
- 7/7 编译检查通过11/11 结构核对通过
- _需求: 17, 18_
- [-] 4.5 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 1.3
- _需求: 19, 20_
- [x] 5. 检查点 A — 看板批次验收
- 3 个看板页面全部编译零错误
- 共享组件filter-dropdown、board-tab-bar、ai-float-button、dev-fab、heart-icon在所有页面中正确注册和引用
- 四态处理loading/empty/error/normal统一实现
- Tab 样式跨页面统一24rpx/36rpx/22rpx
- Step 6-7 像素精调待第二批输入物
- [ ] 6. B 批次 — task-list任务列表
- [x] 6.1 Step 0: 页面分析
- 确认屏数、交互态(长按菜单/备注弹窗/空状态)
- 历史实现差异极大接近全量重写Banner 17%、交互 23%、列表分区 0%
- _需求: 1.1_
- [x] 6.2 Step 1-2: 输入物冻结 + 迁移审计
- 输出审计报告含 7 节A-G+ C 节 13 子节样式映射
- 识别 8 个 Step 3 工作项P0-P72 个高复杂度
- _需求: 3, 4_
- [x] 6.3 Step 3: 规则化转换(全量重写 4 文件)
- P0: Banner 业绩进度卡片4 层:跳档提示 + 5 段进度条 + 课时红戳奖金 + 预计收入)
- P1: 卡片内容改造(第二行→最近到店+余额、第三行→AI 图标+建议、箭头→t-icon
- P2: 列表三区分组pinnedTasks/normalTasks/abandonedTasks + 分区标签)
- P3: 自定义长按菜单ctx-overlay + ctx-menu + 4 项 + 坐标定位 + 边界检测 + _longPressed 防冲突)
- P4: 放弃弹窗页面内实现textarea 必填校验 + 红色按钮)
- P5: error 状态 + dev-fab 注册 + hover-class
- P6: 盖戳动画(@keyframes stampDown + setTimeout 触发)
- P7: 样式偏差修复C9-1 padding 28rpx、C9-2 shadow-sm、C10-1/C10-2 标签渐变、C11-3 line-height
- 移除 hobby-tag新增 note-modal/dev-fab/t-icon 组件注册
- _需求: 5-16, 21, 24.1, 13, 32_
- [x] 6.4 Step 4-5: 编译验证 + 结构还原验证
- 7/7 编译检查通过TS 零诊断、JSON 合法、WXML 闭合、WXSS 语法、组件/数据/事件一致性)
- 13/13 结构核对通过P0-P7 全部验证 + 放弃卡片灰化 + 置顶 amber 阴影 + 长按冲突处理)
- _需求: 17, 18_
- [-] 6.5 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 2.1
- _需求: 19, 20_
- [ ] 7. B 批次 — my-profile个人中心
- [x] 7.1 Step 0: 页面分析
- 1 屏、最简页面、100% 功能覆盖、21 处 WXSS 数值偏差
- _需求: 1.1_
- [x] 7.2 Step 1-2: 输入物冻结 + 迁移审计
- 审计报告 7 节A-G21 处偏差全部为数值微调,无结构性问题
- _需求: 3, 4_
- [x] 7.3 Step 3: 规则化转换
- P1: WXSS 数值校准 21 处padding/gap/font-size/width/height/shadow/border
- P2: 补充 line-height: 1.5name/store-name/menu-text
- P3: 边框宽度 1rpx → 2rpx
- P4: 头像阴影参数修正为 design-tokens 标准值
- TabBar 页面路由配置已就绪
- _需求: 5-16, 21, 24.2, 24.3, 32_
- [x] 7.4 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断JSON 合法WXML 闭合WXSS 语法正确
- 21/21 偏差全部修正,图标 5/5交互 6/6外部依赖 0
- _需求: 17, 18_
- [-] 7.5 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 2.2
- _需求: 19, 20_
- [x] 8. 检查点 B — 核心批次验收
- ✅ task-list: 7/7 编译 + 13/13 结构验证通过
- ✅ my-profile: 0 诊断 + 21/21 偏差修正验证通过
- ✅ TabBar: 3 页面task-list/board-finance/my-profile路由+图标+文字配置正确
- ✅ 长按菜单: ctx-overlay + ctx-menu + _longPressed 防冲突机制已实现
- [ ] 9. C 批次 — task-detail任务详情主页面
- [x] 9.1 Step 0: 页面分析
- 6 个内容区域 + 1 固定栏 + 3 弹窗 = 10 功能单元
- 已有实现覆盖率 45%,缺失维客线索、近期服务记录、话术气泡、放弃弹窗等
- 输出 `docs/h5_ui/analysis/task-detail-step0.md`
- _需求: 1.1_
- [x] 9.2 Step 1-2: 输入物冻结 + 迁移审计
- 审计含在 Step 0 中,识别 11 个工作项P0-P10
- _需求: 3, 4_
- [x] 9.3 Step 3: 规则化转换11 项增量改造)
- P0: 维客线索区5 卡片4 色标签,展开/收起描述)
- P1: 近期服务记录区3 格汇总 + 3 条记录 + 查看全部链接)
- P2: 话术参考气泡5 条话术 + AI 图标 + 复制/已复制切换 + 气泡尖角 view 模拟)
- P3: 放弃弹窗改为自定义实现(遮罩 + textarea + 必填校验 + 红色确认)
- P4: 删除备注(垃圾桶图标 + wx.showModal 确认)
- P5: 错误态 + 重试pageState 扩展 'error'
- P6: 查看手机号phoneVisible 切换)
- P7: 储值等级标签(金色渐变)
- P8: 样式校准(全部按 design-tokens 校准2rpx 最小边框)
- P9: 备注星级评分star-rating readonly
- P10: 查看全部服务记录链接
- _需求: 5-16, 21, 25.1, 32_
- [x] 9.4 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断JSON 合法WXML 完整WXSS 语法正确
- P0-P10 全部验证通过
- _需求: 17, 18_
- [-] 9.5 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 3.1
- _需求: 19, 20_
- [x] 10. C 批次 — task-detail 三个变体
- [x] 10.1 复制 task-detail 生成 task-detail-callback
- teal 主题,竖线话术,无放弃按钮,无服务记录区,"📞 常规回访要点"
- 区域顺序:维客线索→关系→建议→备注
- _需求: 22.2, 22.3, 22.4, 25.2_
- [x] 10.2 复制 task-detail 生成 task-detail-priority
- orange 主题,气泡话术(同主页面),有放弃按钮+服务记录,"💡 建议执行"
- 区域顺序:关系→建议→维客线索→备注→服务记录(同 task-detail
- _需求: 22.2, 22.3, 22.4, 25.2_
- [x] 10.3 复制 task-detail 生成 task-detail-relationship
- pink 主题,竖线话术,无放弃按钮,无服务记录区,"💝 关系构建重点"
- 区域顺序:维客线索→关系→建议→备注
- _需求: 22.2, 22.3, 22.4, 25.2_
- [x] 10.4 三个变体编译验证
- 3 个变体 TS 零诊断12 文件全部创建
- _需求: 17_
- [x] 11. 检查点 C — 任务批次验收
- ✅ 文件完整性4 页面 × 4 文件 = 16 文件全部存在
- ✅ TS 编译4 个 TS 文件零诊断
- ✅ app.json 路由4 个页面路由已注册
- ✅ JSON 配置4 页面均有 `navigationStyle: "custom"` + 组件注册
- ✅ 主题色差异red/teal/orange/pink 四色正确区分
- ✅ 导航跳转task-list → DETAIL_ROUTE_MAP 按 tasktype 分发到 4 个变体
- ⚠️ 修复task-detail.wxss 内容丢失0 字节已恢复完整样式14,879 字节)
- [x] 12. D 批次 — coach-detail助教详情
- [x] 12.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 7 个内容区域 + 1 固定栏 + 2 弹窗 = 10 功能单元
- 已有实现覆盖率 45%,识别 P0-P9 共 10 个工作项
- 输出 `docs/h5_ui/analysis/coach-detail-step0.md`
- _需求: 1.1, 3, 4_
- [x] 12.2 Step 3: 规则化转换
- P0: 任务执行区6 可见 + 3 隐藏 + 2 已放弃,展开/收起,备注图标弹窗)
- P1: 客户关系 TOP55 卡片 + 渐变背景 + emoji + 跳转 customer-detail
- P2: 近期服务明细4 条记录 + 查看更多)
- P3: 更多信息(入职日期 + 5 行历史月份表格)
- P4: 绩效档位进度条
- P5: 备注列表弹窗(底部弹出 + 动态渲染)
- P6: 错误态 + 重试
- P7: hover-class 补充
- P8: safe-area-top + navigationStyle: custom
- P9: 样式校准design-tokens 对齐)
- _需求: 5-16, 21, 26.1, 32_
- [x] 12.3 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断WXML class 全覆盖JSON 组件注册完整app.json 路由已注册
- _需求: 17, 18_
- [-] 12.4 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 4.1
- _需求: 19, 20_
- [x] 13. D 批次 — customer-detail客户详情
- [x] 13.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 7 个内容区域 + 1 固定栏 = 8 功能单元
- 已有实现覆盖率高,消费记录三种样式(台桌/商城/充值)已实现
- 输出 `docs/h5_ui/analysis/customer-detail-step0.md`
- _需求: 1.1, 3, 4_
- [x] 13.2 Step 3: 规则化转换
- 补充 error 态 + onRetry
- 补充 safe-area-top + hover-class
- 消费记录三种样式完整(台桌结账/商城订单/充值)
- onReachBottom 懒加载分页
- note-modal 备注弹窗集成
- _需求: 5-16, 21, 26.2, 32_
- [x] 13.3 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断WXML class 全覆盖JSON 组件注册完整app.json 路由已注册
- _需求: 17, 18_
- [-] 13.4 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 4.2
- _需求: 19, 20_
- [x] 14. D 批次 — customer-service-records客户服务记录
- [x] 14.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 1 屏页面,已有实现覆盖率 ~80%,识别 P0-P5 共 6 个工作项
- 输出 `docs/h5_ui/analysis/customer-service-records-step0.md`
- _需求: 1.1, 3, 4_
- [x] 14.2 Step 3-5: 规则化转换 + 编译验证 + 结构还原验证
- P0: error 态 + onRetryWXML 分支 + TS pageState 扩展 'error'
- P1: hover-class 替代 :activerecord-card--hover + nav-back--hover + retry-btn--hover
- P2: dev-fab 组件注册JSON 补注册)
- P3: navigationStyle: custom + safe-area-top
- P4: WXSS 数值校准 12 处record-card border-radius/padding、record-date/duration/type/income font-size、summary-label/value、footer-text、month-label、customer-name、phone-text/sub-stat/stat-highlight
- P5: 边框 1rpx → 2rpxmonth-switcher、month-summary、summary-divider、record-card
- TS 零诊断JSON 合法WXML 完整app.json 路由已注册
- _需求: 5-18, 21, 26.3, 32_
- [-] 14.3 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 4.3
- _需求: 19, 20_
- [x] 15. 检查点 D — 详情批次验收
- ✅ 文件完整性3 页面 × 4 文件 = 12 文件全部存在
- ✅ TS 编译3 个 TS 文件零诊断
- ✅ app.json 路由coach-detail、customer-detail、customer-service-records 三个路由已注册
- ✅ 导航跳转board-coach → coach-detailonCoachTap、board-customer → customer-detailonCustomerTap、customer-detail → customer-service-recordsonViewAllRecords
- [x] 16. E 批次 — performance业绩总览
- [x] 16.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 已有实现覆盖率 ~85%,识别 P0-P6 共 7 个工作项
- 输出 `docs/h5_ui/analysis/performance-step0.md`
- _需求: 1.1, 3, 4_
- [x] 16.2 Step 3: 规则化转换
- P0: error 状态 + onRetryWXML 分支 + TS pageState 扩展 'error' + try-catch
- P1: hover-class 按压反馈customer-item + toggle-btn + view-all + income-card
- P2: dev-fab 组件注册
- P3: navigationStyle: custom + safe-area-top + 自定义导航栏
- P4: 日期分隔线增强dd-line + dd-stats 每日汇总)
- P5: WXSS 数值已合规,无需修改
- P6: 边框已是 2rpx无需修改
- _需求: 5-16, 21, 27.1, 32_
- [x] 16.3 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断JSON 合法WXML 完整app.json 路由已注册
- _需求: 17, 18_
- [-] 16.4 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 5.1
- _需求: 19, 20_
- [x] 17. E 批次 — performance-records业绩明细
- [x] 17.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 已有实现覆盖率 ~80%,识别 P0-P3 共 4 个工作项
- _需求: 1.1, 3, 4_
- [x] 17.2 Step 3-5: 规则化转换 + 编译验证 + 结构还原验证
- P0: error 状态 + onRetryWXML 分支 + TS pageState 扩展 + try-catch
- P1: hover-class 按压反馈month-btn
- P2: dev-fab 组件注册
- P3: navigationStyle: custom + safe-area-top + 自定义导航栏
- TS 零诊断JSON 合法WXML 完整app.json 路由已注册
- _需求: 5-21, 27.2, 32_
- [-] 17.3 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 5.2
- _需求: 19, 20_
- [x] 18. 检查点 E — 绩效批次验收
- ✅ 文件完整性2 页面 × 4 文件 = 8 文件全部存在
- ✅ TS 编译2 个 TS 文件零诊断
- ✅ app.json 路由performance 和 performance-records 两个路由已注册
- ✅ 导航跳转task-list → performanceonPerformanceTap、performance → performance-recordsgoToRecords
- [x] 19. F 批次 — chatAI 对话)
- [x] 19.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 已有实现覆盖率 ~85%,识别 6 个工作项
- _需求: 1.1, 3, 4_
- [x] 19.2 Step 3: 规则化转换
- P0: error 状态 + onRetrypageState 扩展 'error'、WXML 错误分支、TS try-catch
- P1: hover-class 按压反馈send-btn--hover
- P2: dev-fab 组件注册
- P3: navigationStyle: custom + safe-area-top + 自定义导航栏
- P4: border-top 1rpx → 2rpx.input-bar
- _需求: 5-16, 21, 28.1, 32_
- [x] 19.3 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断JSON 合法WXML 完整app.json 路由已注册
- _需求: 17, 18_
- [-] 19.4 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 6.1
- _需求: 19, 20_
- [x] 20. F 批次 — chat-history对话历史
- [x] 20.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 已有实现覆盖率 ~90%,识别 4 个工作项
- _需求: 1.1, 3, 4_
- [x] 20.2 Step 3: 规则化转换
- P0: error 状态 + onRetrypageState 扩展 'error'、WXML 错误分支、TS try-catch
- P1: hover-class 按压反馈chat-item--hover 替代 :active
- P2: dev-fab 组件注册 + navigationStyle: custom
- P3: safe-area-top + 自定义导航栏
- P4: border-bottom 1rpx → 2rpx.chat-item
- _需求: 5-16, 21, 28.2, 32_
- [x] 20.3 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断JSON 合法WXML 完整app.json 路由已注册
- _需求: 17, 18_
- [-] 20.4 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 6.2
- _需求: 19, 20_
- [x] 21. 检查点 F — 对话批次验收
- ✅ 文件完整性2 页面 × 4 文件 = 8 文件全部存在且非空
- ✅ TS 编译2 个 TS 文件零诊断
- ✅ app.json 路由chat 和 chat-history 两个路由已注册
- ✅ JSON 配置:两页面均有 navigationStyle: custom + dev-fab 注册
- ✅ 导航跳转ai-float-button → chat携带 customerId、chat-history → chat携带 historyId
- ✅ 四态处理:两页面均有 loading/empty/error/normal 四态分支
- ⚠️ 备注chat-history 传递 historyId 参数chat.ts 当前未消费Mock 阶段预期行为TODO 标记)
- [x] 22. G 批次 — notes备忘录
- [x] 22.1 Step 0-2: 页面分析 + 输入物冻结 + 迁移审计
- 已有实现覆盖率 ~80%,识别 P1-1~P1-5 + P2-7~P2-8 共 7 个工作项
- Tab 切换H5 HTML 原型无 Tab 结构(平铺列表),保持当前实现
- _需求: 1.1, 1.3, 3, 4_
- [x] 22.2 Step 3: 规则化转换
- P1-1/2: hover-class 按压反馈nav-back--hover、retry-btn--hover
- P1-3: hover 对应 WXSS 样式
- P1-4: 启用下拉刷新enablePullDownRefresh: true
- P1-5: onPullDownRefresh 方法
- P2-7: 统一 pageState 模式loading/empty/error/normal 替代 loading+error boolean
- P2-8: 缩放值微调padding 28rpx、margin-top 22rpx
- 补充error/empty 态导航栏、ai-float-button、t-empty/ai-float-button/dev-fab 组件注册
- _需求: 5-16, 21, 29, 32_
- [x] 22.3 Step 4-5: 编译验证 + 结构还原验证
- TS 零诊断JSON 合法WXML 完整app.json 路由已注册
- _需求: 17, 18_
- [-] 22.4 Step 6-7: 像素精调 + 验收签收 → 转入 `h5-miniprogram-migration-subsequent` specTask 7.1
- _需求: 19, 20_
- [x] 23. 检查点 G — 最终验收
- ✅ 文件完整性1 页面 × 4 文件 = 4 文件全部存在且非空
- ✅ TS 编译notes.ts 零诊断
- ✅ app.json 路由pages/notes/notes 已注册
- ✅ JSON 配置navigationStyle: custom + enablePullDownRefresh: true + 5 组件注册
- ✅ 导航跳转my-profile → notes通过 router.ts 映射)
- ✅ 四态处理pageState 统一模式loading/empty/error/normal
- ✅ 统一规范hover-class 4/4、safe-area-top 3 态、无 :active、无非标准灰色
- [x] 24. 全局收尾
- [x] 24.1 全量导航验证
- 验证所有页面间的跳转路径正确TabBar 切换、navigateTo、navigateBack
- 验证认证守卫(未登录自动跳转登录页)
- _需求: 7, 20, 30, 31_
- [x] 24.2 全量 AI 图标配色验证
- 抽查 3-5 个页面,确认 AI 图标随机配色正常
- 确认 ai-float-button 保持固定渐变(不参与随机)
- _需求: 32_
- [x] 24.3 icon-mapping.md 最终更新
- 确认所有新导出的 SVG 已记录在 icon-mapping.md 中
- _需求: 33.3_
- [x] 24.4 中间生成物归档验证
- 确认所有 MP 截图按页面分目录存放在 `docs/h5_ui/mp-screenshots/<page>/`
- 确认所有 diff 图和 report.md 按页面分目录存放在 `docs/h5_ui/diffs/<page>/`
- 确认所有 H5 逐段截图按页面分目录存放在 `docs/h5_ui/h5-segments/<page>/`
- 确认 `docs/h5_ui/screenshots/` 目录未被写入 MP 截图或 diff 图(只读输入物)
- 清理可能遗留在项目根目录或其他位置的临时截图文件
- _需求: 33_
## 备注
- 每个页面的 Step 0页面分析输出工作量估算表用户确认后再开始 Step 1
- 输入物分两批第一批Step 0-5 结构迁移、第二批Step 6-7 像素精调)
- 检查点任务用于批次间的质量门禁,确认通过后再进入下一批次
- 有历史实现的页面board-coach/customer/finance/notes走审计→对比→修复→验收流程
- task-detail 变体通过复制+替换主题色实现,不重复走完整流程
- 所有需求编号引用 `requirements.md` 中的需求序号
- 中间生成物MP 截图/H5 逐段截图/diff 图)按页面分子目录存放,每轮覆盖更新,不保留历史版本
- `docs/h5_ui/screenshots/` 为只读输入物目录,禁止写入迁移过程生成的文件