Files
nianxx-h5/docs/FEATURE_MIGRATION_CHECKLIST.md
2026-05-25 23:40:50 +08:00

8.3 KiB
Raw Blame History

业务功能迁移验收清单

文档状态

  • 状态:阶段 0 盘点产物
  • 日期2026-05-25
  • 目标:按业务闭环跟踪 Vue3 Web 迁移进度

状态说明

状态 含义
Not Started 未开始
Inventory 已完成盘点,等待迁移
In Progress 正在迁移
Web Ready Web 版本可验收
Deferred 延后迁移
Dropped 明确废弃

模块总览

优先级 模块 当前源码 Web 目标目录 状态 主要风险
P0 应用基座 src/main.jssrc/App.vuevite.config.js web/src/app Not Started 启动、环境、网络恢复逻辑
P0 平台适配层 uni.* 分散调用 web/src/services Not Started 替换不完整会造成隐性缺陷
P0 配置和 Store src/constantsrc/store web/src/constantsweb/src/stores Not Started 持久化和客户端配置
P0 请求和登录 src/requestsrc/managersrc/hooks web/src/services/httpweb/src/features/auth Not Started token、424、微信授权
P0 AI 聊天 src/pages/ChatMainsrc/pages/ChatModulesrc/utils/WebSocketManager.js web/src/features/chat Not Started WebSocket、流式响应、滚动键盘
P1 首页和发现 src/pages/indexsrc/pages/Discovery web/src/features/chatweb/src/features/discovery Not Started 首页发现与聊天联动
P1 商品详情 src/pages/goodssrc/components/GoodDetail web/src/features/goods Not Started 图片、日期、地图
P1 预订 src/pages-booking web/src/features/booking Not Started 表单、金额、支付参数
P1 订单 src/pages-order web/src/features/order Not Started 支付、退款、二维码
P2 工单服务 src/pages-servicesrc/components/CreateServiceOrder web/src/features/service Not Started 图片上传、电话、反馈
P2 快捷入口 src/pages-quick web/src/features/quick Not Started 与聊天指令联动
P2 WebView 桥接 src/pages/webviewsrc/pages-bridge web/src/features/bridge Not Started iframe、postMessage、外部页面兼容
P2 通用组件 src/components web/src/components Not Started uni 标签、弹窗、滚动、canvas
P3 测试页和 demo src/pages/test、各组件 demo web/src/features/dev Deferred 非核心路径

阶段 0盘点和基线冻结

  • 输出总体迁移计划:docs/MIGRATION_PLAN.md
  • 输出路由映射:docs/ROUTE_MIGRATION_MAP.md
  • 输出 uni API 替换矩阵:docs/UNI_API_REPLACEMENT_MATRIX.md
  • 输出业务功能迁移验收清单:docs/FEATURE_MIGRATION_CHECKLIST.md
  • 录制或截图旧版本核心流程,作为视觉和行为基线。
  • 明确目标 Web 运行环境:普通 H5、微信公众号、企业微信、内嵌 WebView 或多环境。
  • 明确登录和支付在 Web 端的目标方案。

阶段 1Vue3 Web 工程骨架

