# データベース設計書

## 概要

本ドキュメントは、Giselle AIワークフローシステムのデータベース設計を記載したものです。本システムはPostgreSQLをデータベースとして使用し、Drizzle ORMを通じてアクセスします。ベクトル検索機能のためにpgvector拡張を使用しています。

## テーブル一覧

| テーブル名 | 対応エンティティ | 説明 |
| --- | --- | --- |
| teams | チーム | 組織・チーム情報を管理 |
| users | ユーザー | ユーザーアカウント情報を管理 |
| supabase_user_mappings | Supabaseユーザーマッピング | SupabaseユーザーIDと内部ユーザーIDのマッピング |
| team_memberships | チームメンバーシップ | ユーザーとチームの所属関係を管理 |
| agents | エージェント（非推奨） | ワークスペースへの移行に伴い非推奨 |
| workspaces | ワークスペース | AIワークフローのワークスペースを管理 |
| apps | アプリケーション | 公開されたワークフローエントリーポイントを管理 |
| tasks | タスク | ワークフローの実行インスタンスを管理 |
| oauth_credentials | OAuth認証情報 | 外部サービスのOAuth認証情報を管理 |
| github_integration_settings | GitHub連携設定（非推奨） | GitHub連携の設定情報 |
| agent_activities | エージェントアクティビティ | エージェントの実行履歴を記録 |
| agent_time_usage_reports | エージェント時間使用量レポート | エージェント実行時間の使用量レポート |
| user_seat_usage_reports | ユーザーシート使用量レポート | ユーザーシートの使用量レポート |
| agent_time_restrictions | エージェント時間制限 | エージェント実行時間の制限情報 |
| invitations | 招待 | チームへの招待情報を管理 |
| github_repository_index | GitHubリポジトリインデックス | GitHubリポジトリのインデックス情報 |
| github_repository_embedding_profiles | GitHubリポジトリ埋め込みプロファイル | リポジトリの埋め込みプロファイル設定 |
| github_repository_content_status | GitHubリポジトリコンテンツステータス | リポジトリコンテンツの同期ステータス |
| github_repository_embeddings | GitHubリポジトリ埋め込み | リポジトリファイルの埋め込みベクトル |
| github_repository_pull_request_embeddings | GitHubプルリクエスト埋め込み | プルリクエストの埋め込みベクトル |
| github_repository_issue_embeddings | GitHubイシュー埋め込み | イシューの埋め込みベクトル |
| document_vector_stores | ドキュメントベクトルストア | ドキュメント用ベクトルストアを管理 |
| document_vector_store_sources | ドキュメントベクトルストアソース | ベクトルストアのソースドキュメント情報 |
| document_embedding_profiles | ドキュメント埋め込みプロファイル | ドキュメントの埋め込みプロファイル設定 |
| document_embeddings | ドキュメント埋め込み | ドキュメントの埋め込みベクトル |
| data_stores | データストア | 汎用データストアを管理 |
| flow_triggers | フロートリガー | ワークフローのトリガー設定 |
| acts | アクト | ワークフロー実行記録 |
| api_keys | APIキー | API認証キーを管理 |
| api_rate_limit_counters | APIレート制限カウンター | APIレート制限のカウンター |
| stripe_billing_cadence_histories | Stripe課金周期履歴 | Stripe課金周期のスナップショット |
| stripe_pricing_plan_subscription_histories | Stripeプラン購読履歴 | Stripeプラン購読のスナップショット |

## 各テーブル定義

### 1. teams

チーム・組織情報を管理するテーブルです。プラン情報やStripe連携情報も含みます。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (TeamId) | NOT NULL | 外部公開用の一意なID |
| name | text | NOT NULL | チーム名 |
| avatar_url | text | NULL | アバター画像URL |
| created_at | timestamp | NOT NULL | 作成日時（デフォルト: 現在時刻） |
| updated_at | timestamp | NOT NULL | 更新日時（自動更新） |
| plan | text (TeamPlan) | NOT NULL | プラン種別（free/pro/team/enterprise/internal） |
| active_subscription_id | text | NULL | アクティブなStripe購読ID |
| active_customer_id | text | NULL | アクティブなStripe顧客ID |

