From 5c8d27c3c16fe9898b96efef0414b8cd84d10a23 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 9 Sep 2026 13:30:17 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20=E5=AF=B9=E5=8F=A3=E5=9E=8B=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=8A=A0=20Console=20=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 打印 videoId/voiceId/voiceType/textLen - 打印 getAssetById 响应(file_url 前100字符) - 打印 createLipsyncJob 请求 payload 和响应 - catch 打印 HTTP status + response data - 帮助定位 422/400/500 具体原因 --- apps/web/src/pages/ai-avatar/AiAvatarPage.tsx | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx b/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx index 5ffab6867..4eb1ef59b 100644 --- a/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx +++ b/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx @@ -57,18 +57,32 @@ const AiAvatarPage: React.FC = () => { } try { // ① 先按素材 id 拿 file_url(#1809 补充:对齐后端新参数 video_url) + console.log("[对口型] 开始生成:", { + videoId: video.id, + voiceId: voice.voice_id, + voiceType: voice.type, + textLen: state.scriptText.length, + }) const asset = await getAssetById(video.id) + console.log("[对口型] getAssetById 响应:", { + id: asset?.id, + file_url: asset?.file_url?.substring(0, 100), + }) const videoUrl = asset?.file_url if (!videoUrl) { + console.error("[对口型] file_url 为空,asset:", asset) message.error("获取出镜视频播放地址失败,请重新选择素材") return } // ② voice_id(预设/克隆 UUID 均由后端内部调 TTS)+ script_text + video_url - const job = await createLipsyncJob({ + const payload = { voice_id: voice.voice_id, script_text: state.scriptText, video_url: videoUrl, - }) + } + console.log("[对口型] createLipsyncJob 请求:", payload) + const job = await createLipsyncJob(payload) + console.log("[对口型] createLipsyncJob 响应:", { id: job.id, status: job.status }) state.setLipsyncJob(job) message.success("对口型任务已提交,生成中…") // 开始轮询 @@ -90,8 +104,11 @@ const AiAvatarPage: React.FC = () => { } }, 3000) } catch (err) { - // ② 接口失败弹错误提示,不只 console - console.error("对口型任务创建失败:", err) + console.error("[对口型] 创建失败:", { + status: (err as { response?: { status?: number } })?.response?.status, + data: (err as { response?: { data?: unknown } })?.response?.data, + message: err instanceof Error ? err.message : String(err), + }) message.error(err instanceof Error ? err.message : "对口型任务提交失败,请重试") } // eslint-disable-next-line react-hooks/exhaustive-deps