Project Figma File コレクション
概要
プロジェクト ↔ Figma ファイルの帳簿管理のためのコレクション(PostgreSQL から移設 — AI 所有)。プラグインのファイル登録が wf2des-api を通じて role/config_url を書き込み、component_sweep が同期フィールド(components_synced_at/sweep_error)を書き込み、style_captures を捕捉し、single-flight の sweep_marker を保持する。assemble フェーズは style_captures(派生スペック style_bindings の出所)と config_url(DESIGN 領域の矩形)を読み取る。
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| Project Figma File | project_figma_file | _id | string | ◯ | DocumentDB の _id に格納する uuid。プロジェクト ↔ Figma ファイルの帳簿管理(PG から移設 — AI 所有) |
||||
| organization_id | number | organization:id | テナント所有者。UNIQUE (organization_id, project_id, figma_file_key) の一部 | ||||||
| project_id | number | project:id | プロジェクトスコープ。UNIQUE (organization_id, project_id, figma_file_key) の一部 | ||||||
| figma_file_key | string | Figma ファイルキー(原文ママ。英数字、アンダースコアなし)。UNIQUE (organization_id, project_id, figma_file_key) の一部 | |||||||
| role | number | ファイルの役割 — プラグインのファイル登録が wf2des-api を通じてこれを書き込む。 0: working(生成出力ファイル) 1: library(コンポーネント/ルールの出所) |
|||||||
| components_synced_at | datetime | 最後に成功した component_sweep — 鮮度のウォーターマークであり、sweep 完了後に最後に更新される |
|||||||
| config_url | string | プロジェクトごとの取り込み config.json の S3 キー(WF/DESIGN 領域パターン、memo マーカー)。ホーム {org}/{proj}/wf2des/config.json。assemble フェーズはそこから DESIGN 領域の矩形を解決する |
|||||||
| sweep_error | string | ◯ | 最新の component_sweep の失敗。なければ null |
||||||
| style_captures | object | { <token>: string } — ファイルレベルのローカルテキストスタイル + カラー変数。figma_file_key ごとに 1 つ。各 token は Figma のスタイル/変数 id に写像される。派生スペックの style_bindings マップはこれから生成される |
|||||||
| sweep_marker | object | ◯ | { token: string, acquired_at: datetime, expires_at: datetime } — component_sweep の single-flight ロック(クラッシュ耐性あり、失効ロックの回復付き。expires_at を過ぎたロックは再取得可能)。sweep が実行中でないときは NULL |
||||||
| index_schema_version | number | ドキュメントスキーマのバージョン(スキーマガバナンスの同等性) | |||||||
| created_at | datetime | 作成タイムスタンプ | |||||||
| updated_at | datetime | 最終更新タイムスタンプ |
リレーション
- organization_id → organization.id
- project_id → project.id
figma_file_key— Figma ファイルキー。このファイルから sweep されたコンポーネントのdesign(type=component)行およびdesign_componentドキュメントに結合する。- DocumentDB 内ではリレーションは強制されない。論理リレーションであり、アプリケーションコードで検証する。
インデックス
- PRIMARY KEY (_id)
- UNIQUE (organization_id, project_id, figma_file_key) — プロジェクトファイルごとに 1 件の帳簿ドキュメント
role上のセカンダリインデックス (organization_id, project_id, role) —component_sweepは走査をプロジェクトの登録済みファイル(working + library の役割)にスコープする
Type Codes
role
- 0: working(生成出力ファイル)
- 1: library(コンポーネント/ルールの出所)
注記
- 互いに素な 2 つの書き込み者、競合なし。プラグインのファイル登録は wf2des-api を通じて
role/config_urlを書き込み、component_sweepはcomponents_synced_at、sweep_error、style_captures、sweep_markerを直接書き込む。書き込みはフィールド単位で、決して重ならない。 sweep_markerはcomponent_sweepの single-flight ガードである — sweep の開始時に取得され、終了時に解放/失効する。expires_atを過ぎたマーカーは再取得可能(クラッシュ耐性のある失効ロック回復)。components_synced_atは sweep 完了後にのみ最後に更新されるため、他に台帳を持たない内部実行に対する実行鮮度シグナルも兼ねる。style_capturesは assemble フェーズ中に生成される派生スペックstyle_bindingsマップの唯一の出所である。figma_file_keyごとに捕捉セットがちょうど 1 つになるよう、design_componentからここへ移設された。config_urlはプロジェクトごとのconfig.jsonを指す。assemble ワーカーはこれを読み取ってdesign_generation_result.placement.design_areaを解決する(プラグインはプロジェクト設定を直接読み取らない)。- 監査カラムは
created_at/updated_atのみ — 論理削除はなし(deleted_atなし)。コンポーネントの削除はここではなくプラットフォームのdesign行のステータスに記録される。 - このコレクションは他の 5 つの wf2des コレクションが持つ共通の
lineageエンベロープを意図的に省く: 互いに素な 2 つの書き込み者を持ち、単一の生成元実行がないため、出所は実行スコープのエンベロープではなくフィールド単位(components_synced_at/sweep_error)+index_schema_versionとなる。