Files
EmailBill/openspec/changes/archive/2026-02-17-remove-v1-calendar-stats-budget/proposal.md
SunCheng c49f66757e
Some checks failed
Docker Build & Deploy / Build Docker Image (push) Waiting to run
Docker Build & Deploy / Deploy to Production (push) Has been cancelled
Docker Build & Deploy / Cleanup Dangling Images (push) Has been cancelled
Docker Build & Deploy / WeChat Notification (push) Has been cancelled
1
2026-02-18 21:16:45 +08:00

3.8 KiB
Raw Blame History

Why

随着系统 V2 版本的功能已经稳定运行V1 版本的日历、统计、预算三大模块已成为历史遗留代码,增加了代码库的维护成本和认知负担。移除这些旧版本代码可以简化系统架构,降低未来重构的风险,同时减少不必要的测试和文档维护工作。

What Changes

BREAKING 移除前端 V1 页面

  • 删除 Web/src/views/CalendarView.vue (日历视图)
  • 删除 Web/src/views/BudgetView.vue (预算管理页面)
  • 删除 Web/src/views/statisticsV1/Index.vue (统计 V1 页面)
  • 移除相关路由配置 (/calendar, /budget, / 的 V1 路由)

BREAKING 移除前端 API 客户端 (仅 V1 专用部分)

  • 清理 Web/src/api/transactionRecord.js 中 V1 专用方法 (GetDailyStatistics 调用)
  • 清理 Web/src/api/budget.js 中 V1 专用方法 (GetUncoveredCategories, GetArchiveSummary)
  • 清理 Web/src/api/statistics.js 中 V1 专用方法 (GetBalanceStatistics)

BREAKING 移除后端 Controller 接口 (仅 V1 专用部分)

  • TransactionRecordController.GetDailyStatisticsAsync (已标记 Obsolete仅 CalendarView 使用)
  • BudgetController.GetUncoveredCategoriesAsync (仅 BudgetView 使用)
  • BudgetController.GetArchiveSummaryAsync (仅 BudgetView 使用)
  • TransactionStatisticsController.GetBalanceStatisticsAsync (仅 statisticsV1 使用)

移除后端 Service/Application 层 (仅 V1 专用部分)

  • BudgetApplication 中移除 GetUncoveredCategoriesAsync, GetArchiveSummaryAsync
  • BudgetService 中移除 GetUncoveredCategoriesAsync, GetArchiveSummaryAsync
  • TransactionStatisticsApplication 中移除 GetBalanceStatisticsAsync
  • TransactionStatisticsService 中移除 GetBalanceStatisticsAsync

清理共享组件的 V1 特定逻辑

  • 检查 TransactionList, TransactionDetail, PopupContainer 等组件是否包含 V1 特定逻辑
  • 移除全局事件监听 (transaction-deleted, transactions-changed) 如果仅 V1 使用

更新路由守卫和版本控制逻辑

  • 移除 Web/src/router/index.js 中的 V1 路由配置
  • 简化 useVersionStore 中的版本切换逻辑(移除 V1 相关分支)

Capabilities

New Capabilities

(无新增能力)

Modified Capabilities

  • routing: 移除 V1 路由配置,简化版本切换逻辑
  • transaction-api: 移除 GetDailyStatistics (Obsolete) 接口
  • budget-api: 移除 GetUncoveredCategories, GetArchiveSummary 接口
  • statistics-api: 移除 GetBalanceStatistics 接口

Impact

前端影响

  • 页面数量: 减少 3 个页面文件
  • 路由配置: 移除 3 个路由 (/calendar, /budget, /)
  • API 客户端: 清理 4+ 个废弃方法
  • 组件: 需验证共享组件 (TransactionList, TransactionDetail) 在 V2 中是否正常工作

后端影响

  • Controller 层: 移除 4 个 API 端点
  • Application 层: 移除 4 个业务方法
  • Service 层: 移除 4 个服务方法
  • Repository 层: 无影响 (V2 继续使用相同的 Repository)

兼容性影响

  • 破坏性变更: 所有 V1 API 端点将不可用
  • 用户影响: V1 用户必须切换到 V2 版本
  • 数据影响: 无,数据库表和实体不受影响

测试影响

  • 单元测试: 需移除 V1 相关的测试用例
  • 集成测试: 需验证 V2 页面功能完整性
  • 手动测试: 需打开 V2 页面进行功能回归测试

依赖影响

  • 共享组件: TransactionList, TransactionDetail, PopupContainer, SmartClassifyButton 仍被 V2 使用,不能删除
  • 第三方库: ECharts 仍被 V2 使用,不能删除
  • 全局事件: 需检查 transaction-deleted, transactions-changed 事件是否仅被 V1 监听

文档影响

  • 需更新 API 文档,标记移除的端点
  • 需更新用户文档,说明 V1 已下线