### 2. users

ユーザーアカウント情報を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (UserId) | NOT NULL | 外部公開用の一意なID（usr_xxxフォーマット） |
| email | text | NULL | メールアドレス（一意） |
| display_name | text | NULL | 表示名 |
| avatar_url | text | NULL | アバター画像URL |

### 3. supabase_user_mappings

SupabaseユーザーIDと内部ユーザーIDのマッピングテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| user_db_id | integer | NOT NULL | usersテーブルへの外部キー |
| supabase_user_id | text | NOT NULL | SupabaseのユーザーID |

### 4. team_memberships

ユーザーとチームの所属関係を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| id | serial | NOT NULL | プライマリキー |
| user_db_id | integer | NOT NULL | usersテーブルへの外部キー |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| role | text (TeamRole) | NOT NULL | ロール（admin/member） |

### 5. agents（非推奨）

エージェント情報を管理するテーブルです。workspacesテーブルへの移行に伴い非推奨です。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (AgentId) | NOT NULL | 外部公開用の一意なID |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| name | text | NULL | エージェント名 |
| graph_url | text | NULL | グラフURL（非推奨） |
| workspace_id | text (WorkspaceId) | NULL | ワークスペースID |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |
| creator_db_id | integer | NOT NULL | 作成者（usersへの外部キー） |
| metadata | jsonb (AgentMetadata) | NOT NULL | メタデータ（デフォルト: {sample: false}） |

### 6. workspaces

AIワークフローのワークスペースを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (WorkspaceId) | NOT NULL | 外部公開用の一意なID |
| name | text | NULL | ワークスペース名 |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |
| creator_db_id | integer | NOT NULL | 作成者（usersへの外部キー） |
| metadata | jsonb (WorkspaceMetadata) | NOT NULL | メタデータ（デフォルト: {sample: false}） |

### 7. apps

公開されたワークフローエントリーポイントを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (AppId) | NOT NULL | 外部公開用の一意なID |
| app_entry_node_id | text (NodeId) | NOT NULL | アプリエントリーノードID |
| end_node_id | text (NodeId) | NULL | 終了ノードID |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| workspace_db_id | integer | NOT NULL | workspacesテーブルへの外部キー |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 8. tasks

ワークフローの実行インスタンスを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (TaskId) | NOT NULL | 外部公開用の一意なID |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| app_db_id | integer | NULL | appsテーブルへの外部キー |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 9. oauth_credentials

外部サービスのOAuth認証情報を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| id | serial | NOT NULL | プライマリキー |
| user_id | integer | NOT NULL | usersテーブルへの外部キー |
| provider | text | NOT NULL | OAuthプロバイダー名 |
| provider_account_id | text | NOT NULL | プロバイダー側のアカウントID |
| access_token | text | NOT NULL | アクセストークン |
| refresh_token | text | NULL | リフレッシュトークン |
| expires_at | timestamp | NULL | トークン有効期限 |
| token_type | text | NULL | トークンタイプ |
| scope | text | NULL | スコープ |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 10. github_integration_settings（非推奨）

GitHub連携の設定情報を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text | NOT NULL | 外部公開用の一意なID |
| agent_db_id | integer | NOT NULL | agentsテーブルへの外部キー |
| repository_full_name | text | NOT NULL | リポジトリのフルネーム |
| call_sign | text | NOT NULL | コールサイン |
| event | text | NOT NULL | イベントタイプ |
| flow_id | text | NOT NULL | フローID |
| event_node_mappings | jsonb | NOT NULL | イベントとノードのマッピング |
| next_action | text | NOT NULL | 次のアクション |

### 11. agent_activities

