4.3 KiB
4.3 KiB
| title | state | created_at | updated_at | assignee |
|---|---|---|---|---|
| Planning Ticket API and UI without queue operations | planning | 2026-06-23T19:41:51Z | 2026-06-23T19:41:51Z | null |
背景
Ticket 管理 UI を作るにあたり、最初から DB migration や Queue 操作まで含めると authority 境界が大きくなりすぎる。現行の Ticket authority は .yoi/tickets/<ticket-id>/ の flat file backend であり、Workspace server 側にも Ticket 用 SQLite schema の器はあるが、現時点では authority ではない。
この Ticket では migration を行わず、まず Workspace backend に Ticket 操作用 API を整備し、その API を操作する最小 UI を実装する。対象は Planning Ticket の作成・確認に限定し、ready -> queued の Queue 操作や Orchestrator 起動には踏み込まない。
目的
- Workspace web から Ticket を確認し、Planning 状態の Ticket を作成できるようにする。
- UI は backend API を通じて Ticket を操作し、frontend が
.yoi/ticketsの内部ファイル構造や authority path に依存しないようにする。 - 将来 DB authority / migration に進む余地を残しつつ、この Ticket では現行 file backend を正として扱う。
要件
Backend API
- Workspace server に Ticket 管理用 API を追加または整理する。
- v0 では現行
LocalTicketBackend/ project record reader を authority として使い、DB migration はしない。 - API は少なくとも以下を扱う。
- Ticket 一覧取得
- Ticket 詳細取得
- Planning 状態の Ticket 作成
- 作成 API は title と本文/背景/受け入れ条件などの必要最小限の入力を受け、canonical Ticket ID を返す。
- frontend から raw
.yoi/ticketspath や内部 artifact path を直接指定させない。 - Ticket ID は canonical ID のみを扱い、title slug や legacy alias を API contract にしない。
- API の error は typed response として扱う。
- invalid input
- duplicate / conflict
- backend unavailable
- workspace not found / outside current workspace
UI
- Workspace web に Ticket 管理画面または Ticket 作成導線を追加する。
- v0 UI は Planning Ticket の作成までに限定する。
- 作成フォームは最低限以下を扱う。
- title
- 背景 / 要件の本文
- 受け入れ条件
- 作成後は作成された canonical Ticket ID と状態を表示し、詳細画面または一覧へ反映する。
- UI は API response を authority とし、frontend 側で Ticket file layout を再実装しない。
Scope boundary
- Queue 操作は実装しない。
ready -> queued- Panel / Workspace UI からの Queue button
- Orchestrator / Coder / Reviewer 起動
- role-session claim 作成
- Ticket DB migration は実装しない。
- 既存
.yoi/ticketsauthority を変更しない。 - 既存 Ticket CLI / Pod tool の挙動を壊さない。
Safety / authority
- Browser は local path / runtime path / socket path を直接 authority として渡さない。
- Workspace backend が current workspace の Ticket backend root を解決する。
- Ticket 作成は current workspace の
.yoi/ticketsに限定する。 - 将来 permission model を挟めるよう、API handler と backend operation の境界を分ける。
Non-goals
- Ticket storage の DB migration。
- SQLite
ticketsschema を authority に昇格すること。 - Queue / ready / inprogress / close などの lifecycle mutation UI。
- Orchestrator 起動、Worker spawn、role-session claim 連携。
- Ticket relation / artifact / orchestration-plan 編集 UI。
- SSE/WebSocket による live Ticket update。
受け入れ条件
- Workspace server に Ticket list/detail/create planning 用 API がある。
- Planning Ticket 作成 API が canonical Ticket ID を返す。
- 作成された Ticket は既存
yoi ticket list/showから確認できる。 - Workspace web から Planning Ticket を作成できる。
- UI から Queue 操作はできない。
- DB migration や SQLite Ticket authority 化を行っていない。
cargo test -p yoi-workspace-serverが通る。cargo check -p yoiが通る。cd web/workspace && deno task check && deno task buildが通る。git diff --checkが通る。nix build .#yoi --no-linkが通る。