インフラ構成
Guinness は AWS 上に構築されており、管理者側・ユーザー側・AI ワーカーの 3 つの領域で構成されます。担当チームは 4D・NDVN・Plabs に分かれています。
全体構成図
graph TB
Admin[サービス管理者]
User[ユーザー]
subgraph "4D — 管理者側"
AdminFrontend["管理者フロントエンド\nAmplify / Next.js"]
AdminAPI["API Gateway\n管理者エンドポイント"]
AdminLambda["Lambda\napi-admin (Hono + Bun)"]
AdminCognito["Cognito\n管理者プール"]
AdminRDS["RDS PostgreSQL\n管理者 DB"]
end
subgraph "4D — ユーザー側"
UserFrontend["ユーザーフロントエンド\nAmplify / Next.js"]
UserAPI["API Gateway\nユーザーエンドポイント"]
UserLambda["Lambda\napi-user (Hono + Bun)"]
UserCognito["Cognito\nアプリプール"]
UserRDS["RDS PostgreSQL\nユーザー DB"]
UserSQS["SQS\nジョブキュー"]
S3["Amazon S3\nアセットストレージ"]
end
Plugin[Figma プラグイン]
subgraph "Plabs — AI ワーカー (guinness-ai-v2)"
DesignImport["Lambda\ndesign-import"]
CodeImport["Lambda\ncode-import"]
Des2Code["Lambda\ndes2code"]
WF2Des["Lambda\nwf2des (4 つの実行系)"]
WF2DesGenSQS["SQS\nwf2des generation"]
WF2DesEventsSQS["SQS\nwf2des-events (AI 所有)"]
WF2DesEB["EventBridge\nコンポーネント再同期"]
InternalAPI["internal-api\nwf2des-api (DocDB + S3)"]
DocDB["DocumentDB\ndesign / code\n(埋め込みベクトル)\n+ 6 つの wf2des コレクション:\nwireframe / design_rule / design_component /\nproject_figma_file / design_generation_result /\ndesign_resolution"]
end
subgraph "外部サービス"
OpenAI["OpenAI API"]
FigmaREST["Figma REST\n(サービスアカウント PAT)"]
end
Admin --> AdminFrontend
AdminFrontend --> AdminAPI
AdminAPI --> AdminLambda
AdminLambda --> AdminCognito
AdminLambda --> AdminRDS
User --> UserFrontend
UserFrontend --> UserAPI
UserAPI --> UserLambda
UserLambda --> UserCognito
UserLambda --> UserRDS
UserLambda --> UserSQS
UserLambda --> S3
UserSQS --> DesignImport
UserSQS --> CodeImport
UserSQS --> Des2Code
DesignImport -->|design upsert| DocDB
CodeImport -->|code upsert| DocDB
Des2Code -->|design/code read| DocDB
DesignImport --> OpenAI
CodeImport --> OpenAI
DesignImport --> S3
CodeImport --> S3
Des2Code --> S3
DesignImport -. "Webhook (プライベート VPC)" .-> UserLambda
CodeImport -. "Webhook (プライベート VPC)" .-> UserLambda
Des2Code -. "Webhook (プライベート VPC)" .-> UserLambda
UserLambda -->|SendMessage generation parse/assemble| WF2DesGenSQS
UserLambda -->|SendMessage wf2des-events send-only| WF2DesEventsSQS
WF2DesGenSQS --> WF2Des
WF2DesEventsSQS --> WF2Des
WF2DesEB -->|invoke resync| WF2Des
WF2Des -->|read/write 6 collections| DocDB
WF2Des --> S3
WF2Des --> FigmaREST
WF2Des -. "ai-status webhook (generation) / component manifest (プライベート VPC)" .-> UserLambda
Plugin --> InternalAPI
InternalAPI --> DocDB
InternalAPI --> S3
管理者側インフラ
4D が担当する管理者向け領域。4D スタッフが組織・ユーザー・管理者アカウントを管理する。
| サブシステム | サービス | 役割 |
|---|---|---|
| 管理者フロントエンド | Amplify / Next.js | 管理者操作 UI |
| API Gateway | API Gateway | 管理者エンドポイントのルーティング |
| バックエンド | Lambda (Hono + Bun) | api-admin — ビジネスロジック |
| 認証 | Cognito 管理者プール | 4D スタッフ向け認証・認可 |
| データベース | RDS PostgreSQL | 管理者アカウント、組織、セッション |
管理者認証フロー
sequenceDiagram
participant Admin as サービス管理者
participant FE as 管理者フロントエンド
participant API as API Gateway
participant Lambda as Lambda (api-admin)
participant Cognito as Cognito(管理者プール)
participant RDS as RDS PostgreSQL
Admin->>FE: ログイン
FE->>API: POST /v1/auth/login
API->>Lambda: リクエスト転送
Lambda->>Cognito: initiateAuth()
Cognito-->>Lambda: JWT アクセストークン
Lambda->>RDS: セッション作成
Lambda-->>FE: 200 { token, admin }
Admin->>FE: 管理操作
FE->>API: 管理 API 呼び出し
API->>Lambda: リクエスト処理
Lambda->>RDS: データ操作
RDS-->>Lambda: 結果
Lambda-->>FE: レスポンス
セッションライフサイクル
stateDiagram-v2
[*] --> Created: 管理者ログイン
Created --> Active: セッションを DB に保存
Active --> Expired: expires_at 超過
Active --> Revoked: 管理者ログアウト
Active --> Revoked: パスワードリセット
Active --> Revoked: グローバルサインアウト
Expired --> CleanedUp: スケジュール済みクリーンアップ
Revoked --> CleanedUp: スケジュール済みクリーンアップ
CleanedUp --> [*]: ソフト削除(deleted_at をセット)
セッションは期限切れ後も SESSION_RETENTION_DAYS(デフォルト: 90 日)の間保持され、その後ソフト削除される。
主要環境変数(api-admin)
| 変数 | 必須 | 説明 |
|---|---|---|
ADMIN_COGNITO_USER_POOL_ID |
Yes | AWS Cognito User Pool ID |
ADMIN_COGNITO_CLIENT_ID |
Yes | AWS Cognito App Client ID |
ADMIN_COGNITO_REGION |
No | AWS リージョン(デフォルト: ap-northeast-1) |
DATABASE_NAME |
Yes | PostgreSQL データベース名 |
DATABASE_USER |
Yes | PostgreSQL ユーザー |
DATABASE_PASSWORD |
Yes | PostgreSQL パスワード |
DATABASE_HOST |
No | PostgreSQL ホスト(デフォルト: localhost) |
DATABASE_PORT |
No | PostgreSQL ポート(デフォルト: 5432) |
SESSION_CLEANUP_API_KEY |
Yes | セッションクリーンアップ API キー |
SESSION_RETENTION_DAYS |
No | 期限切れセッションの保持日数(デフォルト: 90) |
ALLOWED_ORIGINS |
No | カンマ区切り CORS オリジン |
PORT |
No | サーバーポート(デフォルト: 8081) |
ユーザー側インフラ
4D が担当するエンドユーザー向け領域。design import、code import、Des2Code などの AI 処理は SQS 経由で非同期実行される。
| サブシステム | サービス | 役割 |
|---|---|---|
| ユーザーフロントエンド | Amplify / Next.js | エンドユーザー操作 UI |
| API Gateway | API Gateway | ユーザーエンドポイントのルーティング |
| バックエンド | Lambda (Hono + Bun) | api-user — ビジネスロジック |
| 認証 | Cognito アプリプール | エンドユーザー向け認証・認可 |
| データベース | RDS PostgreSQL | ワークフロー成果物・ユーザー ID |
| ジョブキュー | SQS | AI ワーカーへの非同期ジョブ配信 |
| ストレージ | Amazon S3 | アセットファイル(スクリーンショット等) |
AI インフラ(guinness-ai-v2)
Plabs が担当する AI 変換ワーカー領域。SQS キューでトリガーされ、処理完了後に Webhook でバックエンドへ通知する。
| ワーカー | キュー | 役割 | 実行時間 |
|---|---|---|---|
| design-import | design-import |
Figma デザインを DocumentDB に取り込み・埋め込みベクトル生成 | 約 2〜5 分 |
| code-import | code-import |
コードを DocumentDB に取り込み・埋め込みベクトル生成 | 約 1〜3 分 |
| des2code | des2code |
design embedding を code entries と照合し、S3 result artifact を書き込み、backend webhook で結果を通知 | 約 1〜5 分 |
| page-import(計画中) | page-import |
キャプチャ済み application page 1 件を検証・正規化 | TBD |
| code2wf(計画中) | code2wf |
完了済みPage Import 1件を既存 DesignSpecModel を含むWF2Des-shaped result artifactへ変換 |
TBD |
| wf2des | wf2des generation + wf2des-events + EventBridge |
Figma ワイヤーフレームをダイレクトアセンブリでネイティブな Figma デザインに変換する(4 つの実行系: generation parse/assemble、wf_parse、rule_process、component_sweep。埋め込みなし) |
パースプレビュー 約 60 秒未満、confirm→spec 約 2 分未満 |
design-import と code-import は PydanticAI をエージェントオーケストレーションに使用し、OpenAI API でモデル推論・埋め込み生成を行う。des2code は Des2Code-only で、既存 embedding を消費し、timestamp 付き S3 result artifact を書き込み、OpenAI 呼び出しも source code 生成も行わない。wf2des も限定的な LLM ステップ(ロール/意図のパース、アセンブリ時のセクション選択、asset-process のビジョンラベリング)に PydanticAI を使用するが、リトリーバル・埋め込み・ベクトル検索は一切行わない — プロジェクト自身のコンポーネントレジストリとルールセットからダイレクトにアセンブルする。
計画中の Page Import capture は信頼された local/CI CLI で実行し、Lambda は uploaded evidence の検証のみを行います。Code2WF は完了済み import を使用し、Figma plugin は wireframe を即時または再オープン時に materialize します。
AI 処理フロー(des2code)
sequenceDiagram
participant User as ユーザー
participant API as API Gateway
participant Lambda as Lambda (api-user)
participant PG as RDS PostgreSQL
participant SQS as SQS
participant Worker as des2code Lambda
participant DocDB as DocumentDB
participant S3 as Amazon S3
User->>API: Des2Codeリクエスト
API->>Lambda: リクエスト処理
Lambda->>PG: INSERT (status: pending)
Lambda->>SQS: ジョブをエンキュー
Lambda-->>User: 202 Accepted
SQS->>Worker: メッセージ消費
Worker->>DocDB: デザイン埋め込みを取得
Worker->>DocDB: コードコレクションに対してベクトル検索
Worker->>S3: result artifact を PutObject
Worker-)Lambda: POST /v1/webhooks/ai-status (success + matched codes + artifact ref)
Lambda->>PG: 最新 Des2Code result/status/artifact ref を UPDATE
User->>API: ステータス取得
API-->>User: success + matched codes
AI 処理フロー(wf2des generation)
generation のハッピーパス。バックエンドは まず wf2des 行を書き込み(status '0'、phase parse)、エンキュー前にワイヤーフレームのスナップショットを取得する。完了は generation 専用の ai-status webhook を通じて返り、バックエンドがその行に反映する。
sequenceDiagram
participant Designer as Designer
participant Plugin as Figma Plugin
participant WFAPI as internal-api (wf2des-api)
participant Lambda as Lambda (api-user)
participant PG as RDS PostgreSQL
participant GenSQS as SQS (wf2des generation)
participant Worker as wf2des Lambda
participant DocDB as DocumentDB
participant S3 as Amazon S3
Lambda->>PG: INSERT wf2des row (status '0', phase parse)
Lambda->>S3: Capture WF snapshot
Lambda->>GenSQS: Enqueue parse job
GenSQS->>Worker: Consume parse message
Worker->>DocDB: Deterministic extract + LLM roles/intent → wireframe cache + result doc
Worker->>S3: PutObject parse.json
Worker-)Lambda: POST /v1/webhooks/ai-status (parse_done)
Lambda->>PG: Set phase awaiting_confirm
Plugin->>WFAPI: Preview parse (session token)
WFAPI->>DocDB: Read parse artifacts
Designer->>Plugin: Confirm
Plugin->>Lambda: Confirm endpoint (CAS awaiting_confirm + attempt)
Lambda->>GenSQS: Enqueue assemble job
GenSQS->>Worker: Consume assemble message
Worker->>DocDB: Rehydrate pins → candidate filter → LLM section selection → validator → computed confidence → result doc
Worker->>S3: PutObject result artifact + manifest
Worker-)Lambda: POST /v1/webhooks/ai-status (succeeded + manifest key)
Lambda->>PG: Flip row to '1' completed + result refs + flag_count (one PG txn)
Plugin->>WFAPI: Read spec → materialize native Figma
3 つの内部実行(wf_parse、rule_process、component_sweep)は wf2des-events intake queue と EventBridge スケジュールによって駆動され、webhook を使わない — 各実行の出力ドキュメントそのものが完了の記録となる。component_sweep だけはバックエンド側 PG に影響する例外で、ai-status webhook の代わりに、発見したコンポーネントの sweep manifest を発行し、バックエンドがそれをプラットフォーム design(type=component)レジストリの upsert として適用する。
Webhook 契約
すべてのワーカーは shared service X-API-Key を付けて、プライベート VPC 上の POST /v1/webhooks/ai-status にステータスを報告する。
| ワーカー | 更新される PG テーブル | DocumentDB 書き込み |
|---|---|---|
design-import |
design |
あり(design にアップサート) |
code-import |
code |
あり(code にアップサート) |
des2code |
backend-owned latest Des2Code result/status/artifact reference | なし |
page-import(計画中) |
page_import |
なし |
code2wf(計画中) |
code2wf |
なし |
wf2des |
wf2des(generation、ai-status 経由)+ プラットフォーム design type=component upsert(component_sweep の manifest から) |
あり(6 コレクション) |
| ステータス値 | PG 値 | 意味 |
|---|---|---|
pending |
0 | エンキュー済み |
success |
1 | 完了 |
failed |
2 | 失敗(SQS リトライの可能性あり) |
wf2des は generation 行のために、このプラットフォーム 3 状態のステータスを 5 状態に 拡張 する — '3' rejected(デザイナーがパースを却下した場合。失敗ではない)と '4' cancelled を追加 — さらに status '0' の中に名前空間化された phase フィールド('0' parse / '1' awaiting_confirm / '2' assemble)を持つ。ai-status webhook を発行するのは generation の実行系のみで、3 つの内部実行は webhook を使わず、内部実行は wf2des 行を持たない。
データベース分離
AI ワーカーとバックエンドはデータベースを共有せず、Webhook のみで通信する。
| サービス | 所有 DB | 通信方向 |
|---|---|---|
| guinness-backend (4D) | RDS PostgreSQL | Webhook を受信 |
| guinness-ai-v2 (Plabs) | DocumentDB | Webhook を送信 |
wf2des は 6 つの DocumentDB コレクション(wireframe、design_rule、design_component、project_figma_file、design_generation_result、design_resolution)と、wf2des-api データプレーン を所有する。これは internal-api アプリ内のルートグループで、DocumentDB + S3 のみ を読み書きし、Figma プラグインがプレビュー・配置・ファイル登録に使用する。他のワーカーと同様に、wf2des ワーカーも PostgreSQL には一切書き込まない — generation の PG 影響はすべて ai-status webhook ハンドラ(完了時に PG へ書き込む唯一の主体)がバックエンド側で適用する。
計画中の Page Import と Code2WF worker は S3 artifact を使用し、DocumentDB または PostgreSQL には接続しません。対応する PostgreSQL row は backend が所有します。
認証情報の分離
| サービス | 持つ認証情報 | 持たない認証情報 |
|---|---|---|
| guinness-backend | PostgreSQL 認証情報、SQS キュー URL、Webhook エンドポイント(受信) | DocumentDB アクセス権限 |
| guinness-ai-v2 | DocumentDB 接続文字列、S3 artifact 書き込み権限、import worker 用 OPENAI_API_KEY、Webhook URL(送信)。wf2des 用にはさらに: wf2design 専用 の secret store に置く サービスアカウント Figma PAT(プラットフォームの figma_token テーブルや ENCRYPTION_KEY は決して使わない)、wf2des generation + wf2des-events queue の consume 権限、AI 所有の EventBridge スケジュール、wf2des-api が発行するプラグイン session token |
PostgreSQL アクセス権限 |
V2 目標配線(genai-infrastructure)
genai-infrastructure/aws/envs/dev/guinness-backend を目標配線の参照構成とする。各環境は同じ logical resource と permission を公開する。
| リソース | Terraform logical name | 要件 |
|---|---|---|
| design-import queue + DLQ | guinness_ai_v2_design_import_queue, guinness_ai_v2_design_import_dlq |
backend が design-import payload を送信する。Lambda event source mapping は ReportBatchItemFailures を使う |
| code-import queue + DLQ | guinness_ai_v2_code_import_queue, guinness_ai_v2_code_import_dlq |
backend が code-import payload を送信する。Lambda event source mapping は ReportBatchItemFailures を使う |
| des2code queue + DLQ | guinness_ai_v2_des2code_queue, guinness_ai_v2_des2code_dlq |
backend REST API と MCP v2 が des2code payload を送信する。Lambda event source mapping は ReportBatchItemFailures を使う |
| page-import queue + DLQ(計画中) | guinness_ai_v2_page_import_queue, guinness_ai_v2_page_import_dlq |
backend が Page Import validation job を送信する。Lambda event source mapping は ReportBatchItemFailures を使う |
| code2wf queue + DLQ(計画中) | guinness_ai_v2_code2wf_queue, guinness_ai_v2_code2wf_dlq |
backend が完了済み Page Import conversion job を送信する。Lambda event source mapping は ReportBatchItemFailures を使う |
| Page Import / Code2WF S3 prefix(計画中) | 既存の guinness_backend_ai_v2 bucket |
tenant/project scoped prefix に immutable import/generation artifact を保存する |
| Page Import orphan-upload lifecycle(計画中) | 既存 guinness_backend_ai_v2 bucketのlifecycle rule。Terraform labelはTBD |
設定済みincomplete-upload window後に page_import_state=orphan tagのobjectだけをexpireする。row作成後に page_import_state=retained へretagしたobjectは対象外 |
| backend AI bucket lifecycle | guinness_backend_ai_v2_des2code_results |
des2code_result=true tag 付き object を retention window 後に expire する |
| wf2des generation queue + DLQ | guinness_ai_v2_wf2des_generation_queue, guinness_ai_v2_wf2des_generation_dlq |
backend 所有。backend が parse / assemble payload を送信する。Lambda event source mapping は ReportBatchItemFailures を使う |
| wf2des-events queue + DLQ | guinness_ai_v2_wf2des_events_queue, guinness_ai_v2_wf2des_events_dlq |
AI 所有 の intake queue(rule / asset / plugin event)。backend は SendMessage のみ を持つ。Lambda event source mapping は ReportBatchItemFailures を使う |
| wf2des component-resync schedule | guinness_ai_v2_wf2des_component_sweep_schedule |
AI 所有 の EventBridge スケジュール。component_sweep の再同期 sweep を起動する。cron / rate はデプロイごと |
| backend AI bucket wf2des prefix + lifecycle | guinness_backend_ai_v2_wf2des_results |
{org}/{proj}/wf2des/ 配下の result + manifest artifact。object は retention window 後に expire する |
| wf2des PostgreSQL table | wf2des (backend RDS) |
backend 所有 の generation 実行行(status / phase / attempt + result refs + flag_count)。AI 側アクセスなし |
Backend runtime 変数:
| 変数 | 使用元 | 要件 |
|---|---|---|
DATABASE_* / RDS Proxy variables |
backend app, MCP v2 | user/backend state と MCP API-key auth は PostgreSQL のみ |
SQS_DESIGN_IMPORT_QUEUE_URL, SQS_DESIGN_IMPORT_QUEUE_ARN |
backend design API | design-import へ SendMessage |
SQS_CODE_IMPORT_QUEUE_URL, SQS_CODE_IMPORT_QUEUE_ARN |
backend code API | code-import へ SendMessage |
SQS_DES2CODE_QUEUE_URL, SQS_DES2CODE_QUEUE_ARN |
backend Des2Code API, MCP v2 | des2code へ SendMessage |
SQS_PAGE_IMPORT_QUEUE_URL, SQS_PAGE_IMPORT_QUEUE_ARN |
backend Page Import API(計画中) | page-import へ SendMessage |
SQS_CODE2WF_QUEUE_URL, SQS_CODE2WF_QUEUE_ARN |
backend Code2WF API(計画中) | code2wf へ SendMessage |
SQS_WF2DES_GENERATION_QUEUE_URL, SQS_WF2DES_GENERATION_QUEUE_ARN |
backend wf2des API(create / confirm) | backend 所有の wf2des generation queue(parse / assemble)へ SendMessage |
SQS_WF2DES_EVENTS_QUEUE_URL, SQS_WF2DES_EVENTS_QUEUE_ARN |
backend wf2des rule / asset / frame-registration path | AI 所有の wf2des-events intake queue へ SendMessage のみ(backend が AI 所有インフラに持つ唯一の送信権限) |
WEBHOOK_API_KEY |
backend webhook | X-API-Key で期待する shared service key(wf2des の generation ai-status flip でも使用) |
AI_V2_INTERNAL_URL, AI_SERVICE_TOKEN |
MCP v2 or backend proxy | guinness-ai-v2 design/code internal API を service-token で読む。wf2des-api read route(X-AI-Service-Token)もカバーする |
CLOUDFRONT_SECRET_HEADER |
MCP v2 | local 以外で X-MCP-Token と比較する secret value |
AI worker runtime 変数:
| 変数 | 使用元 | 要件 |
|---|---|---|
DOCUMENTDB_CONNECTION_STRING, DOCUMENTDB_NAME |
all AI workers | design / code 用 DocumentDB access。backend には渡さない |
DESIGN_TABLE_NAME, CODE_TABLE_NAME |
import workers, des2code | collection 名。target は design と code |
WEBHOOK_BASE_URL, WEBHOOK_API_KEY |
all AI workers | backend POST /v1/webhooks/ai-status に completion/failure を POST |
RESULT_BUCKET, DES2CODE_RESULT_TTL_DAYS |
des2code | timestamp 付き result/failed artifact。object に des2code_result=true を tag する |
OPENAI_API_KEY, DESC_MODEL, EMBEDDING_MODEL, EMBEDDING_DIMENSIONS |
design-import, code-import | import analysis と embedding generation |
6 つの wf2des コレクションの各コレクション名(+ DOCUMENTDB_NAME=guinness_v2) |
wf2des | env で上書き可能なコレクション名: wireframe, design_rule, design_component, project_figma_file, design_generation_result, design_resolution |
wf2des generation queue + wf2des-events queue の URL / ARN |
wf2des | worker が consume する event source mapping(backend 所有の generation + AI 所有の intake) |
EventBridge スケジュール(component_sweep 再同期) |
wf2des | worker を直接起動する AI 所有のスケジュール。cron / rate はデプロイごと |
WEBHOOK_BASE_URL, WEBHOOK_API_KEY |
wf2des(generation のみ) | 完了時に POST /v1/webhooks/ai-status へ POST(X-API-Key) |
RESULT_BUCKET + {org}/{proj}/wf2des/ prefix |
wf2des | クライアント向けの result + manifest artifact。内部の parse / spec / feedback artifact も同じ prefix 配下 |
| Figma サービスアカウント PAT secret ARN | wf2des(component_sweep + snapshot / memo fallback) |
wf2design 専用 の secret store。プラットフォームの figma_token テーブルや ENCRYPTION_KEY は決して使わない。デプロイごと |
モデルティア(fast / strong / vision)+ PROMPT_VERSION |
wf2des | ロール/意図のパース(fast)、アセンブリ選択(strong)、asset のビジョンラベリング。実行ごとに固定。具体的な id はデプロイごと |
DEFAULT_ORGANIZATION_ID |
wf2des | シングルテナントのデフォルト 1。全ドキュメントに organization_id を付与 |
S3_BUCKET_NAME + Page Import schema/size limit |
page-import(計画中) | scoped capture artifact を読み、normalized artifact を書き込む |
RESULT_BUCKET |
code2wf(計画中) | 既存AI bucketへWF2Des-shaped result artifactを書き込む |
IAM 境界:
| プリンシパル | 許可が必要 | 要求してはいけないもの |
|---|---|---|
| backend app | 3 つの import/des2code v2 queue に加えて backend 所有の wf2des generation queue と(送信のみ)AI 所有の wf2des-events queue への sqs:SendMessage、必要な S3 asset read/write、PostgreSQL access |
DocumentDB access |
| MCP v2 | MCP auth 用 PostgreSQL read/update、des2code への sqs:SendMessage、internal AI/backend HTTP access |
deployed environment の DocumentDB access |
| design-import/code-import Lambdas | 各 SQS queue consume、S3 input asset read、DocumentDB write、backend webhook call | PostgreSQL access |
| des2code Lambda | des2code queue consume、DocumentDB design/code read、S3 artifact write/tag、backend webhook call | PostgreSQL access |
| backend app(計画中の追加) | page-import/code2wf queue への send と tenant/project scoped S3 prefix の read/write | DocumentDB access |
| page-import Lambda(計画中) | page-import queue consume、capture object read、normalized object write、backend webhook call | PostgreSQL、DocumentDB、browser execution |
| code2wf Lambda(計画中) | code2wf queue consume、完了済みPage Import object read、result object write、backend webhook call | PostgreSQL、DocumentDB、OpenAI API、Figma PAT/write access |
| wf2des Lambda | wf2des generation + wf2des-events queue consume、EventBridge invoke、6 つの DocumentDB コレクション read/write、S3 artifact + snapshot read/write、サービスアカウント PAT secret 経由の Figma REST、backend ai-status webhook call |
PostgreSQL access |
| wf2des-api (in internal-api) | DocumentDB + S3 read/write、プラグイン session token の発行/検証、X-AI-Service-Token の受け入れ |
PostgreSQL access, SQS access |
V1 → V2 ワーカー移行マッピング
| V1 ワーカー | V2 ワーカー | 主な変更点 |
|---|---|---|
design |
design-import |
デュアル埋め込み(visual + semantic)、MySQL 非アクセス |
| legacy code import predecessor | code-import |
legacy code data → code コレクション、デュアル埋め込み、CSS 対応 |
| legacy Des2Code/code-generation predecessor | des2code |
Des2Code worker。結果は S3 に書き込み、Webhook で通知し、backend PostgreSQL が latest result/artifact reference として永続化 |
wireframe |
(V1 継続) | wireframe → design のパスは、新規の wf2des ワーカー(下記参照)が担う。V1 ワーカーの 1:1 移植ではない |
| (新規 — V1 の前身なし) | wf2des |
新しいダイレクトアセンブリエンジン。プロジェクトの design rule のもとで Figma ワイヤーフレームをネイティブな Figma デザインに変換する(4 つの実行系。埋め込み / リトリーバルなし)。backend が wf2des 行 + エンドポイントを所有し、Figma プラグインが wf2des-api(internal-api 内)経由で read/write する |
| (新規 — V1 の前身なし) | page-import(計画中) |
1 ページの repository capture と deterministic validation/normalization |
| (新規 — V1 の前身なし) | code2wf(計画中) |
完了済みPage ImportからWF2Des-shaped result artifactを作成し、Figma pluginがその既存 DesignSpecModel をmaterializeする |
チーム担当領域
| 領域 | 担当 | 主要サービス |
|---|---|---|
| 管理者側フロントエンド・バックエンド・インフラ | 4D | AdminFrontend, api-admin, RDS PostgreSQL |
| ユーザー側フロントエンド・バックエンド・インフラ | 4D | UserFrontend, api-user, RDS PostgreSQL, SQS, S3 |
| AI 変換エンジン | Plabs | design-import, code-import, des2code, wf2des(+ その Figma プラグインと internal-api 内の wf2des-api), DocumentDB |