## 1. 问题 1:修复收入预算实际金额计算 ### 1.1 编写单元测试复现 Bug - [x] 1.1.1 在 `WebApi.Test/` 中创建测试类 `BudgetRepositoryTest.cs` - [x] 1.1.2 编写测试用例:创建模拟的收入预算(包含"家庭年终奖金"分类) - [x] 1.1.3 编写测试用例:创建模拟的交易记录(包含"家庭年终奖金"分类,金额非 0) - [x] 1.1.4 编写测试用例:调用 `GetCurrentAmountAsync` 方法,断言返回金额应 > 0 - [x] 1.1.5 运行测试,验证测试失败(复现 bug) ### 1.2 诊断和修复问题 - [x] 1.2.1 检查 `Repository/BudgetRepository.cs` 的 `GetCurrentAmountAsync` 方法 - [x] 1.2.2 验证 `SelectedCategories.Split(',')` 的分类匹配逻辑是否正确 - [x] 1.2.3 验证日期范围过滤条件(`>= startDate` 和 `<= endDate`) - [x] 1.2.4 验证交易类型过滤条件(`Type == TransactionType.Income`) - [x] 1.2.5 根据诊断结果修复查询逻辑 - [x] 1.2.6 添加日志输出以便未来调试(使用 `ILogger`) ### 1.3 验证修复 - [x] 1.3.1 运行单元测试,确保测试通过 - [x] 1.3.2 运行完整测试套件:`dotnet test WebApi.Test/WebApi.Test.csproj` - [ ] 1.3.3 在浏览器中验证:打开 `/budget-v2` 收入标签页 - [ ] 1.3.4 在浏览器中验证:检查"家庭年终奖金"的年度实际金额是否正确显示 ## 2. 问题 2:添加存款计划明细按钮和弹窗 ### 2.1 添加明细按钮 - [x] 2.1.1 打开 `Web/src/components/Budget/BudgetCard.vue` - [x] 2.1.2 在 `header-actions` slot 中添加明细按钮(`van-button`,`icon="info-o"`) - [x] 2.1.3 为存款计划卡片(`budget.category === 2`)条件渲染明细按钮 - [x] 2.1.4 添加点击事件处理器 `@click.stop="showDetailPopup = true"` ### 2.2 创建明细弹窗组件 - [x] 2.2.1 在 `Web/src/views/budgetV2/modules/SavingsBudgetContent.vue` 中添加 `ref` 引用 `showDetailPopup` - [x] 2.2.2 创建 `van-popup` 组件,设置 `position="bottom"`, `round`, `:style="{ height: '80%' }"` - [x] 2.2.3 添加弹窗标题:"计划存款明细" - [x] 2.2.4 添加关闭按钮(点击关闭或点击遮罩关闭) ### 2.3 实现明细内容 - [x] 2.3.1 在弹窗中添加"收入预算"分组卡片 - [x] 2.3.2 计算并显示收入预算总限额(从 `budgets` 中过滤 `category === 1` 的预算,求和 `limit`) - [x] 2.3.3 计算并显示收入预算实际金额(求和 `current`) - [x] 2.3.4 在弹窗中添加"支出预算"分组卡片 - [x] 2.3.5 计算并显示支出预算总限额(从 `budgets` 中过滤 `category === 0` 的预算,求和 `limit`) - [x] 2.3.6 计算并显示支出预算实际金额(求和 `current`) - [x] 2.3.7 添加"计划存款"公式展示:`收入预算 - 支出预算 = 计划存款` - [x] 2.3.8 显示计划存款金额(`budget.limit`) - [x] 2.3.9 显示实际存款金额(`budget.current`) - [x] 2.3.10 计算并显示差额:`Math.max(0, budget.limit - budget.current)` ### 2.4 样式优化 - [x] 2.4.1 为明细弹窗添加适当的内边距和间距 - [x] 2.4.2 使用不同颜色区分收入(绿色)和支出(红色) - [x] 2.4.3 使用 `common-card` 样式保持与其他页面一致 - [x] 2.4.4 确保暗色主题下的可读性 ### 2.5 验证功能 - [x] 2.5.1 在浏览器中打开 `/budget-v2` 计划标签页 - [x] 2.5.2 验证存款计划卡片上有明细按钮 - [x] 2.5.3 点击明细按钮,验证弹窗正确打开 - [x] 2.5.4 验证弹窗中的数据计算正确(与卡片上的"计划存款"金额一致) - [x] 2.5.5 验证关闭弹窗功能正常 ## 3. 问题 3:统一卡片样式 ### 3.1 修复预算图表卡片样式 - [x] 3.1.1 打开 `Web/src/components/Budget/BudgetChartAnalysis.vue` - [x] 3.1.2 找到 `