> **发布元数据**：Kimi Code · Kimi K3（评测者确认）· R01
> **来源**：`kimi-code/输出/kimi-code/T06/R01/BENCHMARK_RESULT.md`
> **归属更正**：此批结果由 Kimi Code 执行；历史输出 slug `zcode` 为命名错误，原始报告 SHA-256 留存。
> **原始文件 SHA-256**：`ef313ffbf48a10ea901fa5b8ba533884a957e31c406b6701d3faf2c9c2f99c48`
> 本公开副本已将评测机绝对路径归一化；下文 PASS/FAIL/BLOCKED 是执行报告自述状态，不等同于独立验收结论。

---

# BENCHMARK_RESULT — T06 R01

状态：PASS

- 任务：T06 增加类别过滤（`--category <NAME>`）
- 开始时间：2026-09-24 10:23:58 CST（`date`）
- 结束时间：2026-09-24 10:25:40 CST（`date`）
- 耗时：约 1 分 42 秒

## 实际改动文件

所有改动均在独立 workspace `<评测根目录>/kimi-code/输出/kimi-code/T06/R01/workspace` 内：

1. `ledger/query.py` — 新增 `filter_by_category(transactions, category)`：`category is None` 时返回全部记录的副本；否则对查询值与每条记录的 `category` 都做 `strip().casefold()` 后精确相等比较，返回的记录对象不变（保留原始拼写）。`list_transactions` 与日期过滤（排他边界）未改动。
2. `ledger/cli.py` — `list` 子命令新增 `--category` 参数；`main` 中在 `list_transactions`（日期过滤）之后追加 `rows = filter_by_category(rows, args.category)`，类别过滤不绕过日期过滤；`from .query import` 增加 `filter_by_category`。无 `--category` 时 `args.category` 为 `None`，行为与基线逐字节一致（`filter_by_category` 原样透传，`if output: print(output)` 逻辑不变）。
3. `tests/test_category.py`（新增）— 6 个用例：大小写不敏感匹配（`food` 同时命中 `Food`×2 与 `food`）、输出保留原始拼写（`| Food |` 与 `| food |`）、查询值首尾空白剥离（`"  food  "` 与 `"food"` 输出相同）、与 `--start-date`/`--end-date` 组合生效（排他边界下仅剩 C-01）、未匹配类别空输出且退出码 0、Unicode 类别 `家庭`。
4. `docs/usage.md` — 在「列出交易」一节追加 `--category` 简短用法说明（忽略空白、casefold 不区分大小写、保留原始拼写、可与日期选项组合）。

未改动：`tests/test_baseline.py`、`ledger/formatting.py`（`$-1.95` 负数格式为 T10 有意保留的基线缺陷）、日期过滤排他边界（T04 基线）、题目源文件与基准仓库。未增加任何依赖，未联网。

## 实际运行的命令与结果

### 单元测试

```
$ cd workspace && python3 -m unittest discover -s tests -v
test_default_fixture_loads (test_baseline.BaselineSmokeTests) ... ok
test_default_summary_shape (test_baseline.BaselineSmokeTests) ... ok
test_list_command_runs (test_baseline.BaselineSmokeTests) ... ok
test_valid_money_inputs (test_baseline.BaselineSmokeTests) ... ok
test_case_insensitive_matches_both_spellings (test_category.CategoryFilterTests) ... ok
test_combines_with_date_filters (test_category.CategoryFilterTests) ... ok
test_original_spelling_preserved (test_category.CategoryFilterTests) ... ok
test_query_value_is_stripped (test_category.CategoryFilterTests) ... ok
test_unicode_category (test_category.CategoryFilterTests) ... ok
test_unmatched_category_is_empty_and_succeeds (test_category.CategoryFilterTests) ... ok

----------------------------------------------------------------------
Ran 10 tests in 0.004s

OK
```
退出码：0。

### CLI 验证（实际运行，退出码均为 0）

```
$ python3 -m ledger list --category food
A-02 | 2025-01-01 | Food | $12.00
A-01 | 2025-01-01 | Food | $-1.95
C-01 | 2025-01-31 | food | $0.01

$ python3 -m ledger list --category " food "
A-02 | 2025-01-01 | Food | $12.00
A-01 | 2025-01-01 | Food | $-1.95
C-01 | 2025-01-31 | food | $0.01

$ python3 -m ledger list --category nosuch
（无输出，退出码 0）

$ python3 -m ledger list --category food --start-date 2025-01-01 --end-date 2025-02-01
C-01 | 2025-01-31 | food | $0.01
（排他日期边界生效：2025-01-01 的 A-02/A-01 被日期过滤排除，类别过滤未绕过日期过滤）

$ python3 -m ledger list --category 家庭
D-01 | 2025-02-01 | 家庭 | $3.50

$ python3 -m ledger list   （无选项回归）
A-02 | 2025-01-01 | Food | $12.00
A-01 | 2025-01-01 | Food | $-1.95
B-01 | 2025-01-02 | Travel | $100.10
C-01 | 2025-01-31 | food | $0.01
D-01 | 2025-02-01 | 家庭 | $3.50
E-01 | 2024-12-31 | Transit | $2.00
```

注：输出中 `$-1.95` 是基线 `formatting.py` 对负数金额的有意缺陷（注释标明为 T10 保留），不属于本题范围，未改动。

## 未完成项

无。题面全部要求已完成并验证。

## 会话隔离状态

本题为独立子会话执行：仅在 `<评测根目录>/kimi-code/输出/kimi-code/T06/R01/workspace` 内读写代码文件，结果文件写入 `<评测根目录>/kimi-code/输出/kimi-code/T06/R01/BENCHMARK_RESULT.md`。未修改题目源文件（`题目/`）、基准仓库（`基准仓库/`）或其他运行目录。`git status`（workspace 内）显示仅上述 4 个文件变更（3 修改 + 1 新增），无其他副作用。

## 未知元数据

评测脚本、评分细则：UNKNOWN。
