/** * 任务相关 API * 对接后端任务中心 API: * - POST /api/v1/generation/tasks — 创建生成任务 * - GET /api/v1/tasks — 用户级任务列表(支持分页/筛选) * - GET /api/v1/tasks/{task_id} — 任务详情(含 error_info) * - POST /api/v1/tasks/{task_id}/retry — 重试失败任务 */ import apiClient from "./client"; /* ──────────── 类型定义 ──────────── */ /** 任务状态 */ export type TaskStatus = "pending" | "waiting" | "running" | "completed" | "failed" | "cancelled"; /** 任务类型 */ export type TaskType = "ingest" | "generation" | string; /** 错误详情 */ export interface TaskErrorInfo { error_type: string; error_message: string; failed_step: string; stack_trace?: string; } /** 任务条目(对应用户级 UserTaskResponse) */ export interface TaskItem { id: string; task_type: TaskType; project_id: string; template_id?: string; status: TaskStatus; progress: number; current_step: string; error_message: string; user_message: string; retryable: boolean; source_id: string; /** 错误详情(失败任务) */ error_info?: TaskErrorInfo; /** 耗时(秒) */ duration_seconds?: number; created_at?: string | null; updated_at?: string | null; } /** 任务列表查询参数 */ export interface TaskListParams { page?: number; page_size?: number; status?: TaskStatus | "all"; task_type?: TaskType | "all"; } /** 任务列表分页响应 */ export interface TaskListResponse { items: TaskItem[]; total: number; page: number; page_size: number; } /** 创建生成任务请求参数 */ export interface CreateGenerationTaskRequest { template_id: string; asset_ids: string[]; title_ids: string[]; voice_ids: string[]; } /** 创建生成任务响应(对齐后端 GenerationTaskResponse) */ export interface CreateGenerationTaskResponse { id: string; project_id: string; asset_library_id: string; strategy_id: string; voice_library_id: string; template_id: string; asset_ids: string[]; title_ids: string[]; voice_ids: string[]; status: string; progress: number; result_count: number; error_message: string; } /* ──────────── API 函数 ──────────── */ /** 创建生成任务(一键生成) */ export const createGenerationTask = async ( params: CreateGenerationTaskRequest, ): Promise => { const { data } = await apiClient.post( "/generation/tasks", params, ); return data; }; /** 获取任务列表(支持分页和筛选) */ export const getTasks = async ( params?: TaskListParams, ): Promise => { const { data } = await apiClient.get("/tasks", { params, }); return data; }; /** 获取当前用户的所有任务(兼容旧接口,跨 project) */ export const getUserTasks = async (): Promise => { const { data } = await apiClient.get("/tasks"); return data.items || data || []; }; /** 获取单个任务详情(含 error_info) */ export const getTask = async (taskId: string): Promise => { const { data } = await apiClient.get(`/tasks/${taskId}`); return data; }; /** 重试失败的任务 */ export const retryTask = async (taskId: string): Promise => { const { data } = await apiClient.post(`/tasks/${taskId}/retry`); return data; };