Files
SunCheng a88556c784 fix
2026-02-15 10:10:28 +08:00

98 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## ADDED Requirements
### Requirement: 预算实际金额正确查询交易记录
预算统计系统 SHALL 准确查询并汇总数据库中的交易记录,以计算预算的实际金额。
#### Scenario: 查询收入预算的交易记录
- **WHEN** 系统计算收入类型预算的实际金额
- **THEN** 系统 SHALL 查询 `TransactionRecord`
- **AND** 查询条件 SHALL 包含:
- 交易类型为 `Income`
- 交易发生时间在预算的统计时间段内(`OccurredAt >= startDate AND OccurredAt <= endDate`
- 交易分类在预算的 `SelectedCategories` 列表中
- **AND** 系统 SHALL 对符合条件的交易金额求和
#### Scenario: 查询支出预算的交易记录
- **WHEN** 系统计算支出类型预算的实际金额
- **THEN** 系统 SHALL 查询 `TransactionRecord`
- **AND** 查询条件 SHALL 包含:
- 交易类型为 `Expense`
- 交易发生时间在预算的统计时间段内
- 交易分类在预算的 `SelectedCategories` 列表中
- **AND** 系统 SHALL 对符合条件的交易金额求和
### Requirement: 分类匹配逻辑正确
系统 SHALL 正确匹配交易记录的分类字段与预算的 SelectedCategories。
#### Scenario: 分类字段完全匹配
- **WHEN** 交易记录的 `Classify` 字段为 "家庭年终奖金"
- **AND** 预算的 `SelectedCategories` 包含 "家庭年终奖金"
- **THEN** 该交易记录 SHALL 被包含在实际金额计算中
#### Scenario: 分类字段不匹配
- **WHEN** 交易记录的 `Classify` 字段为 "工资"
- **AND** 预算的 `SelectedCategories` 不包含 "工资"
- **THEN** 该交易记录 SHALL NOT 被包含在实际金额计算中
#### Scenario: SelectedCategories 为空字符串
- **WHEN** 预算的 `SelectedCategories` 为空字符串或 null
- **THEN** 系统 SHALL 不应用分类过滤
- **AND** 所有符合时间和类型条件的交易记录 SHALL 被包含在计算中
### Requirement: 日期范围过滤正确
系统 SHALL 使用正确的日期范围边界条件过滤交易记录。
#### Scenario: 交易在统计期间内
- **WHEN** 交易的 `OccurredAt` 为 2026-02-10
- **AND** 统计的 `startDate` 为 2026-02-01`endDate` 为 2026-02-28
- **THEN** 该交易记录 SHALL 被包含在实际金额计算中
#### Scenario: 交易在统计期间开始日
- **WHEN** 交易的 `OccurredAt` 等于 `startDate`
- **THEN** 该交易记录 SHALL 被包含在实际金额计算中(包含边界)
#### Scenario: 交易在统计期间结束日
- **WHEN** 交易的 `OccurredAt` 等于 `endDate`
- **THEN** 该交易记录 SHALL 被包含在实际金额计算中(包含边界)
#### Scenario: 交易在统计期间之前
- **WHEN** 交易的 `OccurredAt` 早于 `startDate`
- **THEN** 该交易记录 SHALL NOT 被包含在实际金额计算中
#### Scenario: 交易在统计期间之后
- **WHEN** 交易的 `OccurredAt` 晚于 `endDate`
- **THEN** 该交易记录 SHALL NOT 被包含在实际金额计算中
### Requirement: 年度统计汇总所有月份数据
当计算年度预算统计时,系统 SHALL 正确汇总整年的交易数据。
#### Scenario: 计算年度收入实际金额
- **WHEN** 系统计算某个收入预算的年度实际金额
- **AND** 该预算的 `Type``Year`
- **THEN** 系统 SHALL 汇总从当年 1 月 1 日到 12 月 31 日的所有符合条件的交易记录
- **AND** 如果当前时间在年度中间,系统 SHALL 汇总从 1 月 1 日到当前日期的交易记录
#### Scenario: 月度预算在年度统计中的处理
- **WHEN** 系统计算年度统计
- **AND** 某个月度预算(`Type``Month`)存在归档数据
- **THEN** 系统 SHALL 包含该月度预算在各个历史月份的归档实际金额
- **AND** 系统 SHALL 累加所有历史月份的归档金额
### Requirement: 测试覆盖关键场景
系统 SHALL 包含单元测试覆盖预算实际金额计算的关键场景。
#### Scenario: 测试覆盖收入预算计算
- **WHEN** 运行单元测试套件
- **THEN** SHALL 存在测试用例验证收入预算的实际金额计算
- **AND** 测试用例 SHALL 包含多个交易记录,验证汇总逻辑
#### Scenario: 测试覆盖分类匹配
- **WHEN** 运行单元测试套件
- **THEN** SHALL 存在测试用例验证分类匹配逻辑
- **AND** 测试用例 SHALL 包含匹配和不匹配的场景
#### Scenario: 测试覆盖日期范围
- **WHEN** 运行单元测试套件
- **THEN** SHALL 存在测试用例验证日期范围过滤
- **AND** 测试用例 SHALL 包含边界条件startDate, endDate, 期间内外)