/** * 视频生成 API */ import apiClient from "./client"; import type { EditingMode } from "./editPlans"; export interface GenerationTaskItem { id: string; project_id: string; asset_library_id: string; strategy_id?: string | null; voice_library_id?: string | null; edit_plan_id?: string | null; editing_mode?: EditingMode; status: "pending" | "running" | "completed" | "failed" | "cancelled"; progress: number; result_count: number; error_message?: string | null; created_at?: string; updated_at?: string; } export interface GeneratedVideoItem { id: string; project_id: string; generation_task_id: string; name: string; file_url: string; file_size: number; duration: number; thumbnail_url?: string | null; width: number; height: number; fps: number; status?: string; review_status?: "pending_review" | "approved" | "rejected"; generation_params?: Record; editing_mode?: EditingMode; } export const createGenerationTask = async (data: { project_id: string; asset_library_id: string; strategy_id?: string; voice_library_id?: string; edit_plan_id?: string; editing_mode?: EditingMode; created_by_user_id?: string; }): Promise => { const response = await apiClient.post("/generation/tasks", data); return response.data; }; export const getGenerationTask = async (taskId: string): Promise => { const response = await apiClient.get(`/generation/tasks/${taskId}`); return response.data; }; export const getGenerationResults = async (taskId: string): Promise => { const response = await apiClient.get(`/generation/tasks/${taskId}/results`); return response.data.items; }; export const getGeneratedVideos = async (projectId: string): Promise => { const response = await apiClient.get("/generated-videos", { params: { project_id: projectId } }); return response.data.items; }; export const updateGeneratedVideoReviewStatus = async (videoId: string, reviewStatus: "pending_review" | "approved" | "rejected"): Promise => { const response = await apiClient.patch(`/generated-videos/${videoId}/review`, { review_status: reviewStatus }); return response.data; }; export const getGeneratedVideoDownloadUrl = async (videoId: string): Promise => { const response = await apiClient.get(`/generated-videos/${videoId}/download-url`); return response.data.download_url; };