エージェントの実行履歴を記録するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| agent_db_id | integer | NOT NULL | agentsテーブルへの外部キー |
| started_at | timestamp | NOT NULL | 開始日時 |
| ended_at | timestamp | NOT NULL | 終了日時 |
| total_duration_ms | numeric | NOT NULL | 合計実行時間（ミリ秒） |
| usage_report_db_id | integer | NULL | usage_reportsへの外部キー |

### 12. agent_time_usage_reports

エージェント実行時間の使用量レポートを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| accumulated_duration_ms | numeric | NOT NULL | 累積実行時間（ミリ秒） |
| minutes_increment | integer | NOT NULL | 増分（分） |
| stripe_meter_event_id | text | NOT NULL | StripeメーターイベントID |
| created_at | timestamp | NOT NULL | 作成日時 |

### 13. user_seat_usage_reports

ユーザーシートの使用量レポートを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| user_db_id_list | integer[] | NOT NULL | ユーザーDB IDリスト（スナップショット） |
| stripe_meter_event_id | text | NOT NULL | StripeメーターイベントID |
| value | integer | NOT NULL | シート数 |
| created_at | timestamp | NOT NULL | 作成日時 |

### 14. agent_time_restrictions

エージェント実行時間の制限情報を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー（プライマリキー） |
| created_at | timestamp | NOT NULL | 作成日時 |

### 15. invitations

チームへの招待情報を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| token | text | NOT NULL | 招待トークン（一意） |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| email | text | NOT NULL | 招待先メールアドレス |
| role | text (TeamRole) | NOT NULL | 招待するロール |
| inviter_user_db_id | integer | NOT NULL | 招待者（usersへの外部キー） |
| expired_at | timestamp | NOT NULL | 有効期限 |
| created_at | timestamp | NOT NULL | 作成日時 |
| revoked_at | timestamp | NULL | 取り消し日時 |

### 16. github_repository_index

GitHubリポジトリのインデックス情報を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (GitHubRepositoryIndexId) | NOT NULL | 外部公開用の一意なID |
| owner | text | NOT NULL | リポジトリオーナー |
| repo | text | NOT NULL | リポジトリ名 |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| installation_id | integer | NOT NULL | GitHubアプリのインストールID |
| last_ingested_commit_sha | text | NULL | 最後に取り込んだコミットSHA（非推奨） |
| status | text | NOT NULL | ステータス（idle/running/completed/failed） |
| error_code | text | NULL | エラーコード（非推奨） |
| retry_after | timestamp | NULL | リトライ予定日時（非推奨） |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 17. github_repository_embedding_profiles

リポジトリの埋め込みプロファイル設定を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| repository_index_db_id | integer | NOT NULL | github_repository_indexへの外部キー |
| embedding_profile_id | integer (EmbeddingProfileId) | NOT NULL | 埋め込みプロファイルID |
| created_at | timestamp | NOT NULL | 作成日時 |

### 18. github_repository_content_status

リポジトリコンテンツの同期ステータスを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| repository_index_db_id | integer | NOT NULL | github_repository_indexへの外部キー |
| embedding_profile_id | integer (EmbeddingProfileId) | NOT NULL | 埋め込みプロファイルID |
| content_type | text | NOT NULL | コンテンツタイプ（blob/pull_request/issue） |
| enabled | boolean | NOT NULL | 有効/無効フラグ |
| status | text | NOT NULL | ステータス（idle/running/completed/failed） |
| last_synced_at | timestamp | NULL | 最終同期日時 |
| metadata | jsonb | NULL | メタデータ |
| error_code | text | NULL | エラーコード |
| retry_after | timestamp | NULL | リトライ予定日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 19. github_repository_embeddings

リポジトリファイルの埋め込みベクトルを格納するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| repository_index_db_id | integer | NOT NULL | github_repository_indexへの外部キー |
| embedding_profile_id | integer (EmbeddingProfileId) | NOT NULL | 埋め込みプロファイルID |
| embedding_dimensions | integer (EmbeddingDimensions) | NOT NULL | 埋め込みベクトルの次元数 |
| file_sha | text | NOT NULL | ファイルのSHAハッシュ |
| path | text | NOT NULL | ファイルパス |
| embedding | vector | NOT NULL | 埋め込みベクトル |
| chunk_content | text | NOT NULL | チャンクコンテンツ |
| chunk_index | integer | NOT NULL | チャンクインデックス |
| created_at | timestamp | NOT NULL | 作成日時 |

