コンテンツにスキップ

WF2Des Table

概要

いずれかのエッジ(ワイヤーフレームからデザイン、またはデザインからワイヤーフレーム)の生成実行に対するクライアント向けステータス行で、どちらのエッジかは edge が判別する。生成リクエスト 1 件につき 1 行で、バックエンドの wf2des-api が作成し、POST(201)で返され GET でポーリングされる。両エッジの生成実行に対する唯一の PostgreSQL 面であり、あらゆる書き込みはバックエンドが担う(行の作成に加えて ai-status webhook/confirm/placement/feedback の各エンドポイント)。ワーカーは決して書き込まない。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
WF2Des wf2des id string ◯ uuid(varchar(255))。クライアント向けリクエスト ID — POST 201 の対象かつ GET ポーリングのキーで、ワーカー/webhook には job_id として引き渡される。クライアント向けステータス行であり、更新はバックエンド側からのみ行う
organization_id number organization:id テナントスコープ。現状は DEFAULT_ORGANIZATION_ID=1
project_id number project:id テナントスコープ。セカンダリ探索インデックス (organization_id, project_id, figma_file_key, status) の一部 — 遅延マテリアライズの探索用
figma_file_key string 対象 Figma ファイル。部分ユニーク (figma_file_key, wf_node_id) WHERE status = '0' の一部 — WF ノードごとに 1 件のみ稼働中の生成を許可(重複トリガー → 409 と既存 id を返す)
wf_node_id string 対象 WF フレームのノード id(稼働中生成の重複排除キーの後半)
screen_id string 画面 ID。フレーム名から事前入力しユーザーが確定する
prompt string ◯ 任意の生成プロンプト(選択入力。memo intent より下位にランク付け)
placement_target string ◯ 任意の配置ノード id。結果ドキュメントの request ブロックに引き写される
auto_confirm enum '0' wf2des_auto_confirm — '0' normal(parse-confirm ステップ)/'1' auto-confirm(parse と assemble を 1 回の呼び出しで実行)
trigger_surface enum wf2des_trigger_surface — '0' api/'1' plugin(認証された surface からバックエンド側で導出)
status enum '0' wf2des_status(Type Codes を参照)
phase enum ◯ wf2des_phase — status '0' 内部の生成オーケストレーション(Type Codes を参照)。終端に達すると NULL。GET/一覧で表示される
attempt number 1 単調増加のフェンシングカウンター(現状は 1 固定 — これをバンプするエンドポイントは存在しない) — バックエンドの再キュー投入時のみ増加する。DocumentDB の結果ドキュメント書き込みと webhook の作用はこれを比較する((_id, attempt) の CAS)
error_message string ◯ クライアントに可視な失敗詳細(text)。失敗 webhook のマニフェストから記録される
result_url string ◯ 終端の結果/失敗アーティファクトの S3 キー
flag_count number ◯ 結果ドキュメントの confidence.flag_count を完了時点でコピーしたもの。GET/一覧に表示され、データプレーン呼び出しなしでフラグを確認できる
materialized_at datetime ◯ プラグインがフレームを構築した後、バックエンドの placement エンドポイントで設定される
feedback_status enum ◯ wf2des_feedback_status — '0' fixed/'1' adopted(バックエンドの feedback エンドポイントが記録。記帳のみ)
created_at datetime
updated_at datetime
deleted_at datetime ◯ 論理削除
created_by string user:cognito_sub システム書き込み(webhook/enqueue)はサービスアカウントの cognito_sub を使用
updated_by string user:cognito_sub
deleted_by string user:cognito_sub ◯
edge enum '0' wf2des_edge — 行を生成したエッジ: '0' wf2des/'1' des2wf。稼働中生成の部分ユニークキーの一部であり、一方のエッジで稼働中の実行がもう一方をブロックすることはない
score number ◯ 実行のスコアを完了時点でコピーしたもの(numeric(5,4))。GET/一覧に表示され、データプレーン呼び出しなしでスコアを確認できる。完了エフェクトがスコアを含まない場合は NULL
score_version string ◯ varchar(32) — スコアを算出したフォーミュラのバージョン(des2wf エッジでは ds@1.0)。バージョンをまたいでスコアを比較することはなく、追跡のためのフィールド

