fix(frontend): 轮询识别awaiting_cover状态,visibilitychange恢复轮询,自动跳封面页 #2088
Reference in New Issue
Block a user
Delete Branch "fix/frontend-polling-awaiting-cover"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
智能剪辑进度条卡 56%/99%、不自动跳转封面页。根因:
startPolling的 Promise.then 硬编码弹「视频生成完成」toast 并调onComplete(videos),没有透传后端awaiting_cover状态;外层无法区分「渲染完成等封面」vs「已完成」。顺带:TaskStatus 类型和任务列表页 STATUS_CONFIG 缺失
awaiting_cover,TS 编译报错。修改
useGenerationPolling v5
callbacks模式调onTaskCompleted(videos, taskStatus),把completed/awaiting_cover透传到外层;awaiting_cover不弹完成 toast。immediateTickRef:每次poll()入口注册一个「立刻补拉」函数,done=true后清理。useEffect监听visibilitychange+window.focus,页面回到可见时调用immediateTickRef.current()清空未触发的 setTimeout 立即拉一次。statusMap,任一任务awaiting_cover则整体透传awaiting_cover。状态透传
onGenerationSuccess(status?)回调新增可选 status 参数,useGenerateVideo.handleComplete透传。GeneratePage.onGenerationSuccess在awaiting_cover/completed时自动setCurrentStep(5)跳封面页,不再等用户手动点「下一步」。类型/UI 补齐
TaskStatus类型加入"awaiting_cover"。STATUS_CONFIG加awaiting_cover(标签「待选封面」,warning 色)。验证
tsc --noEmit通过(0 error)。eslint6 个修改文件通过(0 error 0 warn)。影响
- useGenerationPolling v5: 1. 单任务路径透传 taskStatus(completed/awaiting_cover)到 onComplete, 外层据此区分:awaiting_cover→封面选择页,completed→结果/历史页; awaiting_cover 不再弹'视频生成完成'toast(只在 completed 弹) 2. visibilitychange + focus 监听:页面切后台被浏览器降频/冻结 setTimeout 后, 切回前台立即补拉一次任务状态,解决'进度卡56%'的真因 3. 非4xx错误(网络/5xx)3s退避重试,MAX_RETRYABLE_ERRORS=10 兜底 - TaskStatus 类型补 awaiting_cover,STATUS_CONFIG 加'待选封面'标签 - onGenerationSuccess 回调接受 status 参数,渲染完成自动 setCurrentStep(5) 跳封面页 - 批量路径聚合 statusMap,任一任务 awaiting_cover 则整体透传 awaiting_cover🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #2088 已关闭或合并,对应的预览环境已被清理。