import apiClient from "../client" export interface GenerateCoverTitleConfig { text?: string font?: string font_size?: number font_color?: string position?: string bold?: boolean stroke?: boolean shadow?: boolean } export interface GenerateCoverRequest { /** * 封面源视频标识(二选一): * - generated_video_id:确认生成任务产出的最终视频 ID * - video_url:最终视频 URL(兜底) * 后端根据此标识定位最终成片文件并抽帧,MediaKit 选帧逻辑不变 */ generated_video_id?: string video_url?: string cover_type?: "ai_frame" | "manual" | "upload" | "ai_regenerate" frame_time?: number /** 标题样式,用于在封面上叠加标题文字 */ title_config?: GenerateCoverTitleConfig } export interface GenerateCoverResponse { plan_id: string cover: { scheme?: string asset_id?: string frame_time?: number image_url?: string thumbnail_url?: string [key: string]: unknown } } /** AI 生成封面 — 从最终成片中抽帧(MediaKit 选帧) */ export async function generateCover( templateId: string, data: GenerateCoverRequest, ): Promise { const response = await apiClient.post("/generation/generate-cover", data, { timeout: 300000, params: { template_id: templateId }, }) return response.data }