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

---

BENCH-RUN T11 R01

# T11 多约束排序功能

## 结果
PASS

## 实际改动
- `ledger/query.py`：新增 `sort_transactions(transactions, sort_by="date", order="asc")`。
  - 校验字段/方向，非法抛 `ValueError`。
  - `date`/`amount`：用**两遍稳定排序**——先按 `id` 码点升序，再按主键升/降序，稳定性保证主键相同时 `id` 升序打破并列。
  - `id`：直接按 `id` 升/降序（`--sort-by id --order desc` 时 id 降序）。
  - `list_transactions` 扩展为 `(..., start_date, end_date, sort_by="date", order="asc")`，**先 `filter_by_date` 后 `sort_transactions`**，排序不改变过滤结果。
- `ledger/cli.py`：`list` 新增 `--sort-by {date,amount,id}`、`--order {asc,desc}`（默认 date/asc），用 argparse `choices` 使非法值按标准参数错误退出码 2 拒绝。
- 新增 `tests/test_sort.py`（13 个用例：默认/各方向、id 打破并列、码点序 Z<a、非法值、不改变成员、CLI 非零退出、CLI amount desc）。
- `docs/usage.md`：补充排序用法说明。

## 说明（测试断言修正）
首跑 `test_amount_asc_tiebreak_id` 失败：我把 amount=50 组的 id 升序预期误写为 `["A-10","A-02"]`。按 Unicode 码点 `'0'(U+0030) < '1'(U+0031)`，`"A-02" < "A-10"`，正确顺序为 `["A-02","A-10"]`。这是测试断言笔误（生产代码排序正确），已修正断言后套件通过。生产排序逻辑未改动。

## 实际运行的命令与结果
- `python3 -m unittest discover -s tests -v` → Ran 17 tests，OK（exit 0）。
- CLI 实证：默认日期升序+id 打破并列正确；`--sort-by amount --order desc` 正确（Travel 100.10 居首）；`--sort-by bogus` → argparse 报错 `invalid choice`，exit=2。

## 耗时
约 4 分钟。

## 未完成项
无。

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