im_wower
·
2026-03-21
T-010-status-api.md
1---
2task_id: T-010
3title: Status API 与基础 UI
4status: done
5branch: feat/T-010-status-api
6repo: /Users/george/code/baa-conductor
7base_ref: main@56e9a4f
8depends_on:
9 - T-003
10 - T-004
11write_scope:
12 - apps/status-api/**
13updated_at: 2026-03-21
14---
15
16# T-010 Status API 与基础 UI
17
18## 目标
19
20实现最小状态读取层,让人和浏览器能读取 leader、mode、queue depth、active runs 等关键信息。
21
22## 统一开工要求
23
24- 必须从 `main@56e9a4f` 切出该分支
25- 新 worktree 进入后先执行 `npx --yes pnpm install`
26- 不允许从其他任务分支切分支
27
28## 本任务包含
29
30- status snapshot 结构完善
31- 状态读取接口骨架
32- 基础 UI 或最小渲染接口预留
33
34## 本任务不包含
35
36- 完整管理后台
37- 真实图表
38
39## 建议起始文件
40
41- `apps/status-api/src/index.ts`
42- `DESIGN.md` 第 23、29 节
43
44## 交付物
45
46- status API 骨架
47- 最小状态结构
48
49## 验收
50
51- 至少能表达 mode、leader、queue depth、active runs
52
53## files_changed
54
55- `apps/status-api/src/contracts.ts`
56- `apps/status-api/src/data-source.ts`
57- `apps/status-api/src/render.ts`
58- `apps/status-api/src/service.ts`
59- `apps/status-api/src/index.ts`
60- `apps/status-api/tsconfig.json`
61- `coordination/tasks/T-010-status-api.md`
62
63## commands_run
64
65- `npx --yes pnpm install`
66- `npx --yes pnpm --filter @baa-conductor/status-api typecheck`
67- `npx --yes tsx -e '...'`
68
69## result
70
71- 已实现最小 status snapshot 契约,包含 `mode`、`leader`、`queueDepth`、`activeRuns`、lease 元数据和观测时间。
72- 已实现基于 D1 的只读快照加载器,读取 automation state、leader lease、queued task 数、active run 数。
73- 已实现最小状态 API/渲染骨架,支持 `GET /healthz`、`GET /v1/status`、`GET /v1/status/ui` 与 `/` HTML 面板。
74
75## risks
76
77- 目前只交付包内 handler 与渲染层,尚未绑定真实 HTTP server;后续需要由整合者或依赖任务接入运行时。
78- `queueDepth` 当前按 `tasks.status = 'queued'` 统计,`activeRuns` 按 `task_runs.started_at IS NOT NULL AND finished_at IS NULL` 统计;如果后续运行态枚举收敛,需要一起校准。
79
80## next_handoff
81
82- 将 `D1StatusSnapshotLoader` 接到真实 `D1DatabaseLike`,再把 `createStatusApiHandler()` 挂到 status-api 运行时或 control/browse 面板入口。
83
84## notes
85
86- `2026-03-21`: 创建任务卡
87- `2026-03-21`: 从 `main@56e9a4f` 建立独立 worktree,完成状态 API 与最小 HTML 面板骨架并进入 review。