データベースモデル
スタジオがデータをどこにどのような形で格納するかをまとめたドキュメントです。バックアップ範囲を 決めたり、直接クエリを実行したりする際に参照します。
PostgreSQL にはメタデータが格納され、ファイルシステム(DATA_ROOT)にはアプリのソースとビルド
成果物が格納されます。両方を取得して初めて復元できます — DB だけではアプリコードがなく、ファイル
だけでは誰が何を作成したかがわかりません。
| ストレージ | 格納するもの |
|---|---|
| PostgreSQL | ユーザー・アプリメタ・会話・監査・ウォッチャー・スキル |
ファイルシステム (DATA_ROOT) | ワークスペース(アプリソース)・ビルド成果物・状態 |
PostgreSQL は2つのモードのいずれかです — バンドルコンテナ(デフォルト)またはプラットフォーム共有 PG。 環境変数リファレンス を参照してください。
テーブル — 11個
| グループ | テーブル | 格納するもの |
|---|---|---|
| ユーザー | studio_users | アカウント・ロール(admin/builder/viewer)・パスワードハッシュ |
studio_tokens | 発行済みトークン | |
| 会話 | ask_conversations | チャットスレッド |
ask_history | 送受信メッセージと所要時間 | |
| ウォッチャー | watchers | 定期監視定義と通知設定 |
notification_seen | 通知確認状態 | |
| スキル | skills | 現場ノウハウ登録版 |
| デプロイ | deploy_log | デプロイ履歴 |
| 監査・使用量 | audit_log | 誰が何をしたか |
usage_log | AI トークン使用量 | |
| スキーマ | schema_migrations | 適用済みマイグレーション名と日時 |
flows が表示されます新規インストールも flows で作成した後、watchers にリネームする手順を踏みます — マイグレーション
履歴は一度記録されると変更されないためです。直接クエリを実行する場合は watchers です。
スキーマ変更はマイグレーションが管理します
サーバー起動時に src/infra/db/migrations/ の .sql を番号順に適用し、適用した
ファイル名を schema_migrations に記録します。適用済みのものは再度実行されません。
-- 지금 어디까지 적용됐는지
SELECT name, applied_at FROM schema_migrations ORDER BY name;
schema_migrations と実際のスキーマが一致しない場合、次のアップグレードでマイグレーションが
「既存のものを作成しようとして」失敗します。画面起動全体がブロックされます。
アップグレード前にはバックアップを先に取得してください → バックアップと復元。
ファイルシステム — DATA_ROOT
デフォルト値は /var/lib/pp-studio です。以下がすべてこの中に格納されます。
| 格納されるもの | ない場合 |
|---|---|
| アプリワークスペース(生成されたソース) | アプリを開けません — DB にはメタデータのみあります |
| ビルド成果物 | 再ビルドすれば再作成できます |
| セッション・状態 | 進行中だった作業が失われます |
DATA_ROOT にありませんスタジオは外部 PostgreSQL を使用します。DATA_ROOT を丸ごとバックアップしても DB は別途
取得する必要があります — バックアップと復元 を参照してください。
バックアップで見落としやすいもの
| 取得すべきもの | 漏らした場合 |
|---|---|
| PostgreSQL ダンプ | アカウント・ウォッチャー・会話・監査記録が失われる |
DATA_ROOT | アプリソースが失われ、アプリを開けなくなる |
/etc/kopens/plantpulse-studio.env | 接続情報・キーを再設定する必要がある |
バックアップのみで復元を試したことがない状態が最も危険です。手順は バックアップと復元 に記載されています。
関連ドキュメント
- バックアップと復元
- 環境変数リファレンス — DB モードと
DATA_ROOT - パスワード・API キー変更 — AI キーローテーション (DB 接続は
DATABASE_URL) - 初期パスワード変更 — ブートストラップ管理者アカウント