验收项:

  • 新建 web/ 工程。
  • 配置 Vue3、TypeScript、Vite、Pinia、Vue Router、Tailwind CSS。
  • 配置 @/ 路径别名。
  • 新增移动端基础布局和 CSS reset。
  • 新增健康页、404 页和最小路由。
  • 新工程不依赖 @dcloudio/*
  • web 工程可以启动和构建。

阶段 2平台适配层

验收项:

  • services/router 支持 pushreplacebackreLaunch
  • services/storage 支持 token 和普通持久化。
  • services/event-bus 支持 typed emit/on/off
  • services/feedback 支持 toast、modal、loading。
  • services/http 支持 baseUrl、clientId、token、位置请求头、424 登出。
  • services/browser 支持图片选择、下载、定位、电话、分享的基础封装或降级。
  • 新 Web 业务代码不直接调用 uni.*wx.*

阶段 3配置、Store 和 API

验收项:

  • 客户端配置迁移,能读取当前 zhinian 配置。
  • 服务地址配置迁移,支持测试/生产切换。
  • token key 和 refresh token 逻辑迁移。
  • app store 迁移。
  • location store 迁移。
  • picture store 迁移。
  • selectedDate store 迁移。
  • 登录 API 迁移并补基础类型。
  • 首页、会话、商品、订单、工单、反馈 API 迁移。

阶段 4AI 聊天主链路

验收项:

  • 首页聊天页面可打开。
  • 聊天消息模型 TypeScript 化。
  • WebSocket 连接、心跳、重连、队列发送可用。
  • 流式响应 parser 可解析服务端数据。
  • 文本消息发送可用。
  • AI 流式回复可展示。
  • toolCall.componentName 能分发到对应卡片。
  • 至少支持快捷预订卡、发现卡、反馈卡、商品图文卡中的一类。
  • 长文本卡详情页可打开。
  • 停止生成可用。
  • 超时、失败、断线有反馈。
  • 移动端滚动到底和输入区键盘适配通过手工验收。

阶段 5首页和发现

验收项:

  • 首页顶部导航迁移。
  • 欢迎区和背景图迁移。
  • 发现页内容流可加载。
  • 快捷问题可触发聊天发送。
  • 发现页定位能力有授权失败降级。
  • 轮播和 tabs 在移动端可用。
  • 首页和聊天 tab 切换状态稳定。

阶段 6商品、预订和订单

验收项:

  • 商品详情可通过 /goods/:commodityId 打开。
  • 商品图片相册可预览。
  • 酒店商品日期选择可用。
  • 套餐、设施、位置展示可用。
  • 预订确认页表单可填写。
  • 金额计算和预订参数正确。
  • 下单接口调用可用。
  • 支付方案可用或有明确降级。
  • 订单列表可加载。
  • 订单详情可打开。
  • 退款/取消/状态刷新可用。
  • 二维码或券码展示可用。

阶段 7工单、反馈、快捷入口和桥接

验收项:

  • 工单列表可加载。
  • 工单卡片信息完整。
  • 服务呼叫表单可提交。
  • 图片选择和上传可用。
  • 反馈表单可提交。
  • 快捷入口列表可打开。
  • 快捷入口可触发聊天指令或跳转。
  • WebView 改为 iframe 或外链跳转。
  • 外部页面能通过 postMessage 与主应用通信。
  • 保存图片/下载能力有浏览器兼容提示。

阶段 8Tailwind 和 UI 收敛

验收项:

  • 主题色迁移到 Tailwind config 和 CSS variables。
  • 基础间距、字体、颜色工具类映射完成。
  • 新 Web 页面主要使用 Tailwind。
  • 不再新增旧 SCSS 工具类依赖。
  • 底部输入区、安全区、弹窗、抽屉形成统一实现。
  • 移动端常见 viewport 无明显遮挡和溢出。

阶段 9测试、灰度和旧栈下线

验收项:

  • 请求层单元测试。
  • 事件总线单元测试。
  • 流式 parser 单元测试。
  • WebSocket 管理器单元测试或集成测试。
  • 聊天核心流程 E2E。
  • 商品预订订单流程 E2E。
  • 登录失效和 424 登出 E2E。
  • 新旧版本核心路径对照验收。
  • 旧 uni-app 代码零活跃依赖后再删除。

Web 端待确认问题

这些问题在阶段 1 之前需要产品或后端确认:

  • 新 Web 应用运行在哪些容器普通浏览器、微信公众号、企业微信、App WebView、PC 浏览器?
  • 微信登录是否继续使用 openId/code 换 token还是改为手机号/验证码/静默登录?
  • 支付使用 JS-SDK、H5 支付、中间页跳转,还是仅保留下单不支付?
  • 外部 H5 页面是否必须兼容旧 url + token query 桥接方式?
  • 地图打开使用哪个地图服务:腾讯地图、高德地图、浏览器地图 URL
  • 保存图片在 Web 端是否接受“下载文件/长按保存”降级?

每个业务切片的完成定义

一个模块只有同时满足以下条件,才能标记为 Web Ready

  • 对应 Vue Router 路由已接入。
  • 依赖 API 已通过新请求层调用。
  • 页面不直接依赖 uni.*wx.*
  • 关键状态进入 Pinia 或局部 composable职责清晰。
  • 移动端布局通过手工验收。
  • 错误、空数据、加载态、登录失效有处理。
  • 有构建、单元测试或手工验收记录。