リレーション

  • organization_id → organization.id
  • project_id → project.id
  • 監査フィールド(created_by/updated_by/deleted_by)は user.cognito_sub を参照する。システム側の書き込みはサービスアカウントの cognito_sub を使用する
  • (figma_file_key, wf_node_id) が対象 WF フレームを特定する。組み立て済みの結果は完了フローを通じて共有プラットフォームの design レジストリ(type=component コンテキスト)に着地し、ここの外部キー経由ではない
  • design_generation_result DocumentDB ドキュメントと 1:1。そのドキュメントの _id はこの id と等しい

インデックス

  • PRIMARY KEY (id)
  • PARTIAL UNIQUE INDEX wf2des_open_generation_uq (project_id, figma_file_key, wf_node_id, edge) WHERE status = '0' — プロジェクト単位かつエッジ単位で WF ノードごとに 1 件のみ稼働中(進行中)の生成を許可。重複トリガーは 409 と既存 id を返す。終端状態に到達しないまま残った実行は、そのワイヤーフレームの新規トリガーをブロックし続ける
  • INDEX wf2des_org_project_file_status_idx (organization_id, project_id, figma_file_key, status) — 遅延マテリアライズの探索/一覧クエリ
  • deleted_by/deleted_at の UNIQUE 扱いは標準的な論理削除の監査パターンに従う

Type Codes

status(wf2des_status)— 生成のみ。内部 wf2des ワーカーの実行は行を持たない。

値 意味
'0' processing
'1' completed
'2' failed
'3' rejected(デザイナーが parse を却下。failed ではない)
'4' cancelled(cancel エンドポイントが設定)

phase(wf2des_phase)— status '0' の内部で名前空間化され、status コードとは独立。行が終端 status に達すると NULL にクリアされる。

値 意味
'0' parse
'1' awaiting_confirm
'2' assemble

auto_confirm(wf2des_auto_confirm): '0' normal(parse-confirm ステップ)・'1' auto-confirm(parse と assemble を 1 回の呼び出しで実行)。

trigger_surface(wf2des_trigger_surface): '0' api・'1' plugin(認証された surface からバックエンド側で導出)。

feedback_status(wf2des_feedback_status): '0' fixed・'1' adopted(バックエンドの feedback エンドポイントが記録。記帳のみ)。

edge(wf2des_edge): '0' wf2des・'1' des2wf — 行を生成したエッジ。稼働中生成の部分ユニークキーの一部。

注記

  • バックエンド所有: wf2des ワーカーは PostgreSQL の認証情報を持たず、このテーブルを決して書き込まない。すべての PG への作用はバックエンド側で適用される — ai-status webhook ハンドラが完了時点の唯一の書き込み者であり(status/phase を反転し、result_url/error_message/flag_count を記録、1 トランザクション内で attempt ガード)、confirm/placement/feedback の各エンドポイントが対話的な遷移を扱う。
  • 行が先で SQS が後: バックエンドは生成メッセージを enqueue する前に行を INSERT する(status '0'、phase '0' parse)ため、クライアントには常にポーリング対象がある。
  • confirm エンドポイントは phase '2' assemble に進める前に phase '1' awaiting_confirm + attempt を CAS でマッチさせる。parse の却下はプラグインが書き込み(parse.rejected)、confirm エンドポイントが status '3' に反転する — これは webhook 経路ではない。
  • attempt は DocumentDB の design_generation_result ドキュメントと共有するフェンシングカウンター((_id, attempt) の CAS)。取って代わられた attempt の webhook は no-op となる。
  • flag_count と result_url は完了時点で終端の design_generation_result ドキュメントを写し取り、コンシューマがデータプレーン読み取りを回避できるようにする。
  • enum は数値文字列値('0'、'1'、…)として格納され、design/wireframe で用いられるプラットフォーム規約に一致する。