コンテンツにスキップ

Des2WF Generation Result コレクション

概要

des2wf の生成出力コレクション — des2wf の実行 1 件につき 1 ドキュメントで、出力されたワイヤーフレームのスペック、それを採点したスコア、フラグ数、実行の lineage、そしてプラグインがレンダーの対を送った後の描画後レビューを保持する。des2wf ワーカーが parse → assemble という 1 回の呼び出しの最後に書き込む((_id, attempt) でフェンス)。des2wf-api はマテリアライズのためにこれを読み取り、描画後レビューのパスは同じドキュメントをその場で追記する。design_generation_result とは別コレクションである — 2 つのエッジが答える形状が異なり(ワイヤーフレームのスペック + スコア 対 デザインのスペック + 確信度)、1 つのコレクションに両方を入れるとすべての読み手が edge で分岐することになるため。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
Des2WF Generation Result des2wf_generation_result _id string ◯ wf2des:id 共有される wf2des の PG 行 id(実行の同一性 — 実行 1 件につき結果ドキュメント 1 つ、行と 1:1 で、job_id と同じ値)。この行 id は両エッジをまたいでグローバルに一意であり、それがプラグインの単一の (jobId → rootNodeId) 冪等インデックスを構成上安全に保っている。(_id, attempt) の CAS 書き込みフェンス
edge string des2wf タグ付きユニオンの判別子 — このコレクションでは常に des2wf。ディスパッチと読み手はこれでルーティングし、どの任意フィールドが埋まっているかでは決して判断しない。埋まっている任意フィールドだけが異なる 2 つのファミリーは安全に区別できない
organization_id number テナント所有者。すべての読み書きがこれでフィルタする
project_id number project:id テナントスコープ。すべての読み書きがこれでフィルタする
job_id string wf2des:id 生成元の実行 id — _id と同じ共有 wf2des 行 id。キーの外で読まれてもドキュメントが自己記述的であるようフィールドとしても持つ
attempt number 実行 attempt — 書き込みフェンス((_id, attempt) の CAS)がこれを比較して取って代わられた書き込みを拒否する。SQS の再配信で古い呼び出しが最後に完了しても、敗者のスペックを勝者の job id の下に公開することはない
figma_file_key string デザインフレームが置かれている Figma ファイル(Figma の値そのまま。英数字、アンダースコアなし)
source_node_id string DESIGN フレーム — 実行がワイヤーフレーム化するよう指示された入力ノード
spec object 自己完結の {spec_version, edge, source_name, source_file_key?, name?, root}。style_bindings/parse_confirmed はなく、元ジオメトリは opt-in。
spec.spec_version string 1.0 マテリアライザのワイヤー契約バージョン
spec.edge string des2wf 命名と materializer 動作のための edge リテラル
spec.source_name string empty string 元フレーム名
spec.source_file_key string ◯ 元 glyph/text を探す固定 Figma file。旧結果では任意
spec.name string ◯ null 明示キャンバス名。未指定は des2wf · source_name、元名が空なら spec version
spec.root object 既存の layout_frame/instance/compose/text/unmatched の 5 ケース。layout frame は placeholder=image、glyph_source、children を持ち得る。instance は kit identity・slot・DestylePolicy、text は文言と組版を持つ。任意の source_layout/text_geometry は下記参照。
score object ds@1.0 — 出力可能性の GATE × コンテンツ保存率、バージョン付き。この製品には人手による修正ループがなく品質は機械側のラチェットで収束させるため、モデルの自己申告ではなく成果物から計算される。PostgreSQL に到達するのは score + score_version のみであり、band はラチェットが読むここに留まる。形状: { score, score_version, gate, band, terms }
score.score number 採点対象の項の gate × 加重和、小数 4 桁に丸め
score.score_version string ds@1.0 スコアを計算した式のバージョン。項・重み・ゲートのいかなる変更でも上げる。バージョンをまたいだ比較は行わない — トレーサビリティのためのものである
score.gate number 0/1。unmatched ノードが 1 つでもあるとき、strings_invented/text_displaced/cross_over_text/boxes_coincident のいずれかが非ゼロのとき、そして absolute レイアウトに限りフラットを超える深さのときに 0 となる — auto レイアウトは意図的にネストするため、その深さをゲートすると指示どおりに動いた実行を 0 と採点してしまう。ゲートが 0 ならスコア全体が 0 になる: 穴の空いたワイヤーフレームは「部分的に良いワイヤーフレーム」ではない。strings_lost は意図的にゲートしない — コンテンツ保存率がすでにそれを採点している
score.band object {low, high, margin}。kit selection または graphic classification が llm_assisted を設定した場合 0.07、それ以外 0.0。mode だけでは決定性を意味しない。
score.terms object[] [] [{ name, value, weight }] — 退行が帰属可能になるよう、各項を自身の値とともに保持する。content_preservation は重み 1.0: デザインの文字列のうち出力に逐語で現れる割合であり、MULTISET として比較する(「次へ」と 3 回言う画面は出力でも 3 回言わねばならない)。integrity/flatness/ink_covered/boundary_fidelity は重み 0.0 で報告される — 可視かつ帰属可能でありながら、何点分の価値があるかの根拠が出るまで何も動かさない
flag_count number 0 フラグ付き + unmatched のノード数 — 「レビューが必要なセルがいくつあるか」。共有バックエンドのバリデータが単一の形状のままでいられるよう wf2des での意味を保つ。マニフェストの row_effects.wf2des を通じて wf2des 行に到達する
graphic_classification object {} 出現箇所ごとの分類監査。旧結果は空。人手 override 保存や完了後 review とは別
graphic_classification.prompt_version string 現在の分類 prompt:des2wf-graphics-visual-2
graphic_classification.model string 設定された分類モデル
graphic_classification.status string not-needed/fallback/partial/complete。complete は人手 override を含み得るため、全ノードの model 判定完了とは限らない
graphic_classification.source_render_sha256 string ◯ 元 PNG hash。根拠なしなら null
graphic_classification.candidate_count number グラフィック候補数
graphic_classification.decisions object[] [] node_id、適用 action、status、reason。任意の evidence_sha256、proposal、rendered_kind、rendered_reason、covered_by。内部形状は I/O 定義参照
graphic_classification.fallback_count number ◯ 候補なしの早期 return では省略
graphic_classification.simplified_count number ◯ 装飾を含む適用 simplify 数。可視 placeholder ノード数ではない。候補なしの早期 return では省略
render_review object ◯ 描画後レビューのブロック — スコアには行えないパスである。スコアは何かが描かれる前に構造的な代理指標の上で計算されるため、描画されたキャンバス上の重なり、切れた文字列、欠落した要素を見ることができない。デザインフレームの PNG と構築されたワイヤーフレームの PNG を並べた 1 回の vision 呼び出し。プラグインがレンダーの対を送るまでは存在しない。設計上ポストターミナルであり、フェーズを進めるのではなく完了済みの実行に追記する。形状: { status, finding_count, summary, findings, prompt_version, model, checked_at }
render_review.status string reviewed/skipped。vision モデルが拒否するようなレンダーはリトライすべき失敗ではなくレンダーについての事実であり、skipped として skipped_reason + NULL の finding_count とともに記録される — 一度も走らなかったパスから「所見なし」と読めてしまわないようにするため
render_review.finding_count number ◯ 報告された所見の数。skipped では NULL
render_review.summary string 全体判断の一文。skipped では空
render_review.findings object[] [] [{ kind, severity, location, description }]。kind: overlap/overflow/clipped_text/missing_element/extra_element/other。severity: high/medium/low。description は描画されたワイヤーフレームの何が誤っているかを一文で述べる
render_review.skipped_reason string ◯ パスが走らなかった理由。status: "skipped" のときのみ存在する
render_review.prompt_version string レビュープロンプトのバージョン
render_review.model string レビューを行ったモデル id
render_review.checked_at datetime レビューを実行した時刻
render_review_previous object ◯ 現在のものの前にこのドキュメントが持っていたレビューブロック — 再レビューは黙って置き換えるのではなく MERGE するため、ラチェットが実行をまたいで比較できる。2 回目のレビューが届くまでは存在しない。形状は render_review と同じ
lineage object 全ドキュメント共通の lineage ブロック(ソース S3 キー/ハッシュ、プロセッサバージョン、処理時刻)。job_id = 生成元の実行 id、すなわち共有 wf2des 行 id。形状: { source_url, source_hash, processor_version, index_schema_version, processed_at, job_id }
lineage.source_url string 生のデザインスナップショットの S3 キー — ノード単位の REST エンベロープ全体で、maps も保持される
lineage.source_hash string デザイン FRAME サブツリーの sha256。キャプチャ時に計算される(parse キャッシュキー)
lineage.processor_version string 生成元のプロセッサバージョン(例: des2wf@0.1)
lineage.index_schema_version string 1.1 このコレクションのドキュメントスキーマバージョン
lineage.processed_at datetime 終端書き込みタイムスタンプ
lineage.job_id string wf2des:id 生成元の実行 id

