> **发布元数据**：WorkBuddy · Kimi K3（评测者确认）· R01
> **来源**：`workbuddy/输出/workbuddy/T06/R01/BENCHMARK_RESULT.md`
> **原始文件 SHA-256**：`80e2647fc8f2c5a68f3887e12a4dbf200365c3b9ca1d242a454eedcf304668da`
> 本公开副本已将评测机绝对路径归一化；下文 PASS/FAIL/BLOCKED 是执行报告自述状态，不等同于独立验收结论。

---

BENCH-RUN T06 R01

# T06 增加类别过滤

## 结果
PASS

## 实际改动
- `ledger/query.py`：新增 `filter_by_category(transactions, category=None)`——查询值与数据类别均 `strip()` 去首尾空白 + `casefold()` 不区分大小写比较；记录保留原始类别拼写；`category=None` 返回全部。`list_transactions` 签名扩展为 `(..., start_date=None, end_date=None, category=None)`，内部**先跑 `filter_by_date` 再叠加 `filter_by_category`**，类别过滤不绕过日期过滤。
- `ledger/cli.py`：`list` 新增 `--category`，传入 `list_transactions`。
- 新增 `tests/test_category.py`（10 个用例：casefold、查询/数据去空白、原始拼写保留、无匹配空结果+成功退出、与日期过滤组合、Unicode casefold 的 ß→ss、CLI 过滤）。未删改已有测试。
- `docs/usage.md`：补充 `--category` 用法说明。

## 说明（测试断言修正）
首次运行时我新增用例 `test_composes_with_date_filter` 的断言误按"包含边界"写为 `["B","C"]`；基线日期过滤为**排他**边界（T04 才修复），`start_date=2025-01-02` 会排他去掉 B，正确结果应为 `["C"]`。这是测试断言预期错误，非生产代码缺陷；已把断言修正为与基线排他语义一致，套件随即通过。生产代码（`filter_by_category` / 组合逻辑）始终正确，未改动。

## 实际运行的命令与结果
- `python3 -m unittest discover -s tests -v` → Ran 13 tests，OK（exit 0）。
- CLI 实证：`list --category food` 命中 Food/food 记录并保留原始拼写（exit 0）；`list --category food --start-date 2025-01-31` 在排他边界下输出为空（exit 0，未绕过日期过滤）；`list --category Nope` 空结果 exit 0。

## 耗时
约 4 分钟。

## 未完成项
无。

## 会话隔离状态
仅修改 `输出/workbuddy/T06/R01/workspace/`，未触碰基准仓库、题面或其他目录。
