2026-01-13 14:01:17 +08:00
|
|
|
|
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;
|
2026-01-13 16:41:12 +08:00
|
|
|
|
// 多结果支持(文生3D会生成4个不同角度的模型)
|
|
|
|
|
|
resultUrls?: string[];
|
|
|
|
|
|
previewUrls?: string[];
|
2026-01-13 14:01:17 +08:00
|
|
|
|
errorMessage?: string;
|
|
|
|
|
|
externalTaskId?: string;
|
|
|
|
|
|
retryCount: number;
|
|
|
|
|
|
createTime: string;
|
|
|
|
|
|
completeTime?: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-14 14:48:35 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 模型生成类型
|
|
|
|
|
|
*/
|
|
|
|
|
|
export type AI3DGenerateType = "Normal" | "LowPoly" | "Geometry" | "Sketch";
|
|
|
|
|
|
|
2026-01-13 14:01:17 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 创建任务参数
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface CreateAI3DTaskParams {
|
|
|
|
|
|
inputType: AI3DInputType;
|
|
|
|
|
|
inputContent: string;
|
2026-01-14 14:48:35 +08:00
|
|
|
|
/** 模型生成类型:Normal-带纹理, LowPoly-低多边形, Geometry-白模, Sketch-草图 */
|
|
|
|
|
|
generateType?: AI3DGenerateType;
|
|
|
|
|
|
/** 模型面数:10000-1500000,默认500000 */
|
|
|
|
|
|
faceCount?: number;
|
2026-01-13 14:01:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查询任务参数
|
|
|
|
|
|
*/
|
|
|
|
|
|
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<AI3DTask>("/ai-3d/generate", data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取任务列表
|
|
|
|
|
|
* GET /api/ai-3d/tasks
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getAI3DTasks(params?: QueryAI3DTaskParams) {
|
|
|
|
|
|
return request.get<AI3DTaskListResponse>("/ai-3d/tasks", { params });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取任务详情
|
|
|
|
|
|
* GET /api/ai-3d/tasks/:id
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getAI3DTask(id: number) {
|
|
|
|
|
|
return request.get<AI3DTask>(`/ai-3d/tasks/${id}`);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 重试任务
|
|
|
|
|
|
* POST /api/ai-3d/tasks/:id/retry
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function retryAI3DTask(id: number) {
|
|
|
|
|
|
return request.post<AI3DTask>(`/ai-3d/tasks/${id}/retry`);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 删除任务
|
|
|
|
|
|
* DELETE /api/ai-3d/tasks/:id
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function deleteAI3DTask(id: number) {
|
|
|
|
|
|
return request.delete(`/ai-3d/tasks/${id}`);
|
|
|
|
|
|
}
|