# T012 — 批次列表與獨立分頁

> Status: `done`
> Milestone: `M1`
> Est. change: `~180 lines`

## Goal

完成後，Scout 頁面從 listRuns 瀏覽真正批次，批次頁碼不再由全量 posts 前端分組產生。

## Depends on

- T011

## Inputs

- 讀取 / 依賴：
  - 檔案：`apps/web/src/pages/ScoutPage.tsx`
  - 既有能力 / API：Pager、ScoutRepo.listRuns
  - Spec 段落：§4 流程 D、§9 #10–#13

## Outputs

### 程式變更（預期路徑）

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/web/src/pages/ScoutPage.tsx` | edit | 移除 runGroups 主路徑，加入 run page state、載入、選取與 run metadata。 |
| `apps/web/src/pages/ScoutPage.test.tsx` | edit | 驗證第 1 頁載入、翻批次頁、選 run 與結果頁重設。 |

### 行為變更

- 批次預設每頁 10，依 server 順序顯示；切換 run 保留批次頁碼。

### API / 契約（若有）

- 只呼叫 listRuns({page,pageSize})，不得先抓全部 posts。

## Out of scope

- 不在本 task 實作結果時間卡片或 job 完成提示。

## Acceptance

- [x] 批次 total 使用 pagination.total，非目前 list.length。
- [ ] 指令：

```bash
cd apps/web && npm test -- src/pages/ScoutPage.test.tsx
```

驗收結果：`npm run build`、ScoutPage 2 tests passed。

## Notes

保留 homework 流程，但不再用 homework 推導新 run。
