fix: previewTaskId 持久化 + 配音/BGM 参数完整传递 #1485
Reference in New Issue
Block a user
Delete Branch "fix/persist-preview-params"
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?
问题
改动
验收
🚀 预览环境已部署
9a9f02b8b2to9e55e72ba6【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
在
useGenerateVideo.ts中,当voiceMode为 "clone" 但未选择克隆音色(selectedClonedVoice为空)时,代码会回退发送voice_ids: [props.selectedVoice](即预设音色 ID)。而在
useStep6Cover.ts(预览逻辑)中,相同情况仅发送voice_library_id(为空),不会发送voice_ids。删除
useGenerateVideo.ts中第 146 行的voice_ids回退逻辑,确保生成逻辑与预览逻辑(useStep6Cover.ts)保持一致。如果voiceLibraryId为空,则不应发送任何配音参数,或者在前端校验中拦截未选择音色的情况。💡 改进建议(不阻塞合并)
[apps/web/src/pages/generate/hooks/usePersistedState.ts: 27] 异常处理建议增加日志
readFromStorage和setPersistedState的catch块中,目前是静默忽略错误。建议增加console.warn,以便在 localStorage 不可用(如隐私模式)或 JSON 解析失败时,开发阶段能更容易排查问题。[apps/web/src/pages/generate/hooks/useGenerateFormState/index.ts: 176] localStorage Key 生成依赖类型安全
preview_task_id_tpl_${selectedTemplate}生成 Key。请确保selectedTemplate变量在此处一定是字符串 ID。如果selectedTemplate是对象类型,会导致 Key 变为[object Object],导致不同模板共享同一个持久化状态,造成数据污染。✅ 良好实践
usePersistedState实现了较为完善的 localStorage 持久化逻辑,处理了 SSR/隐私模式降级、Key 变化时的状态同步等细节。bgm_config和voice_library_id类型定义清晰,接口扩展性良好。🤖 由 AI 代码审查机器人自动生成 | 2026-08-24 14:42:59 | 模型:
9e55e72ba6to3c296b6811CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1485 已关闭或合并,对应的预览环境已被清理。