ログイン無料で始める

データモデル

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


エンティティ階層

Project
├── Plan
│   ├── Phase (0〜50件)
│   └── 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 が返ります。

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

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

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

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担当者が変更された

イベントの構造

フィールド説明
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フェーズの要約