# コンテンツ生成の全体フロー ## 概要 本システムでは、FV(ファーストビュー)、コンテンツHTML、画像生成を分離することで、優れたユーザー体験を提供しています。 ## なぜ分離されているのか? ### 1. レスポンス時間の最適化 - **FV HTML生成**: AIを使った画像生成を含む(3-10秒) - **コンテンツHTML生成**: 即座に返却(< 1秒) - **コンテンツ画像生成**: バックグラウンドで処理(30-100秒) - ユーザーは待たずにレイアウトを確認可能 ### 2. Adobe Firefly APIの制約 - 1枚の画像生成に3-10秒必要 - API呼び出しには認証トークンの取得も必要 - 同期処理ではHTTPタイムアウトのリスク ### 3. ユーザー体験の向上 - プログレッシブな表示により、進捗が視覚的に分かる - エラーが発生しても部分的な成功を保証 - キャンセルや再試行が容易 ## 処理フローの統合図 ```mermaid graph TB subgraph "フェーズ1: FV生成" A1[クライアント] -->|POST /html-preview/generate-fv-html| B1[FV HTML生成API] B1 --> C1[FVGenerationUseCase] C1 --> D1[SimplePipeline] D1 --> E1[AI画像生成] E1 --> F1[FV HTML + 画像URL] F1 -->|3-10秒| A1 end subgraph "フェーズ2: コンテンツHTML生成" A[クライアント] -->|POST /html-preview/generate-contents-html| B[HTML生成API] B --> C[generateContentsHtmlWithImages] C --> D[プレースホルダー付きHTML] D -->|即座に返却| A end subgraph "フェーズ3: コンテンツ画像生成" A -->|POST /start-contents-image-generation| E[画像生成開始API] E --> F[画像要素抽出] F --> G[AIプロンプト生成] G --> H[Adobe Firefly並列処理] H --> I[画像URL生成] A -->|GET /image-generation-status/{batchId}| J[ステータス確認] J --> K{新しい画像?} K -->|Yes| L[JavaScript更新] K -->|No| J end style A fill:#f9f,stroke:#333,stroke-width:4px style A1 fill:#f9f,stroke:#333,stroke-width:4px style F1 fill:#9f9,stroke:#333,stroke-width:2px style D fill:#9f9,stroke:#333,stroke-width:2px style I fill:#9f9,stroke:#333,stroke-width:2px ``` ## 実装の詳細 ### FV HTML生成(フェーズ1) 1. `/html-preview/generate-fv-html` APIを呼び出し 2. `FVGenerationUseCase`でSimplePipelineを実行 3. AIを使用してFV画像を生成 4. 生成された画像と一緒にHTMLを返却 ### コンテンツHTML生成(フェーズ2) 1. `/html-preview/generate-contents-html` APIを呼び出し 2. ダミーモードの場合は事前生成HTMLを使用 3. 通常モードでは`HTMLGenerator`でテンプレートベースのHTML生成 4. 各画像位置にプレースホルダーを配置 5. 画像更新用のJavaScriptを含む完全なHTMLを返却 ### コンテンツ画像生成(フェーズ3) 1. `/start-contents-image-generation` APIで非同期処理を開始 2. Adobe Firefly認証情報がない場合はモックレスポンス 3. `ContentImagesGenerator`で画像要素を抽出 4. `ImagePromptGenerator`でAI(Claude/OpenAI)を使用してプロンプト生成 5. `FireflyClient`で並列に画像を生成 6. クライアントは`/image-generation-status/{batchId}`でステータスを確認 ## 利点と制約 ### 利点 - ✅ 即座のフィードバック - ✅ スケーラブルな並列処理 - ✅ 部分的な失敗への耐性 - ✅ プログレッシブな表示 ### 制約 - ⚠️ 追加のAPIコールが必要 - ⚠️ クライアント側のポーリング処理 - ⚠️ 状態管理の複雑性 ## 環境変数と設定 ### 必須環境変数 ```bash # Adobe Firefly認証情報(画像生成に必須) D_FIREFLY_CLIENT_ID=your_client_id D_FIREFLY_SECRET=your_client_secret # AI Provider設定 OPENAI_API_KEY=your_openai_key ANTHROPIC_API_KEY=your_anthropic_key ``` ### ダミーモード 開発時にはダミーモードを使用することで高速テストが可能: ```http POST /html-preview/generate-contents-html?dummyMode=true ``` ## 関連ドキュメント - [HTML生成シーケンス図](./html-generation-sequence.md) - [画像生成シーケンス図](./image-generation-sequence.md) - [APIリファレンス](../../image-generation-api.md)