195 lines
8.3 KiB
Markdown
195 lines
8.3 KiB
Markdown
# 业务功能迁移验收清单
|
||
|
||
## 文档状态
|
||
|
||
- 状态:阶段 0 盘点产物
|
||
- 日期:2026-05-25
|
||
- 目标:按业务闭环跟踪 Vue3 Web 迁移进度
|
||
|
||
## 状态说明
|
||
|
||
| 状态 | 含义 |
|
||
| --- | --- |
|
||
| Not Started | 未开始 |
|
||
| Inventory | 已完成盘点,等待迁移 |
|
||
| In Progress | 正在迁移 |
|
||
| Web Ready | Web 版本可验收 |
|
||
| Deferred | 延后迁移 |
|
||
| Dropped | 明确废弃 |
|
||
|
||
## 模块总览
|
||
|
||
| 优先级 | 模块 | 当前源码 | Web 目标目录 | 状态 | 主要风险 |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| P0 | 应用基座 | `src/main.js`、`src/App.vue`、`vite.config.js` | `web/src/app` | Not Started | 启动、环境、网络恢复逻辑 |
|
||
| P0 | 平台适配层 | `uni.*` 分散调用 | `web/src/services` | Not Started | 替换不完整会造成隐性缺陷 |
|
||
| P0 | 配置和 Store | `src/constant`、`src/store` | `web/src/constants`、`web/src/stores` | Not Started | 持久化和客户端配置 |
|
||
| P0 | 请求和登录 | `src/request`、`src/manager`、`src/hooks` | `web/src/services/http`、`web/src/features/auth` | Not Started | token、424、微信授权 |
|
||
| P0 | AI 聊天 | `src/pages/ChatMain`、`src/pages/ChatModule`、`src/utils/WebSocketManager.js` | `web/src/features/chat` | Not Started | WebSocket、流式响应、滚动键盘 |
|
||
| P1 | 首页和发现 | `src/pages/index`、`src/pages/Discovery` | `web/src/features/chat`、`web/src/features/discovery` | Not Started | 首页发现与聊天联动 |
|
||
| P1 | 商品详情 | `src/pages/goods`、`src/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-service`、`src/components/CreateServiceOrder` | `web/src/features/service` | Not Started | 图片上传、电话、反馈 |
|
||
| P2 | 快捷入口 | `src/pages-quick` | `web/src/features/quick` | Not Started | 与聊天指令联动 |
|
||
| P2 | WebView 桥接 | `src/pages/webview`、`src/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:盘点和基线冻结
|
||
|
||
- [x] 输出总体迁移计划:`docs/MIGRATION_PLAN.md`
|
||
- [x] 输出路由映射:`docs/ROUTE_MIGRATION_MAP.md`
|
||
- [x] 输出 uni API 替换矩阵:`docs/UNI_API_REPLACEMENT_MATRIX.md`
|
||
- [x] 输出业务功能迁移验收清单:`docs/FEATURE_MIGRATION_CHECKLIST.md`
|
||
- [ ] 录制或截图旧版本核心流程,作为视觉和行为基线。
|
||
- [ ] 明确目标 Web 运行环境:普通 H5、微信公众号、企业微信、内嵌 WebView 或多环境。
|
||
- [ ] 明确登录和支付在 Web 端的目标方案。
|
||
|
||
## 阶段 1:Vue3 Web 工程骨架
|
||
|
||
验收项:
|
||
|
||
- [x] 新建 `web/` 工程。
|
||
- [x] 配置 Vue3、TypeScript、Vite、Pinia、Vue Router、Tailwind CSS。
|
||
- [x] 配置 `@/` 路径别名。
|
||
- [x] 新增移动端基础布局和 CSS reset。
|
||
- [x] 新增健康页、404 页和最小路由。
|
||
- [x] 新工程不依赖 `@dcloudio/*`。
|
||
- [x] `web` 工程可以启动和构建。
|
||
|
||
## 阶段 2:平台适配层
|
||
|
||
验收项:
|
||
|
||
- [ ] `services/router` 支持 `push`、`replace`、`back`、`reLaunch`。
|
||
- [ ] `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 迁移。
|
||
|
||
## 阶段 4:AI 聊天主链路
|
||
|
||
验收项:
|
||
|
||
- [ ] 首页聊天页面可打开。
|
||
- [ ] 聊天消息模型 TypeScript 化。
|
||
- [ ] WebSocket 连接、心跳、重连、队列发送可用。
|
||
- [ ] 流式响应 parser 可解析服务端数据。
|
||
- [ ] 文本消息发送可用。
|
||
- [ ] AI 流式回复可展示。
|
||
- [ ] `toolCall.componentName` 能分发到对应卡片。
|
||
- [ ] 至少支持快捷预订卡、发现卡、反馈卡、商品图文卡中的一类。
|
||
- [ ] 长文本卡详情页可打开。
|
||
- [ ] 停止生成可用。
|
||
- [ ] 超时、失败、断线有反馈。
|
||
- [ ] 移动端滚动到底和输入区键盘适配通过手工验收。
|
||
|
||
## 阶段 5:首页和发现
|
||
|
||
验收项:
|
||
|
||
- [ ] 首页顶部导航迁移。
|
||
- [ ] 欢迎区和背景图迁移。
|
||
- [ ] 发现页内容流可加载。
|
||
- [ ] 快捷问题可触发聊天发送。
|
||
- [ ] 发现页定位能力有授权失败降级。
|
||
- [ ] 轮播和 tabs 在移动端可用。
|
||
- [ ] 首页和聊天 tab 切换状态稳定。
|
||
|
||
## 阶段 6:商品、预订和订单
|
||
|
||
验收项:
|
||
|
||
- [ ] 商品详情可通过 `/goods/:commodityId` 打开。
|
||
- [ ] 商品图片相册可预览。
|
||
- [ ] 酒店商品日期选择可用。
|
||
- [ ] 套餐、设施、位置展示可用。
|
||
- [ ] 预订确认页表单可填写。
|
||
- [ ] 金额计算和预订参数正确。
|
||
- [ ] 下单接口调用可用。
|
||
- [ ] 支付方案可用或有明确降级。
|
||
- [ ] 订单列表可加载。
|
||
- [ ] 订单详情可打开。
|
||
- [ ] 退款/取消/状态刷新可用。
|
||
- [ ] 二维码或券码展示可用。
|
||
|
||
## 阶段 7:工单、反馈、快捷入口和桥接
|
||
|
||
验收项:
|
||
|
||
- [ ] 工单列表可加载。
|
||
- [ ] 工单卡片信息完整。
|
||
- [ ] 服务呼叫表单可提交。
|
||
- [ ] 图片选择和上传可用。
|
||
- [ ] 反馈表单可提交。
|
||
- [ ] 快捷入口列表可打开。
|
||
- [ ] 快捷入口可触发聊天指令或跳转。
|
||
- [ ] WebView 改为 iframe 或外链跳转。
|
||
- [ ] 外部页面能通过 `postMessage` 与主应用通信。
|
||
- [ ] 保存图片/下载能力有浏览器兼容提示。
|
||
|
||
## 阶段 8:Tailwind 和 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,职责清晰。
|
||
- [ ] 移动端布局通过手工验收。
|
||
- [ ] 错误、空数据、加载态、登录失效有处理。
|
||
- [ ] 有构建、单元测试或手工验收记录。
|