Files
EmailBill/Web/VERSION_SWITCH_TEST.md
SunCheng 338bac20ce
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 28s
Docker Build & Deploy / Deploy to Production (push) Successful in 8s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s
Docker Build & Deploy / WeChat Notification (push) Successful in 2s
todo
2026-02-02 16:59:24 +08:00

4.0 KiB
Raw Blame History

版本切换功能测试文档

功能说明

在设置的开发者选项中添加了版本切换功能,用户可以在 V1 和 V2 版本之间切换。当选择 V2 时,如果有对应的 V2 路由则自动跳转,否则保持当前路由。

实现文件

  1. Store: Web/src/stores/version.js - 版本状态管理
  2. View: Web/src/views/SettingView.vue - 设置页面添加版本切换入口
  3. Router: Web/src/router/index.js - 路由守卫实现版本路由重定向

功能特性

  • 版本状态持久化存储localStorage
  • 设置页面显示当前版本V1/V2
  • 点击弹出对话框选择版本
  • 自动检测并跳转到对应版本路由
  • 如果没有对应版本路由,保持当前路由
  • 路由守卫自动处理版本路由

测试步骤

1. 基础功能测试

  1. 启动应用并登录
  2. 进入"设置"页面
  3. 找到"开发者"分组下的"切换版本"选项
  4. 当前版本应显示为 "V1"(首次使用)

2. 切换到 V2 测试

  1. 点击"切换版本"
  2. 弹出对话框,显示"选择版本"标题
  3. 对话框有两个按钮:"V1"(取消按钮)和"V2"(确认按钮)
  4. 点击"V2"按钮
  5. 应显示提示"已切换到 V2"
  6. "切换版本"选项的值应更新为 "V2"

3. V2 路由跳转测试

测试有 V2 路由的情况(日历页面)

  1. 确保当前版本为 V2
  2. 点击导航栏的"日历"(路由名:calendar
  3. 应自动跳转到 calendar-v2CalendarV2.vue
  4. 地址栏 URL 应为 /calendar-v2

测试没有 V2 路由的情况

  1. 确保当前版本为 V2
  2. 点击导航栏的"账单分析"(路由名:bill-analysis
  3. 应保持在 bill-analysis 路由(没有 v2 版本)
  4. 地址栏 URL 应为 /bill-analysis

4. 切换回 V1 测试

  1. 当前版本为 V2calendar-v2 页面
  2. 进入"设置"页面,点击"切换版本"
  3. 点击"V1"按钮
  4. 应显示提示"已切换到 V1"
  5. 如果当前在 V2 路由(如 calendar-v2),应自动跳转到 V1 路由(calendar
  6. 地址栏 URL 应为 /calendar

5. 持久化测试

  1. 切换到 V2 版本
  2. 刷新页面
  3. 重新登录后,进入"设置"页面
  4. "切换版本"选项应仍显示 "V2"
  5. 访问有 V2 路由的页面,应自动跳转到 V2 版本

6. 路由守卫测试

直接访问 V2 路由V1 模式下)

  1. 确保当前版本为 V1
  2. 在地址栏直接输入 /calendar-v2
  3. 应自动重定向到 /calendar

直接访问 V1 路由V2 模式下)

  1. 确保当前版本为 V2
  2. 在地址栏直接输入 /calendar
  3. 应自动重定向到 /calendar-v2

当前支持 V2 的路由

  • calendarcalendar-v2 (CalendarV2.vue)

代码验证

版本 Store 检查

// 打开浏览器控制台
const versionStore = useVersionStore()
console.log(versionStore.currentVersion) // 应输出 'v1' 或 'v2'
console.log(versionStore.isV2()) // 应输出 true 或 false

LocalStorage 检查

// 打开浏览器控制台
console.log(localStorage.getItem('app-version')) // 应输出 'v1' 或 'v2'

预期结果

  • 所有路由跳转正常
  • 版本切换提示正常显示
  • 版本状态持久化正常
  • 路由守卫正常工作
  • 没有控制台错误
  • UI 响应流畅

潜在问题

  1. 如果用户在 V2 路由页面直接切换到 V1可能会出现短暂的页面重载
  2. 某些页面可能没有 V2 版本,切换后会保持在 V1 版本

后续扩展

如需添加更多 V2 路由,只需:

  1. 创建新的 Vue 组件(如 XXXViewV2.vue
  2. router/index.js 中添加路由,命名格式为 原路由名-v2
  3. 路由守卫会自动处理版本切换逻辑

示例:添加新的 V2 路由

// router/index.js
{
  path: '/budget-v2',
  name: 'budget-v2',
  component: () => import('../views/BudgetViewV2.vue'),
  meta: { requiresAuth: true }
}

添加后,当用户选择 V2 版本并访问 /budget 时,会自动跳转到 /budget-v2