元のジオメトリ

spec の 5 ケースは変わりません。任意の source_layout は horizontal/vertical の FIXED/HUG/FILL、AUTO/ABSOLUTE の positioning、strokes_in_layout、hidden、軸ごとの min/max を持ちます。 text の任意 text_geometry は font_family、auto_resize、line_height、line_height_pct、letter_spacing、 leading_trim、vertical_align、paragraph_spacing、paragraph_indent を持ちます。 これらを持たない旧結果は従来の materializer 動作を維持します。

layout frame の glyph_source は元図形を指します。spec.source_file_key で範囲を限定し、 実際のインスタンスの override を保持します。placeholder=image は許可された簡略化であり、 全アイコンの一律置換ではありません。装飾は意図的に非描画にできます。 契約と監査フィールドは I/O 定義 を参照してください。

リレーション

  • _id = 共有される wf2des の PostgreSQL 行 id — 行と 1:1(バックエンドが先に行を作成し、ワーカーがドキュメントを書き込む)。同じ値が job_id と lineage.job_id にも現れる。
  • project_id → project.id。organization_id → テナント所有者。
  • {figma_file_key, source_node_id} は実行が読んだ DESIGN フレームを特定する。
  • 実行が出力したワイヤーフレームは、エッジスコープされた _id = {project_id}_{figma_file_key}_{node_id}~des2wf の wireframe ドキュメントである — wf_parse は同じフレームに対して接尾辞なしの id を使うため、2 つのエッジが互いを上書きすることはない。
  • spec.root の instance ノードはワイヤーフレームキットの VARIANT を指す: component_key/component_node_id は wireframe_component 由来である。このエッジの platform_design_id はレジストリキーではなく、そのアトムが代役となったデザインノードを保持する。
  • DocumentDB 内ではリレーションは強制されない。論理リレーションであり、アプリケーションコードで検証する。

