This commit is contained in:
2026-05-09 17:15:23 +08:00
parent 80a4183b45
commit a0ed128bde
43 changed files with 2573 additions and 381 deletions

View File

@@ -0,0 +1,72 @@
import type {
Hyper3dDownloadRequest,
Hyper3dDownloadResponse,
Hyper3dImageToModelRequest,
Hyper3dTaskStatusRequest,
Hyper3dTaskStatusResponse,
Hyper3dTaskSubmitResponse,
Hyper3dTextToModelRequest,
} from '../../packages/shared/src/contracts/hyper3d';
import { requestJson } from './apiClient';
const HYPER3D_API_BASE = '/api/assets/hyper3d';
const GENERATION_REQUEST_TIMEOUT_MS = 180_000;
function postHyper3dJson<TResponse>(
path: string,
payload: unknown,
fallbackMessage: string,
timeoutMs = GENERATION_REQUEST_TIMEOUT_MS,
) {
return requestJson<TResponse>(
`${HYPER3D_API_BASE}${path}`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
},
fallbackMessage,
{
timeoutMs,
},
);
}
export function submitHyper3dTextToModel(
payload: Hyper3dTextToModelRequest,
) {
return postHyper3dJson<Hyper3dTaskSubmitResponse>(
'/text-to-model',
payload,
'提交文生 3D 模型任务失败',
);
}
export function submitHyper3dImageToModel(
payload: Hyper3dImageToModelRequest,
) {
return postHyper3dJson<Hyper3dTaskSubmitResponse>(
'/image-to-model',
payload,
'提交图生 3D 模型任务失败',
);
}
export function getHyper3dTaskStatus(payload: Hyper3dTaskStatusRequest) {
return postHyper3dJson<Hyper3dTaskStatusResponse>(
'/status',
payload,
'查询 3D 模型任务状态失败',
60_000,
);
}
export function getHyper3dDownloads(payload: Hyper3dDownloadRequest) {
return postHyper3dJson<Hyper3dDownloadResponse>(
'/download',
payload,
'获取 3D 模型下载列表失败',
60_000,
);
}