# 业务功能迁移验收清单 ## 文档状态 - 状态:阶段 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,职责清晰。 - [ ] 移动端布局通过手工验收。 - [ ] 错误、空数据、加载态、登录失效有处理。 - [ ] 有构建、单元测试或手工验收记录。