2026-02-14 00:01:44 +08:00
|
|
|
|
## 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
|
|
|
|
|
|
|
2026-02-15 10:10:28 +08:00
|
|
|
|
**注意**: 以上手动测试任务需要在浏览器中实际运行应用并验证功能。代码实现已完成,等待用户验收。
|
|
|
|
|
|
|
2026-02-14 00:01:44 +08:00
|
|
|
|
## 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. 代码审查和提交
|
|
|
|
|
|
|
2026-02-15 10:10:28 +08:00
|
|
|
|
- [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"`
|
2026-02-14 00:01:44 +08:00
|
|
|
|
- [ ] 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 <commit-hash>` 或 `git reset --hard <previous-commit>`
|
|
|
|
|
|
2. **定位问题**: 使用 `git diff` 找到引起问题的删除操作
|
|
|
|
|
|
3. **部分恢复**: 仅恢复必要的文件或方法 (使用 `git checkout <commit> -- <file>`)
|
|
|
|
|
|
4. **重新测试**: 确认恢复后 V2 功能正常
|
|
|
|
|
|
5. **分析根因**: 更新任务清单,标记需要保留的代码
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 后续清理任务 (标记为 Non-Goal,不在本次范围内)
|
|
|
|
|
|
|
|
|
|
|
|
- **共享组件优化**: 移除 TransactionList、TransactionDetail 等组件中的 V1 特定逻辑
|
|
|
|
|
|
- **全局事件机制**: 如果 V2 不再需要全局事件监听,迁移到 Pinia store
|
|
|
|
|
|
- **API 文档更新**: 在 Swagger/Scalar 中标记已移除的端点
|
|
|
|
|
|
- **用户文档更新**: 说明 V1 已下线,引导用户使用 V2
|
|
|
|
|
|
- **性能优化**: 基于 V2 的使用数据优化接口和前端渲染逻辑
|