import request from "@/utils/request"; import type { PaginationParams, PaginationResponse } from "@/types/api"; // ==================== AI 3D 任务相关类型 ==================== /** * AI 3D 任务状态 */ export type AI3DTaskStatus = | "pending" | "processing" | "completed" | "failed" | "timeout"; /** * AI 3D 任务输入类型 */ export type AI3DInputType = "text" | "image"; /** * AI 3D 任务 */ export interface AI3DTask { id: number; tenantId: number; userId: number; inputType: AI3DInputType; inputContent: string; status: AI3DTaskStatus; resultUrl?: string; previewUrl?: string; // 多结果支持(文生3D会生成4个不同角度的模型) resultUrls?: string[]; previewUrls?: string[]; errorMessage?: string; externalTaskId?: string; retryCount: number; createTime: string; completeTime?: string; } /** * 模型生成类型 */ export type AI3DGenerateType = "Normal" | "LowPoly" | "Geometry" | "Sketch"; /** * 创建任务参数 */ export interface CreateAI3DTaskParams { inputType: AI3DInputType; inputContent: string; /** 模型生成类型:Normal-带纹理, LowPoly-低多边形, Geometry-白模, Sketch-草图 */ generateType?: AI3DGenerateType; /** 模型面数:10000-1500000,默认500000 */ faceCount?: number; } /** * 查询任务参数 */ export interface QueryAI3DTaskParams extends PaginationParams { status?: AI3DTaskStatus; } /** * 任务列表响应 */ export interface AI3DTaskListResponse { list: AI3DTask[]; total: number; page: number; pageSize: number; } // ==================== API 接口 ==================== /** * 创建生成任务 * POST /api/ai-3d/generate */ export function createAI3DTask(data: CreateAI3DTaskParams) { return request.post("/ai-3d/generate", data); } /** * 获取任务列表 * GET /api/ai-3d/tasks */ export function getAI3DTasks(params?: QueryAI3DTaskParams) { return request.get("/ai-3d/tasks", { params }); } /** * 获取任务详情 * GET /api/ai-3d/tasks/:id */ export function getAI3DTask(id: number) { return request.get(`/ai-3d/tasks/${id}`); } /** * 重试任务 * POST /api/ai-3d/tasks/:id/retry */ export function retryAI3DTask(id: number) { return request.post(`/ai-3d/tasks/${id}/retry`); } /** * 删除任务 * DELETE /api/ai-3d/tasks/:id */ export function deleteAI3DTask(id: number) { return request.delete(`/ai-3d/tasks/${id}`); }