インデックス

  • PRIMARY KEY (_id) — ユニーク。_id そのものが共有 wf2des 行 id(代理キーなし)。
  • 実行のコミットは (_id, attempt) の CAS — attempt ≤ コミット中の attempt に一致したときに upsert するため、再配信された古い attempt が新しいものを上書きすることはない(DB のユニークインデックスではなく、ワーカーの条件付き書き込みで強制される)。
  • review は画像/model 処理より前に既存結果の organization/project scope を検証します。merge は upsert せず、未知の結果は新規作成せず例外にします。
  • セカンダリインデックスは定義しない。読み取りはテナントフィルタ内での _id 指定である。

注記

  • ワーカーは終端成功より前に生成成果物、wireframe 出力、この結果、manifest を保存します。 PG の完了・score/version・flag は row_effects.wf2des から backend Webhook だけが反映します。
  • primitives と kit は両方とも文脈による画像分類を使えます。kit だけが variant 選択を追加し、 キット欠落はプリミティブへ戻します。不確かな図形は元形状を保持し、許可された不要画像は ink、 確認済み装飾は ornament になります。
  • API の既定は layout=absolute です。現在の plugin は layout=auto を明示送信し、 元階層、native item spacing、1 子 wrapper、sizing を保持します。
  • キャンバス名は spec.name がなければ des2wf · {source_name} です。 別ドキュメントの WireframeDoc.name は引き続き wf · {design frame name} を使います。
  • 生成時の任意の version 固定元 PNG と、plugin の完了後 review pair は別物です。 review は upload 前に job ID 一致、scoped write access、COMPLETED 行を必要とします。 pair は元 source/project に固定し、review 失敗で生成を取り消しません。
  • graphic_classification は提案と実際の描画 coverage を区別します。simplify の子が保持された親に 覆われる場合があるため、proposal だけでなく rendered_kind/covered_by も確認します。 人手 graphic_override_v1 はここではなく des2wf_verdict に保存します。
  • 結果は全文を読みます。汎用 bounded-document 経路で spec を切り詰めると、 ワイヤーフレームの一部だけを黙って構築する危険があります。
  • 構造/文言の score 1.0 はアイコン精度や視覚品質の合格ではありません。model stub と JSON のみの offline corpus では認識精度を証明できないため、実 provider で生成したキャンバスを確認します。