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
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 規約に一致する。