118 lines
2.4 KiB
TypeScript
118 lines
2.4 KiB
TypeScript
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<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}`);
|
||
}
|