feat: 新增项目资产库与形态参考素材

This commit is contained in:
GouJ
2026-09-21 19:54:51 +08:00
parent e6d02a20a7
commit b834d1d259
18 changed files with 737 additions and 41 deletions
+26
View File
@@ -0,0 +1,26 @@
import { request } from '../../lib/http'
import type { ProjectAsset, UpdateProjectAssetInput, UploadProjectAssetInput } from './types'
/** 固定项目资产路径并编码正式数据库 ID。 */
function assetPath(projectId: string, assetId?: string) {
const base = `/projects/${encodeURIComponent(projectId)}/assets`
return assetId ? `${base}/${encodeURIComponent(assetId)}` : base
}
/** 项目素材 API;上传使用 multipart,浏览和编辑不调用生成模型。 */
export const projectAssetsApi = {
list: (projectId: string, signal?: AbortSignal) => request<ProjectAsset[]>(assetPath(projectId), { signal }),
get: (projectId: string, assetId: string, signal?: AbortSignal) =>
request<ProjectAsset>(assetPath(projectId, assetId), { signal }),
upload: (projectId: string, input: UploadProjectAssetInput) => {
const body = new FormData()
body.append('file', input.file)
body.append('name', input.name)
body.append('category', input.category)
return request<ProjectAsset>(assetPath(projectId), { method: 'POST', body, timeoutMs: 0 })
},
update: (projectId: string, assetId: string, input: UpdateProjectAssetInput) =>
request<ProjectAsset>(assetPath(projectId, assetId), { method: 'PUT', body: input }),
remove: (projectId: string, assetId: string) =>
request<ProjectAsset>(assetPath(projectId, assetId), { method: 'DELETE' })
}