### 20. github_repository_pull_request_embeddings

プルリクエストの埋め込みベクトルを格納するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| repository_index_db_id | integer | NOT NULL | github_repository_indexへの外部キー |
| embedding_profile_id | integer (EmbeddingProfileId) | NOT NULL | 埋め込みプロファイルID |
| embedding_dimensions | integer (EmbeddingDimensions) | NOT NULL | 埋め込みベクトルの次元数 |
| pr_number | integer | NOT NULL | プルリクエスト番号 |
| merged_at | timestamp | NOT NULL | マージ日時 |
| content_type | text | NOT NULL | コンテンツタイプ（title_body/comment/diff） |
| content_id | text | NOT NULL | コンテンツID |
| document_key | text | NOT NULL | ドキュメントキー |
| embedding | vector | NOT NULL | 埋め込みベクトル |
| chunk_content | text | NOT NULL | チャンクコンテンツ |
| chunk_index | integer | NOT NULL | チャンクインデックス |
| created_at | timestamp | NOT NULL | 作成日時 |

### 21. github_repository_issue_embeddings

イシューの埋め込みベクトルを格納するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| repository_index_db_id | integer | NOT NULL | github_repository_indexへの外部キー |
| embedding_profile_id | integer (EmbeddingProfileId) | NOT NULL | 埋め込みプロファイルID |
| embedding_dimensions | integer (EmbeddingDimensions) | NOT NULL | 埋め込みベクトルの次元数 |
| issue_number | integer | NOT NULL | イシュー番号 |
| issue_state | text | NOT NULL | イシューの状態 |
| issue_state_reason | text | NULL | イシュー状態の理由 |
| issue_updated_at | timestamp | NOT NULL | イシュー更新日時 |
| issue_closed_at | timestamp | NULL | イシュークローズ日時 |
| content_type | text | NOT NULL | コンテンツタイプ |
| content_id | text | NOT NULL | コンテンツID |
| document_key | text | NOT NULL | ドキュメントキー |
| content_created_at | timestamp | NOT NULL | コンテンツ作成日時 |
| content_edited_at | timestamp | NOT NULL | コンテンツ編集日時 |
| metadata_version | text | NULL | メタデータバージョン |
| embedding | vector | NOT NULL | 埋め込みベクトル |
| chunk_content | text | NOT NULL | チャンクコンテンツ |
| chunk_index | integer | NOT NULL | チャンクインデックス |
| created_at | timestamp | NOT NULL | 作成日時 |

### 22. document_vector_stores

ドキュメント用ベクトルストアを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (DocumentVectorStoreId) | NOT NULL | 外部公開用の一意なID |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| name | text | NOT NULL | ベクトルストア名 |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 23. document_vector_store_sources

ベクトルストアのソースドキュメント情報を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (DocumentVectorStoreSourceId) | NOT NULL | 外部公開用の一意なID |
| document_vector_store_db_id | integer | NOT NULL | document_vector_storesへの外部キー |
| storage_bucket | text | NOT NULL | ストレージバケット名 |
| storage_key | text | NOT NULL | ストレージキー |
| file_name | text | NOT NULL | ファイル名 |
| file_size_bytes | integer | NOT NULL | ファイルサイズ（バイト） |
| file_checksum | text | NULL | ファイルチェックサム |
| upload_status | text | NOT NULL | アップロードステータス（uploading/uploaded/failed） |
| upload_error_code | text | NULL | アップロードエラーコード |
| ingest_status | text | NOT NULL | 取り込みステータス（idle/running/completed/failed） |
| ingest_error_code | text | NULL | 取り込みエラーコード |
| metadata | jsonb | NULL | メタデータ |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |
| ingested_at | timestamp | NULL | 取り込み完了日時 |

