diff --git a/apps/web/src/components/voice/hooks/useCloneSubmit.ts b/apps/web/src/components/voice/hooks/useCloneSubmit.ts index ad8a47210..f578f5fe2 100755 --- a/apps/web/src/components/voice/hooks/useCloneSubmit.ts +++ b/apps/web/src/components/voice/hooks/useCloneSubmit.ts @@ -1,6 +1,7 @@ import { useRef, useCallback, useEffect } from "react" import { createVoiceClone, toVoiceClone } from "@/api/voice-clone" -import { uploadAsset } from "@/api/assets" +import { uploadAsset, ensureDefaultLibrary } from "@/api/assets" +import { getOrCreateDefaultProject } from "@/api/projects" import type { VoiceClone } from "@/api/voice-clone" interface UseCloneSubmitOptions { @@ -61,8 +62,14 @@ export function useCloneSubmit({ }) } + // 获取默认项目和素材库(后端 /upload 接口必填) + const project = await getOrCreateDefaultProject() + const library = await ensureDefaultLibrary({ project_id: project.id, kind: "voice" }) + const formData = new FormData() formData.append("file", fileToUpload) + formData.append("project_id", project.id) + formData.append("library_id", library.id) const uploadResult = await uploadAsset(formData) // 阶段 2:克隆