ログイン無料で始める

データモデル

Nolto のデータは Project → Plan → Phase の階層構造で管理されます。すべての変更は Event として記録され、監査ログとして機能します。


エンティティ階層

Project
├── Plan
│   ├── Phase (0〜50件)
│   │   └── Test Result (フェーズのテスト結果・追記式)
│   ├── Review (最終レビュー GO / NO-GO・追記式)
│   └── Event (イミュータブルな監査ログ)
├── Member (owner / member / viewer)
└── Contributor (git author マッピング)

Project

プロジェクトは、関連するプランをまとめるグループです。

フィールド説明
idUUIDプロジェクト ID
namestringプロジェクト名
descriptionstring?説明
repositoryUrlstring?リポジトリ URL
accentColorstring?ブランドカラー(#RRGGBB
createdAtdatetime作成日時
updatedAtdatetime更新日時

ロールと権限

権限ownermemberviewer
プラン閲覧YesYesYes
プラン登録・更新YesYesNo
メンバー管理YesNoNo
プロジェクト設定変更YesNoNo
プロジェクト削除YesNoNo

Plan

プランは AI 開発ツールが生成した実装計画です。

フィールド説明
idUUIDプラン ID
projectIdUUID所属プロジェクト
rawTitlestring元のタイトル
rawContentstring元の本文(Markdown)
displayTitlestring?LLM 変換後のタイトル
displaySummarystring?LLM 変換後の要約
displayBodyobject?LLM 変換後の構造化データ(ReadablePlan)
statusenumステータス
sourceKindenum登録元(file / api / mcp / manual
sourcePathstring?ファイルパス
sourceUrlstring?URL
sourceHashstring?コンテンツハッシュ
assigneeUserIdUUID?担当者(ユーザー)
plannedStartAtdatetime?予定開始日時
plannedEndAtdatetime?予定終了日時
completedAtdatetime?完了日時
discardedAtdatetime?破棄日時
transformStatusstring?最新の変換ステータス
createdAtdatetime作成日時
updatedAtdatetime更新日時

Phase

フェーズはプランのサブタスクです。順序付きで管理されます。

フィールド説明
idUUIDフェーズ ID
planIdUUID所属プラン
orderIndexint表示順(0始まり)
rawTitlestring元のタイトル
rawContentstring元の詳細
displayTitlestring?LLM 変換後のタイトル
displaySummarystring?LLM 変換後の要約
statusenumステータス
plannedStartAtdatetime?予定開始日時
plannedEndAtdatetime?予定終了日時
completedAtdatetime?完了日時
discardedAtdatetime?破棄日時

ステータス遷移

ステータス値

ステータスラベル説明
not_started未着手まだ作業を始めていない
in_progress進行中現在作業中
done完了完了した
discarded破棄進めないことにした

許可される遷移

FromTo
not_startedin_progress, discarded
in_progressdone, discarded, not_started
donein_progress
discardednot_started

許可されていない遷移をリクエストすると 400 Bad Request が返ります。

テスト結果(verdict)と最終レビュー(verdict)はこのステータスとは独立した別の値です。記録してもプラン・フェーズのステータスは変わりません。

フェーズからプランへの自動派生

フェーズのステータスを更新すると、親プランのステータスが以下のルールで自動的に再計算されます:

  1. フェーズが 0 件 → not_started
  2. 全フェーズが discardeddiscarded
  3. discarded 以外の全フェーズが donedone
  4. いずれかのフェーズが in_progressin_progress
  5. 上記以外 → not_started

Test Result(テスト結果)

フェーズのテスト結果を記録する追記専用のレコードです。同じフェーズに対して再テストのたびに追記され、UI ではフェーズごとに最新の結果が表示されます。

フィールド説明
idUUIDテスト結果 ID
planIdUUID所属プラン
phaseIdUUID対象フェーズ
roundintラウンド番号(再テストごとに増加。デフォルト 1)
verdictenum判定(下表)
summarystring?コメント(最大1,000文字)
actorUserIdUUID?記録者
createdAtdatetime記録日時

判定値(verdict)

ラベル説明
passed合格テストに合格した
failed不合格テストに失敗した
skipped対象外テスト対象外・スキップ

更新・削除はできません(イミュータブル)。記録時に phase_test_recorded イベントが追加されます。


Review(最終レビュー)

プラン単位の最終レビュー結果(GO / NO-GO)を記録する追記専用のレコードです。プランのステータスは変更しません(GO = 完了ではありません)。

フィールド説明
idUUIDレビュー ID
planIdUUID対象プラン
verdictenum判定(下表)
summarystring?コメント(最大1,000文字)
actorUserIdUUID?レビュー者
createdAtdatetime記録日時

判定値(verdict)

ラベル説明
goGO(承認)リリース・次フェーズへ進めてよい
no_goNO-GO(差し戻し)差し戻し。対応が必要

更新・削除はできません(イミュータブル)。記録時に plan_review_recorded イベントが追加されます。


Contributor

Git の author 情報をプランに紐づけるエンティティです。

フィールド説明
idUUIDコントリビューター ID
projectIdUUID所属プロジェクト
gitUserNamestring?Git ユーザー名
gitUserEmailstring?Git メールアドレス
matchedUserIdUUID?一致した Nolto ユーザー

プラン登録時に git.userEmail を指定すると、同じメールアドレスの Nolto ユーザーが自動的にマッチングされます。


Event(監査ログ)

すべてのプラン・フェーズの変更は不変(イミュータブル)なイベントとして記録されます。

イベントタイプ

イベント説明
plan_registeredプランが登録された
status_changedプランのステータスが変更された
phase_status_changedフェーズのステータスが変更された
llm_transform_queuedLLM 変換がキューに追加された
llm_transform_completedLLM 変換が完了した
llm_transform_failedLLM 変換が失敗した
llm_transform_retryLLM 変換がリトライされた
assignee_changed担当者が変更された
phase_test_recordedフェーズのテスト結果が記録された
plan_review_recorded最終レビュー結果が記録された

イベントの構造

フィールド説明
idUUIDイベント ID
planIdUUID対象プラン
phaseIdUUID?対象フェーズ(フェーズイベントの場合)
eventTypeenumイベントタイプ
fromStatusenum?変更前ステータス
toStatusenum?変更後ステータス
messagestring?メッセージ
actorUserIdUUID?操作者
createdAtdatetime発生日時

ReadablePlan(LLM 変換出力)

LLM が生成する構造化データです。プランの displayBody フィールドに格納されます。

フィールド説明
displayTitlestringビジネス向けタイトル
summarystring要約(1〜2文)
backgroundstring背景・経緯
goalstring目標
tasksstring[]主要タスク一覧
impactstring[]ビジネスへの影響
reviewPointsstring[]レビュー確認ポイント
risksstring[]リスク・懸念事項
phases[].displayTitlestringフェーズのビジネス向けタイトル
phases[].summarystringフェーズの要約
データモデル | Nolto