### 24. document_embedding_profiles

ドキュメントの埋め込みプロファイル設定を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| document_vector_store_db_id | integer | NOT NULL | document_vector_storesへの外部キー |
| embedding_profile_id | integer (EmbeddingProfileId) | NOT NULL | 埋め込みプロファイルID |
| created_at | timestamp | NOT NULL | 作成日時 |

### 25. document_embeddings

ドキュメントの埋め込みベクトルを格納するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| document_vector_store_db_id | integer | NOT NULL | document_vector_storesへの外部キー |
| document_vector_store_source_db_id | integer | NOT NULL | document_vector_store_sourcesへの外部キー |
| embedding_profile_id | integer (EmbeddingProfileId) | NOT NULL | 埋め込みプロファイルID |
| embedding_dimensions | integer (EmbeddingDimensions) | NOT NULL | 埋め込みベクトルの次元数 |
| document_key | text | NOT NULL | ドキュメントキー |
| chunk_index | integer | NOT NULL | チャンクインデックス |
| chunk_content | text | NOT NULL | チャンクコンテンツ |
| embedding | vector | NOT NULL | 埋め込みベクトル |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 26. data_stores

汎用データストアを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | 内部プライマリキー |
| id | text (DataStoreId) | NOT NULL | 外部公開用の一意なID |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| name | text | NOT NULL | データストア名 |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 27. flow_triggers

ワークフローのトリガー設定を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| staged | boolean | NOT NULL | ステージング状態 |
| workspace_id | text (WorkspaceId) | NOT NULL | ワークスペースID |
| flow_trigger_id | text (TriggerId) | NOT NULL | フロートリガーID |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 28. acts

ワークフロー実行記録を管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| director_db_id | integer | NOT NULL | 実行者（usersへの外部キー） |
| sdk_workspace_id | text (WorkspaceId) | NOT NULL | SDKワークスペースID |
| sdk_flow_trigger_id | text (TriggerId) | NOT NULL | SDKフロートリガーID |
| sdk_act_id | text (TaskId) | NOT NULL | SDKアクトID |
| created_at | timestamp | NOT NULL | 作成日時 |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 29. api_keys

API認証キーを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| id | text (ApiKeyId) | NOT NULL | APIキーID（gsk_xxxフォーマット） |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| label | text | NULL | ラベル |
| created_by_user_db_id | integer | NULL | 作成者（usersへの外部キー） |
| redacted_value | text | NOT NULL | マスクされた値 |
| kdf_type | text | NOT NULL | KDFタイプ（scrypt） |
| kdf_salt | text | NOT NULL | KDFソルト |
| kdf_n | integer | NOT NULL | scrypt Nパラメータ |
| kdf_r | integer | NOT NULL | scrypt rパラメータ |
| kdf_p | integer | NOT NULL | scrypt pパラメータ |
| kdf_key_len | integer | NOT NULL | キー長 |
| secret_hash | text | NOT NULL | シークレットハッシュ |
| created_at | timestamp | NOT NULL | 作成日時 |
| last_used_at | timestamp | NULL | 最終使用日時 |
| revoked_at | timestamp | NULL | 取り消し日時 |

### 30. api_rate_limit_counters

APIレート制限のカウンターを管理するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー（複合PK） |
| route_key | text | NOT NULL | ルートキー（複合PK） |
| window_start | timestamp | NOT NULL | ウィンドウ開始時刻（複合PK） |
| count | integer | NOT NULL | カウント |
| updated_at | timestamp | NOT NULL | 更新日時 |

### 31. stripe_billing_cadence_histories

