## 1. 准备工作 (Pre-deletion) - [x] 1.1 创建 feature 分支 `feature/remove-v1-modules` - [x] 1.2 运行所有现有测试,确认当前状态正常 (`dotnet test`) - [x] 1.3 备份 V1 相关文件列表到变更目录 (用于回滚参考) ## 2. 后端 Service 层删除 - [x] 2.1 ~~搜索并删除 `BudgetService.GetUncoveredCategoriesAsync` 方法~~ (V2在用,已恢复) - [x] 2.2 ~~搜索并删除 `BudgetService.GetArchiveSummaryAsync` 方法~~ (V2在用,已恢复) - [x] 2.3 搜索并删除 `BudgetStatsService` 或 `BudgetSavingsService` 中的 V1 专用方法 (如果有) - [x] 2.4 搜索并删除 `TransactionStatisticsService.GetBalanceStatisticsAsync` 方法 - [x] 2.5 编译验证后端项目 (`dotnet build`) ## 3. 后端 Application 层删除 - [x] 3.1 ~~删除 `BudgetApplication.GetUncoveredCategoriesAsync` 方法~~ (V2在用,已恢复) - [x] 3.2 ~~删除 `BudgetApplication.GetArchiveSummaryAsync` 方法~~ (V2在用,已恢复) - [x] 3.3 删除 `TransactionStatisticsApplication.GetBalanceStatisticsAsync` 方法 - [x] 3.4 编译验证后端项目 (`dotnet build`) ## 4. 后端 Controller 层删除 - [x] 4.1 删除 `TransactionRecordController.GetDailyStatisticsAsync` 方法 (已标记 Obsolete) - [x] 4.2 ~~删除 `BudgetController.GetUncoveredCategoriesAsync` 方法~~ (V2在用,已恢复) - [x] 4.3 ~~删除 `BudgetController.GetArchiveSummaryAsync` 方法~~ (V2在用,已恢复) - [x] 4.4 删除 `TransactionStatisticsController.GetBalanceStatisticsAsync` 方法 - [x] 4.5 编译验证后端项目 (`dotnet build`) - [x] 4.6 运行后端测试,移除失败的 V1 相关测试用例 (`dotnet test`) ## 5. 前端 API 客户端清理 - [x] 5.1 在 `Web/src/api/transactionRecord.js` 中移除 `GetDailyStatistics` 直接调用 (如果有) - [x] 5.2 ~~在 `Web/src/api/budget.js` 中删除 `getUncoveredCategories` 函数~~ (V2在用,已恢复) - [x] 5.3 ~~在 `Web/src/api/budget.js` 中删除 `getArchiveSummary` 函数~~ (V2在用,已恢复) - [x] 5.4 在 `Web/src/api/statistics.js` 中删除 `getBalanceStatistics` 函数 - [x] 5.5 搜索确认这些方法不在其他地方被引用 (发现 budgetV2 依赖,已恢复) ## 6. 前端页面文件删除 - [x] 6.1 删除 `Web/src/views/CalendarView.vue` 文件 - [x] 6.2 删除 `Web/src/views/BudgetView.vue` 文件 - [x] 6.3 删除 `Web/src/views/statisticsV1/Index.vue` 文件 - [x] 6.4 删除 `Web/src/views/statisticsV1/` 整个目录 (如果为空) - [x] 6.5 搜索确认这些页面不在其他地方被 import 引用 (发现路由和 App.vue 引用,待清理) ## 7. 前端路由配置清理 - [x] 7.1 在 `Web/src/router/index.js` 中删除 `/calendar` 路由定义 - [x] 7.2 在 `Web/src/router/index.js` 中删除 `/budget` 路由定义 - [x] 7.3 在 `Web/src/router/index.js` 中删除 `/` 指向 `statisticsV1/Index.vue` 的路由定义 - [x] 7.4 搜索并简化 `useVersionStore` 中的版本切换逻辑 (移除 V1 相关分支) - [x] 7.5 搜索路由守卫中的 V1 相关判断逻辑并移除 (如 `isV2()` 判断) ## 8. 全局事件监听清理 (条件性) - [x] 8.1 搜索 `window.addEventListener('transaction-deleted')`,确认是否仅 V1 页面监听 - [x] 8.2 搜索 `window.addEventListener('transactions-changed')`,确认是否仅 V1 页面监听 - [x] 8.3 如果仅 V1 监听,搜索 `window.dispatchEvent(new Event('transaction-deleted'))` 并删除触发代码 - [x] 8.4 如果仅 V1 监听,搜索 `window.dispatchEvent(new Event('transactions-changed'))` 并删除触发代码 - [x] 8.5 如果 V2 也在监听这些事件,保留触发代码并标记为"后续清理"任务 ## 9. 前端构建验证 - [x] 9.1 安装依赖 (`cd Web && pnpm install`) - [x] 9.2 运行 ESLint 检查 (`pnpm lint`) - [x] 9.3 构建前端项目 (`pnpm build`) - [x] 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. 代码搜索验证 (确认无遗漏) - [x] 11.1 全局搜索 `CalendarView` (大小写敏感),确认无残留引用 - [x] 11.2 全局搜索 `BudgetView` (大小写敏感),确认无残留引用 - [x] 11.3 全局搜索 `statisticsV1` (大小写敏感),确认无残留引用 - [x] 11.4 全局搜索 `GetDailyStatistics` (TransactionRecordController),确认仅 TransactionStatisticsController 中存在 - [x] 11.5 全局搜索 `GetUncoveredCategories`,确认无残留引用 - [x] 11.6 全局搜索 `GetArchiveSummary`,确认无残留引用 - [x] 11.7 全局搜索 `GetBalanceStatistics`,确认无残留引用 - [x] 11.8 全局搜索 `/calendar` 路由,确认仅出现在测试或配置文件中 - [x] 11.9 全局搜索 `/budget` 路由,确认仅出现在测试或配置文件中 ## 12. 测试用例清理 - [x] 12.1 搜索并删除 `WebApi.Test/` 中针对 V1 API 的单元测试 - [x] 12.2 运行所有后端测试 (`dotnet test`),确保无失败测试 - [x] 12.3 如果有前端测试,运行并修复受影响的测试用例 ## 13. 代码审查和提交 - [x] 13.1 使用 `git status` 确认所有修改的文件 - [x] 13.2 使用 `git diff` 审查每个删除的代码块,确认无误删 - [x] 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 功能异常: 1. **立即回滚**: `git revert ` 或 `git reset --hard ` 2. **定位问题**: 使用 `git diff` 找到引起问题的删除操作 3. **部分恢复**: 仅恢复必要的文件或方法 (使用 `git checkout -- `) 4. **重新测试**: 确认恢复后 V2 功能正常 5. **分析根因**: 更新任务清单,标记需要保留的代码 --- ## 后续清理任务 (标记为 Non-Goal,不在本次范围内) - **共享组件优化**: 移除 TransactionList、TransactionDetail 等组件中的 V1 特定逻辑 - **全局事件机制**: 如果 V2 不再需要全局事件监听,迁移到 Pinia store - **API 文档更新**: 在 Swagger/Scalar 中标记已移除的端点 - **用户文档更新**: 说明 V1 已下线,引导用户使用 V2 - **性能优化**: 基于 V2 的使用数据优化接口和前端渲染逻辑