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