78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
/**
|
|
* 视频生成 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<string, unknown>;
|
|
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<GenerationTaskItem> => {
|
|
const response = await apiClient.post("/generation/tasks", data);
|
|
return response.data;
|
|
};
|
|
|
|
export const getGenerationTask = async (taskId: string): Promise<GenerationTaskItem> => {
|
|
const response = await apiClient.get(`/generation/tasks/${taskId}`);
|
|
return response.data;
|
|
};
|
|
|
|
export const getGenerationResults = async (taskId: string): Promise<GeneratedVideoItem[]> => {
|
|
const response = await apiClient.get(`/generation/tasks/${taskId}/results`);
|
|
return response.data.items;
|
|
};
|
|
|
|
export const getGeneratedVideos = async (projectId: string): Promise<GeneratedVideoItem[]> => {
|
|
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<GeneratedVideoItem> => {
|
|
const response = await apiClient.patch(`/generated-videos/${videoId}/review`, { review_status: reviewStatus });
|
|
return response.data;
|
|
};
|
|
|
|
export const getGeneratedVideoDownloadUrl = async (videoId: string): Promise<string> => {
|
|
const response = await apiClient.get(`/generated-videos/${videoId}/download-url`);
|
|
return response.data.download_url;
|
|
};
|