library-picturebook-activity/frontend/src/api/ai-3d.ts
2026-01-14 14:48:35 +08:00

118 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}`);
}