- 删除 V1 前端页面 (CalendarView, BudgetView, statisticsV1) - 移除 V1 路由配置 (/calendar, /budget, /) - 清理路由守卫中的 V1 版本切换逻辑 - 移除设置页面中的版本切换功能 - 更新底部导航和登录重定向到 V2 路由 - 移除 App.vue 中 V1 页面的缓存配置 - 删除后端 TransactionRecordController.GetDailyStatisticsAsync (Obsolete) - 删除 TransactionStatisticsController.GetBalanceStatisticsAsync - 保留 V2 仍在使用的共享 API (GetUncoveredCategories, GetArchiveSummary, GetDailyStatistics) - 保留 V2 使用的全局事件监听机制 - 所有测试通过 (210/210) Breaking Change: V1 API 端点和路由将不可用
7.3 KiB
7.3 KiB
1. 准备工作 (Pre-deletion)
- 1.1 创建 feature 分支
feature/remove-v1-modules - 1.2 运行所有现有测试,确认当前状态正常 (
dotnet test) - 1.3 备份 V1 相关文件列表到变更目录 (用于回滚参考)
2. 后端 Service 层删除
- 2.1
搜索并删除(V2在用,已恢复)BudgetService.GetUncoveredCategoriesAsync方法 - 2.2
搜索并删除(V2在用,已恢复)BudgetService.GetArchiveSummaryAsync方法 - 2.3 搜索并删除
BudgetStatsService或BudgetSavingsService中的 V1 专用方法 (如果有) - 2.4 搜索并删除
TransactionStatisticsService.GetBalanceStatisticsAsync方法 - 2.5 编译验证后端项目 (
dotnet build)
3. 后端 Application 层删除
- 3.1
删除(V2在用,已恢复)BudgetApplication.GetUncoveredCategoriesAsync方法 - 3.2
删除(V2在用,已恢复)BudgetApplication.GetArchiveSummaryAsync方法 - 3.3 删除
TransactionStatisticsApplication.GetBalanceStatisticsAsync方法 - 3.4 编译验证后端项目 (
dotnet build)
4. 后端 Controller 层删除
- 4.1 删除
TransactionRecordController.GetDailyStatisticsAsync方法 (已标记 Obsolete) - 4.2
删除(V2在用,已恢复)BudgetController.GetUncoveredCategoriesAsync方法 - 4.3
删除(V2在用,已恢复)BudgetController.GetArchiveSummaryAsync方法 - 4.4 删除
TransactionStatisticsController.GetBalanceStatisticsAsync方法 - 4.5 编译验证后端项目 (
dotnet build) - 4.6 运行后端测试,移除失败的 V1 相关测试用例 (
dotnet test)
5. 前端 API 客户端清理
- 5.1 在
Web/src/api/transactionRecord.js中移除GetDailyStatistics直接调用 (如果有) - 5.2
在(V2在用,已恢复)Web/src/api/budget.js中删除getUncoveredCategories函数 - 5.3
在(V2在用,已恢复)Web/src/api/budget.js中删除getArchiveSummary函数 - 5.4 在
Web/src/api/statistics.js中删除getBalanceStatistics函数 - 5.5 搜索确认这些方法不在其他地方被引用 (发现 budgetV2 依赖,已恢复)
6. 前端页面文件删除
- 6.1 删除
Web/src/views/CalendarView.vue文件 - 6.2 删除
Web/src/views/BudgetView.vue文件 - 6.3 删除
Web/src/views/statisticsV1/Index.vue文件 - 6.4 删除
Web/src/views/statisticsV1/整个目录 (如果为空) - 6.5 搜索确认这些页面不在其他地方被 import 引用 (发现路由和 App.vue 引用,待清理)
7. 前端路由配置清理
- 7.1 在
Web/src/router/index.js中删除/calendar路由定义 - 7.2 在
Web/src/router/index.js中删除/budget路由定义 - 7.3 在
Web/src/router/index.js中删除/指向statisticsV1/Index.vue的路由定义 - 7.4 搜索并简化
useVersionStore中的版本切换逻辑 (移除 V1 相关分支) - 7.5 搜索路由守卫中的 V1 相关判断逻辑并移除 (如
isV2()判断)
8. 全局事件监听清理 (条件性)
- 8.1 搜索
window.addEventListener('transaction-deleted'),确认是否仅 V1 页面监听 - 8.2 搜索
window.addEventListener('transactions-changed'),确认是否仅 V1 页面监听 - 8.3 如果仅 V1 监听,搜索
window.dispatchEvent(new Event('transaction-deleted'))并删除触发代码 - 8.4 如果仅 V1 监听,搜索
window.dispatchEvent(new Event('transactions-changed'))并删除触发代码 - 8.5 如果 V2 也在监听这些事件,保留触发代码并标记为"后续清理"任务
9. 前端构建验证
- 9.1 安装依赖 (
cd Web && pnpm install) - 9.2 运行 ESLint 检查 (
pnpm lint) - 9.3 构建前端项目 (
pnpm build) - 9.4 确认构建成功,无编译错误或警告
10. 手动测试验证 (V2 功能)
- 10.1 启动开发服务器 (
pnpm dev) - 10.2 测试 V2 统计页面 (
/statistics-v2): 月度统计、分类统计、日度统计、交易列表 - 10.3 测试 V2 统计页面: 余额折线图正常渲染 (验证前端计算余额逻辑)
- 10.4 测试 V2 预算页面 (
/budget-v2): 预算列表、分类统计、预算 CRUD、存款导航 - 10.5 测试 V2 日历页面 (
/calendar-v2): 日历渲染、日期统计、交易详情查看和编辑 - 10.6 测试共享组件: TransactionList、TransactionDetail、PopupContainer 在 V2 中正常工作
- 10.7 测试智能分类功能 (SmartClassifyButton) 在 V2 页面中正常工作
- 10.8 验证访问 V1 路由 (
/calendar,/budget,/) 返回 404 或重定向到 V2
11. 代码搜索验证 (确认无遗漏)
- 11.1 全局搜索
CalendarView(大小写敏感),确认无残留引用 - 11.2 全局搜索
BudgetView(大小写敏感),确认无残留引用 - 11.3 全局搜索
statisticsV1(大小写敏感),确认无残留引用 - 11.4 全局搜索
GetDailyStatistics(TransactionRecordController),确认仅 TransactionStatisticsController 中存在 - 11.5 全局搜索
GetUncoveredCategories,确认无残留引用 - 11.6 全局搜索
GetArchiveSummary,确认无残留引用 - 11.7 全局搜索
GetBalanceStatistics,确认无残留引用 - 11.8 全局搜索
/calendar路由,确认仅出现在测试或配置文件中 - 11.9 全局搜索
/budget路由,确认仅出现在测试或配置文件中
12. 测试用例清理
- 12.1 搜索并删除
WebApi.Test/中针对 V1 API 的单元测试 - 12.2 运行所有后端测试 (
dotnet test),确保无失败测试 - 12.3 如果有前端测试,运行并修复受影响的测试用例
13. 代码审查和提交
- 13.1 使用
git status确认所有修改的文件 - 13.2 使用
git diff审查每个删除的代码块,确认无误删 - 13.3 提交变更到本地分支:
git add . && git commit -m "feat: remove V1 calendar/budget/stats modules" - 13.4 推送到远程分支:
git push origin feature/remove-v1-modules
14. Pull Request 和最终验证
- 14.1 创建 Pull Request,填写变更说明和测试结果
- 14.2 代码审查: 确认删除的代码不在 V2 中被引用
- 14.3 CI/CD 管道通过 (编译 + 测试)
- 14.4 合并到主分支
15. 生产环境验证 (可选)
- 15.1 部署到测试环境,验证 V2 页面功能完整性
- 15.2 监控错误日志,确认无 404 或运行时错误
- 15.3 部署到生产环境
- 15.4 监控用户反馈和错误报告
回滚预案
如果在任何阶段发现 V2 功能异常:
- 立即回滚:
git revert <commit-hash>或git reset --hard <previous-commit> - 定位问题: 使用
git diff找到引起问题的删除操作 - 部分恢复: 仅恢复必要的文件或方法 (使用
git checkout <commit> -- <file>) - 重新测试: 确认恢复后 V2 功能正常
- 分析根因: 更新任务清单,标记需要保留的代码
后续清理任务 (标记为 Non-Goal,不在本次范围内)
- 共享组件优化: 移除 TransactionList、TransactionDetail 等组件中的 V1 特定逻辑
- 全局事件机制: 如果 V2 不再需要全局事件监听,迁移到 Pinia store
- API 文档更新: 在 Swagger/Scalar 中标记已移除的端点
- 用户文档更新: 说明 V1 已下线,引导用户使用 V2
- 性能优化: 基于 V2 的使用数据优化接口和前端渲染逻辑