FE_Dev / server /services /html-preview /fv /image-generator.interface.ts
GitHub Actions
Deploy from GitHub Actions [dev] - 2025-10-31 07:28:50
68f7925
import type { ThemeByMomentStrategy } from '@/schema/gradio-proxy/theme-by-moment';
export interface ImageEditOptions {
image: Buffer;
mask?: Buffer; // Geminiはマスクフリー編集をサポート、OpenAIのみ必要
prompt: string;
size?: string;
forceFallbackMode?: boolean; // GPT-5文字起こし分析ベースフォールバックを強制するか
// エラーログ用のメタ情報
referenceUrl?: string; // 自社WebサイトURL
tabName?: string;
userEmail?: string; // ユーザーメールアドレス
// SWOT分析データを追加(完全なスキーマ対応)
swotData?: {
業界?: string;
商材?: string;
内部環境?: string;
外部環境?: string;
業界トレンド?: string[];
ニーズ?: Array<{
市場ニーズ: string;
ユーザのモーメント: string;
}>;
王道?: {
焦点: string;
訴求: string;
};
多道?: {
焦点: string;
訴求: string;
};
強み?: {
訴求?: string[];
一番の強み?: {
訴求: string;
言い換え: string;
強み?: string;
弱み?: string;
ユーザ感情: string;
選定理由: string;
};
一番の弱み?: {
訴求: string;
言い換え: string;
強み?: string;
弱み?: string;
ユーザ感情: string;
選定理由: string;
};
顧客: string;
};
弱み?: {
訴求?: string[];
一番の強み?: {
訴求: string;
言い換え: string;
強み?: string;
弱み?: string;
ユーザ感情: string;
選定理由: string;
};
一番の弱み?: {
訴求: string;
言い換え: string;
強み?: string;
弱み?: string;
ユーザ感情: string;
選定理由: string;
};
顧客: string;
};
共通?: {
訴求: string[];
顧客: string;
};
機会の生成元?: Array<{
機会?: string;
脅威?: string;
生成元テーマ: string[];
}>;
機会?: string[];
脅威の生成元?: Array<{
機会?: string;
脅威?: string;
生成元テーマ: string[];
}>;
脅威?: string[];
積極化戦略?: {
テーマ: string;
戦略の内容: string;
戦略の根拠?: string;
関連する内部環境?: string;
関連する外部環境?: string;
想定競合URL?: string[];
};
差別化戦略?: {
テーマ: string;
戦略の内容: string;
戦略の根拠?: string;
関連する内部環境?: string;
関連する外部環境?: string;
想定競合URL?: string[];
};
改善戦略?: {
テーマ: string;
戦略の内容: string;
戦略の根拠?: string;
関連する内部環境?: string;
関連する外部環境?: string;
想定競合URL?: string[];
};
防衛戦略?: {
テーマ: string;
戦略の内容: string;
戦略の根拠?: string;
関連する内部環境?: string;
関連する外部環境?: string;
想定競合URL?: string[];
};
概要?: string;
};
// proposalTabDataSchemaのintentとfvDataSchemaを追加
intent?: {
FV_intent?: string;
CN_intent?: string;
FV_suggest?: string;
CN_suggest?: string;
fv_creation_intent?: string;
cn_creation_intent?: Record<string, string>;
prediction?: number;
strategyXMoment?: ThemeByMomentStrategy | unknown[];
strategy: string;
};
fv?: {
strategy: string;
need: string;
data: {
fv: {
コピー: {
メインコピー: string;
サブコピー1: string;
サブコピー2: string;
サブコピー3: string;
情報源: {
他社: string;
自社: string;
};
};
CTA: {
ボタンテキスト: string;
マイクロコピー: string;
情報源: {
他社: string;
自社: string;
};
};
ビジュアル: {
内容: string;
作成指示: string;
情報源: {
他社: string;
自社: string;
};
};
権威付け: {
内容: string;
作成指示: string;
情報源: {
他社: string;
自社: string;
};
};
originalCategories: string[];
};
};
fvCreationIntent?: string;
};
}
export interface ImageEditResult {
buffer: Buffer;
url?: string; // URL形式での画像パス(オプション)
metadata?: {
model?: string;
processingTime?: number;
};
prompt?: string;
}
export interface IImageGenerator {
editImage(options: ImageEditOptions): Promise<ImageEditResult>;
getName(): string;
}