ticket: plan ticket management api ui
This commit is contained in:
parent
a479d3e32d
commit
1044b39c3f
0
.yoi/tickets/00001KVV01P5Z/artifacts/.gitkeep
Normal file
0
.yoi/tickets/00001KVV01P5Z/artifacts/.gitkeep
Normal file
90
.yoi/tickets/00001KVV01P5Z/item.md
Normal file
90
.yoi/tickets/00001KVV01P5Z/item.md
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
---
|
||||||
|
title: 'Planning Ticket API and UI without queue operations'
|
||||||
|
state: 'planning'
|
||||||
|
created_at: '2026-06-23T19:41:51Z'
|
||||||
|
updated_at: '2026-06-23T19:41:51Z'
|
||||||
|
assignee: 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/tickets` path や内部 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/tickets` authority を変更しない。
|
||||||
|
- 既存 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 `tickets` schema を 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` が通る。
|
||||||
7
.yoi/tickets/00001KVV01P5Z/thread.md
Normal file
7
.yoi/tickets/00001KVV01P5Z/thread.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<!-- event: create author: "yoi ticket" at: 2026-06-23T19:41:51Z -->
|
||||||
|
|
||||||
|
## 作成
|
||||||
|
|
||||||
|
LocalTicketBackend によって作成されました。
|
||||||
|
|
||||||
|
---
|
||||||
Loading…
Reference in New Issue
Block a user