diff --git a/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx b/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx index e9b244335..27503c07f 100644 --- a/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx +++ b/apps/web/src/pages/ai-avatar/AiAvatarPage.tsx @@ -233,7 +233,17 @@ const AiAvatarPage: React.FC = () => { setRenderErrorMessage("") if (renderTimerRef.current) clearInterval(renderTimerRef.current) + let renderPollCount = 0 + const RENDER_MAX_POLLS = 200 // 最多轮询 10 分钟(200 次 × 3s) renderTimerRef.current = setInterval(async () => { + renderPollCount++ + if (renderPollCount > RENDER_MAX_POLLS) { + if (renderTimerRef.current) clearInterval(renderTimerRef.current) + renderTimerRef.current = null + setRenderStatus("failed") + setRenderErrorMessage("渲染超时(超过10分钟),请稍后在任务历史查看结果") + return + } try { const updated = await getRenderJob(job.id) setRenderProgress(updated.progress ?? 0)