- 删除 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 端点和路由将不可用
5.2 KiB
5.2 KiB
REMOVED Requirements
Requirement: Get Uncovered Categories
Reason: 该接口仅被 V1 预算页面使用,用于展示"未设置预算的分类"。V2 预算页面不包含此功能。
Migration: 如需在 V2 中实现类似功能,应重新设计并创建新接口。当前无直接迁移路径。
原有功能:
- 接口:
GET /api/Budget/GetUncoveredCategories - Controller:
BudgetController.GetUncoveredCategoriesAsync - 参数:
category(enum: Expense/Income/Saving),date(DateTime) - 返回:
List<string>(未设置预算的分类名称列表) - 业务逻辑:
- 查询指定月份的所有交易记录,提取所有出现的分类
- 查询指定月份已设置预算的分类
- 计算差集,返回"有交易但未设置预算"的分类列表
被以下代码调用:
Web/src/views/BudgetView.vue中的fetchUncoveredCategories方法Web/src/api/budget.js中的getUncoveredCategories函数
Requirement: Get Archive Summary
Reason: 该接口仅被 V1 预算页面使用,用于展示"历史预算归档总结"。V2 预算页面不包含此功能。
Migration: 如需在 V2 中实现类似功能,应重新设计并创建新接口。当前无直接迁移路径。
原有功能:
- 接口:
GET /api/Budget/GetArchiveSummary - Controller:
BudgetController.GetArchiveSummaryAsync - 参数:
date(DateTime, 用于指定查询的年月) - 返回:
ArchiveSummaryDto(包含归档总结数据) - 业务逻辑:
- 查询
BudgetArchive表中指定月份的归档记录 - 汇总支出、收入、存款的预算执行情况
- 返回总结数据(如预算达成率、超支分类等)
- 查询
被以下代码调用:
Web/src/views/BudgetView.vue中的showArchiveSummary方法Web/src/api/budget.js中的getArchiveSummary函数
Context
本规范定义了 EmailBill 后端 BudgetController 中两个 V1 专用接口的移除操作。
接口背景
这两个接口是 V1 预算页面的特色功能:
- 未覆盖分类提示: 帮助用户发现"有交易但未设置预算"的分类,提醒用户完善预算设置
- 归档总结: 展示历史月份的预算执行总结,帮助用户回顾过去的财务状况
V2 设计变更
V2 预算页面重新设计了用户体验,移除了上述两个功能:
- 未覆盖分类: V2 采用"按需创建预算"模式,不主动提示未覆盖分类
- 归档总结: V2 使用实时统计替代归档总结,用户可随时查看任意月份的预算执行情况
技术依赖
这两个接口依赖以下 Service 和 Repository:
BudgetService.GetUncoveredCategoriesAsyncBudgetService.GetArchiveSummaryAsyncBudgetRepositoryBudgetArchiveRepositoryTransactionRecordRepository
移除接口后,相关 Service 方法也将被移除(见 budget-service 规范)。
Validation
验证标准
-
代码搜索验证:
- 全局搜索
GetUncoveredCategories,确认仅在以下位置出现:BudgetController.GetUncoveredCategoriesAsync(待删除)BudgetApplication.GetUncoveredCategoriesAsync(待删除)BudgetService.GetUncoveredCategoriesAsync(待删除)BudgetView.vue(已删除)budget.js(已清理)
- 全局搜索
GetArchiveSummary,确认仅在 V1 相关代码中出现
- 全局搜索
-
编译验证:
- 删除
BudgetController中的两个方法后,后端项目编译通过 - 删除
BudgetApplication和BudgetService中的对应方法后,编译通过
- 删除
-
API 文档验证:
- Swagger/Scalar 文档中不再显示以下端点:
/api/Budget/GetUncoveredCategories/api/Budget/GetArchiveSummary
- Swagger/Scalar 文档中不再显示以下端点:
-
运行时验证:
- 前端调用上述端点返回 404
- V2 预算页面 (
/budget-v2) 正常加载和操作,不受影响
Dependencies
移除这两个接口的前置条件:
BudgetView.vue(V1 预算页面) 已删除Web/src/api/budget.js中的getUncoveredCategories和getArchiveSummary方法已清理- V2 预算页面已验证不依赖这两个接口
移除后连带删除:
BudgetApplication.GetUncoveredCategoriesAsyncBudgetApplication.GetArchiveSummaryAsyncBudgetService.GetUncoveredCategoriesAsyncBudgetService.GetArchiveSummaryAsync
移除后不影响:
- 其他预算相关接口 (
GetList,GetCategoryStats,Create,Update,Delete等) BudgetRepository和BudgetArchiveRepository的查询逻辑 (仍被其他接口使用)- V2 预算页面的任何功能
Notes
功能对比表
| 功能 | V1 实现 | V2 实现 |
|---|---|---|
| 未覆盖分类提示 | 专用接口 GetUncoveredCategories |
无(按需创建预算) |
| 归档总结 | 专用接口 GetArchiveSummary |
实时统计 GetCategoryStats |
| 预算列表 | GetList |
GetList (共用) |
| 分类统计 | GetCategoryStats |
GetCategoryStats (共用) |
潜在影响
如果未来需要在 V2 中恢复"未覆盖分类"或"归档总结"功能:
- 不能直接恢复删除的代码,因为业务逻辑可能已过时
- 应重新设计接口,考虑 V2 的数据模型和用户体验
- 建议先调研用户需求,确认是否真的需要这些功能