コンテンツにスキップ

Wireframe コレクション

概要

Figma のワイヤーフレームフレームからパースしたワイヤーフレーム構造を保持するコレクション。wf2des ワーカーが書き込む: wf_parse(プラグインのフレーム登録)と生成の parse フェーズがともにフレームを WFNode ツリーへ抽出する。生成の assemble フェーズとプラグインのプレビューがこれを読み取る。抽出は決定論的であり — LLM は各ノードの role と intent のみを割り当て、ツリー形状には決して関与しない — このコレクションは検索用埋め込みを持たない。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
Wireframe wireframe _id string ◯ 複合 id {project_id}_{figma_file_key}_{node_id}(プラットフォームの wireframe 行 id 形式)。figma_file_key/node_id は _id から導出され、別途格納しない
organization_id number テナント所有者
project_id number project:id プロジェクトスコープ
name string Figma フレームの完全な名前(日本語は PG の frame_name 100 文字上限を超える場合がある)
type number コンテンツ種別 — Type Codes を参照
based_on number 由来 — Based On Codes を参照
screen_id string ◯ 画面 id。wf_parse の文法ミスでは null となり、取込 issue がログ記録される
variation_label string ◯ 決定論的なフレーム名の分割(例: 会員登録TOP|案1 → 案1)
structure object パース済みの WFNode ツリー(再帰的): { node_id, role, bbox {x,y,w,h}, intent (string\|null), text?, children[] }。決定論的抽出であり、LLM は role/intent のみを割り当てる
memos object[] { memo_node_id, text, status } — status は open または resolved(取込済フレーム内にある場合は resolved。resolved の memo は現行の intent から除外される)
board_regions object[] 理解済みボード — 領域ごとに 1 エントリ: [{ node_id, name, figma_type, x, y, features, marker_hit, resolved_marker_hit, is_registered_frame, text_sample[], role, refers_to }]。ボードのレイアウトは固定ではない(ワイヤーフレームのみ / 注釈やメモを伴う)ため、領域に分割して 1 つずつ分類する。memos はここから導出される — intent はボード上のあらゆる文字列ではなく、デザイナーがその画面について注記として書いたものから取る
summaries object { element_type_histogram, node_count } — 決定論的に計算される
lineage object 全ドキュメント共通の lineage エンベロープ { source_url, source_hash, processor_version, index_schema_version, processed_at, job_id }。書き込みフェンスは (source_hash, processed_at) の last-write-wins。job_id = 生成元の wf_parse/generation-parse 実行

リレーション

  • project_id → project.id
  • DocumentDB 内ではリレーションは強制されない。論理リレーションであり、アプリケーションコードで検証する。

インデックス

  • PRIMARY KEY (_id)
  • ベクトルインデックスなし — このコレクションは検索用埋め込みを持たない。

Type Codes

値 意味
0 page
1 component

Based On Codes

値 意味
0 imported
1 design
2 wireframe

注記

  • wf2des ワーカーが書き込む: wf_parse(プラグインのフレーム登録)と生成の parse フェーズがともにこのドキュメントを生成する。wf_parse の出力そのものがその記録である(結果ドキュメントなし、webhook なし、PG への作用なし)。
  • 書き込みフェンスは (source_hash, processed_at) の last-write-wins であり — 新しい source_hash またはより新しい processed_at を持つ書き込みのみが着地する。generation-parse と wf_parse が同じ _id を書き込むのは意図された非衝突である。
  • 直接組み立て、検索なし: このコレクションは visual/semantics のベクトル埋め込みを持たない。生成の assemble フェーズは structure/memos を決定論的に読み取り、類似検索は一切行わない。
  • ある生成実行が使用したパース済みツリー全体は、不変の parse.json アーティファクト(design_generation_result.artifact_urls.parse から参照される)にもスナップショットされる。そのため、後にこのキャッシュドキュメントを再パースしても、ある実行が依拠した記録が上書きされることはない。
  • base_on ではなく based_on を使用する — カラム名はプラットフォームの design/code の based_on 規約に一致する。