Issue ライフサイクル・ステート遷移設計
概要
報酬付き Issue のライフサイクルを定義する。Issue は作成から完了まで明確なステートを持ち、各ステート間の遷移はトリガー条件によって制御される。
ステート遷移図
mermaid
stateDiagram-v2
[*] --> Draft: Issue作成(下書き)
Draft --> Open: マネージャー承認
Draft --> Cancelled: マネージャー却下
Open --> Available: 報酬・見積設定完了
Open --> Cancelled: マネージャーがキャンセル
Available --> InProgress: エンジニアがアサイン取得
Available --> Cancelled: マネージャーがキャンセル
InProgress --> InReview: MR作成・レビュー依頼
InProgress --> Available: エンジニアが自主リリース
InProgress --> Available: 期限超過による自動リリース
InProgress --> Cancelled: マネージャーがキャンセル
InReview --> ChangesRequested: レビュアーが修正依頼
InReview --> Approved: レビュアーが承認
InReview --> Available: エンジニアが自主リリース
ChangesRequested --> InReview: 修正完了・再レビュー依頼
ChangesRequested --> Available: エンジニアが自主リリース
ChangesRequested --> Available: 修正期限超過による自動リリース
Approved --> Done: MRマージ完了
Done --> [*]
Cancelled --> [*]
state InProgress {
[*] --> Working
Working --> WaitingForInfo: 質問・確認待ち
WaitingForInfo --> Working: 回答受領
}ステート定義
| ステート | 説明 | 主体 |
|---|---|---|
| Draft | Issue が作成された初期状態。内容の精査・報酬設定前 | マネージャー |
| Open | マネージャーが内容を承認済み。報酬・見積の設定待ち | マネージャー |
| Available | 報酬・見積が設定済み。エンジニアが取得可能な状態 | - |
| In Progress | エンジニアがアサインを取得し、作業中 | エンジニア |
| In Review | MR が作成され、レビュー待ちの状態 | レビュアー |
| Changes Requested | レビューで修正が要求された状態 | エンジニア |
| Approved | レビューが承認され、マージ待ちの状態 | マネージャー |
| Done | MR がマージされ、Issue が完了。報酬確定 | - |
| Cancelled | Issue がキャンセルされた状態 | マネージャー |
遷移トリガー条件一覧
| # | 遷移元 | 遷移先 | トリガー | 条件 | 実行者 |
|---|---|---|---|---|---|
| 1 | Draft | Open | マネージャー承認 | Issue 内容が十分に記述されている | マネージャー |
| 2 | Draft | Cancelled | マネージャー却下 | Issue が不要と判断 | マネージャー |
| 3 | Open | Available | 報酬・見積設定 | 報酬額と見積工数が設定済み | マネージャー |
| 4 | Open | Cancelled | キャンセル | Issue が不要と判断 | マネージャー |
| 5 | Available | In Progress | アサイン取得 | エンジニアの同時着手数 < 上限、楽観的ロック成功 | エンジニア |
| 6 | Available | Cancelled | キャンセル | Issue が不要と判断 | マネージャー |
| 7 | In Progress | In Review | MR 作成 | MR が作成されレビュー依頼済み | エンジニア |
| 8 | In Progress | Available | 自主リリース | エンジニアが着手を取りやめ | エンジニア |
| 9 | In Progress | Available | 期限超過 | デフォルト期限を超過(自動) | システム |
| 10 | In Progress | Cancelled | キャンセル | Issue が不要と判断 | マネージャー |
| 11 | In Review | Changes Requested | 修正依頼 | レビュアーが修正を要求 | レビュアー |
| 12 | In Review | Approved | 承認 | レビュアーが MR を承認 | レビュアー |
| 13 | In Review | Available | 自主リリース | エンジニアがレビュー中に離脱 | エンジニア |
| 14 | Changes Requested | In Review | 再レビュー依頼 | 修正コミットを push し再依頼 | エンジニア |
| 15 | Changes Requested | Available | 自主リリース | エンジニアが修正を断念 | エンジニア |
| 16 | Changes Requested | Available | 修正期限超過 | 修正期限(72時間)を超過(自動) | システム |
| 17 | Approved | Done | MR マージ | MR がターゲットブランチにマージ | マネージャー |
カンバンカラム対応表
| カンバンカラム | 対応ステート | 説明 |
|---|---|---|
| Backlog | Draft | 内容精査前の Issue |
| Ready | Open, Available | 取得可能な Issue(報酬設定中 / 設定済み) |
| In Progress | In Progress | 作業中の Issue |
| In Review | In Review, Changes Requested | レビュー中の Issue |
| Done | Approved, Done | 完了・報酬確定済みの Issue |
| Cancelled | Cancelled | キャンセルされた Issue |
タイムアウト設定
| 対象ステート | タイムアウト | アクション |
|---|---|---|
| In Progress | 見積工数 x 1.5 | Available に自動リリース、エンジニアに通知 |
| Changes Requested | 72 時間 | Available に自動リリース、エンジニアに通知 |
| In Review | 5 営業日 | レビュアーにリマインド通知 |
備考
- ステート遷移は全て監査ログに記録される
- Available への自動リリース時、エンジニアの作業ブランチは保持される(別のエンジニアが引き継ぎ可能)
- Cancelled への遷移は、In Progress 以降のステートでは既存 MR のクローズを伴う