Stripe課金周期のスナップショットを保存するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| created_at | timestamp | NOT NULL | 作成日時 |
| id | text | NOT NULL | Stripe課金周期ID（bc_xxx） |
| customer_id | text | NOT NULL | Stripe顧客ID（cus_xxx） |
| billing_profile_id | text | NOT NULL | 請求プロファイルID（bilp_xxx） |
| payer_type | text | NOT NULL | 支払者タイプ |
| billing_cycle_type | text | NOT NULL | 課金サイクルタイプ（month/year） |
| billing_cycle_interval_count | integer | NOT NULL | 課金サイクル間隔 |
| billing_cycle_day_of_month | integer | NULL | 月の課金日 |
| billing_cycle_month_of_year | integer | NULL | 年の課金月 |
| billing_cycle_time_hour | integer | NOT NULL | 課金時刻（時） |
| billing_cycle_time_minute | integer | NOT NULL | 課金時刻（分） |
| billing_cycle_time_second | integer | NOT NULL | 課金時刻（秒） |
| next_billing_date | timestamp | NOT NULL | 次回課金日 |
| status | text | NOT NULL | ステータス |
| bill_settings_id | text | NULL | 請求設定ID（bblset_xxx） |
| created | timestamp | NOT NULL | Stripe側の作成日時 |
| metadata | jsonb | NULL | メタデータ |
| lookup_key | text | NULL | ルックアップキー |

### 32. stripe_pricing_plan_subscription_histories

Stripeプラン購読のスナップショットを保存するテーブルです。

| カラム名 | データ型 | NULL | 説明 |
| --- | --- | --- | --- |
| db_id | serial | NOT NULL | プライマリキー |
| team_db_id | integer | NOT NULL | teamsテーブルへの外部キー |
| billing_cadence_db_id | integer | NOT NULL | stripe_billing_cadence_historiesへの外部キー |
| created_at | timestamp | NOT NULL | 作成日時 |
| id | text | NOT NULL | Stripe購読ID（bpps_xxx） |
| billing_cadence_id | text | NOT NULL | 課金周期ID（bc_xxx） |
| pricing_plan_id | text | NOT NULL | 料金プランID（bpp_xxx） |
| pricing_plan_version_id | text | NOT NULL | 料金プランバージョンID（bppv_xxx） |
| servicing_status | text | NOT NULL | サービスステータス（active/canceled/paused/pending） |
| collection_status | text | NOT NULL | 回収ステータス |
| activated_at | timestamp | NULL | アクティブ化日時 |
| canceled_at | timestamp | NULL | キャンセル日時 |
| paused_at | timestamp | NULL | 一時停止日時 |
| will_cancel_at | timestamp | NULL | キャンセル予定日時 |
| collection_current_at | timestamp | NULL | 回収正常化日時 |
| collection_past_due_at | timestamp | NULL | 回収延滞日時 |
| collection_paused_at | timestamp | NULL | 回収一時停止日時 |
| collection_unpaid_at | timestamp | NULL | 未払い日時 |
| collection_awaiting_customer_action_at | timestamp | NULL | 顧客対応待ち日時 |
| created | timestamp | NOT NULL | Stripe側の作成日時 |
| metadata | jsonb | NULL | メタデータ |

## 備考

### 使用技術

- **データベース**: PostgreSQL
- **ORM**: Drizzle ORM
- **ベクトル検索**: pgvector拡張
  - 1536次元ベクトル: `vector(1536)` 型でHNSWインデックス使用
  - 3072次元ベクトル: `halfvec(3072)` 型でHNSWインデックス使用

### ID生成規則

本システムでは、外部公開用のIDにはプレフィックス付きの文字列を使用しています:

- TeamId: `team_xxx`
- UserId: `usr_xxx`
- WorkspaceId: `wrks_xxx`
- AppId: `app_xxx`
- TaskId: `tsk_xxx`
- ApiKeyId: `gsk_xxx`
- NodeId: `nd_xxx`

### 非推奨テーブル

以下のテーブルは非推奨であり、将来的に削除される予定です:

- `agents`: `workspaces`テーブルへの移行に伴い非推奨
- `github_integration_settings`: 新しいアーキテクチャでは使用されません

### カスケード削除

多くのテーブルでチーム削除時にカスケード削除が設定されています。これにより、チームを削除すると関連するすべてのデータが自動的に削除されます。
