/** * 任务相关 API * 对接后端方案 A 扩展后的端点(PR #109) * - POST /api/v1/generation/tasks — 创建生成任务(template_id + asset_ids 细粒度模式) * - GET /api/v1/tasks — 用户级任务列表(跨 project) * - POST /api/v1/tasks/{task_id}/retry — 简化重试 */ import apiClient from "./client"; /* ──────────── 类型定义 ──────────── */ /** 任务条目(对应用户级 UserTaskResponse) */ export interface TaskItem { id: string; task_type: "ingest" | "generation" | string; project_id: string; template_id: string; status: string; progress: number; current_step: string; error_message: string; user_message: string; retryable: boolean; source_id: string; created_at?: string | null; updated_at?: string | null; } /** 创建生成任务请求参数 */ 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; }; /** 获取当前用户的所有任务(跨 project) */ export const getUserTasks = async (): Promise => { const { data } = await apiClient.get("/tasks"); return data.items || []; }; /** 获取单个任务详情(用于轮询进度) */ 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; };