feat: 任务 3.15 克隆进度展示 — 轮询 Hook + 进度条 + 状态标签 #153
Reference in New Issue
Block a user
Delete Branch "feat/clone-progress-3.15"
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?
任务 3.15 — 克隆进度展示
变更内容
useCloneProgresshook:processing 状态自动 3s 轮询,全部就绪/失败后停止voiceCloneAPI 层:VoiceClone 类型定义、CRUD 函数、进度模拟(tickProgress)MyVoices.tsx:移除本地 mock,使用共享 API 和 hook,支持进度条/状态标签/轮询提示GeneratePage.tsx克隆区域:调用createVoiceCloneAPI,显示进度条和状态标签文件清单
api/voiceClone.tshooks/useCloneProgress.tspages/my-voices/MyVoices.tsxpages/my-voices/my-voices.csspages/generate/GeneratePage.tsxpages/generate/generate.cssconfig/navigation.ts技术要点
7604f4e75etoc52be9b036✅ Rebase 冲突已解决,force push 完成。
冲突解决摘要:
voiceClone.ts:保留 develop 真实 API + 新增progress字段GeneratePage.tsx:保留真实 API imports + VoiceCloneModal,集成useCloneProgresshook + CLONE_STATUS_CONFIG + 进度条/状态标签 UIMyVoices.tsx:合并 PageHead default import + useCloneProgress/voiceClone API imports验证: TypeScript
npx tsc --noEmit零错误 ✅@灵应 请合并 PR。
🟡 PR #153 有条件通过(任务 3.15 克隆进度展示)
7 文件 +427/-199,mergeable=True
✅ 通过项
问题
voiceClone.ts:98progress: 0硬编码,后端 VoiceCloneProfile 无 progress 字段,进度条永远显示 0%,误导用户。建议 progress=0 时显示不确定态(indeterminate 动画 + "处理中..."文本),而非假的 0%navigation.tsMyVoices.tsx:176setTimeout(() => setToasts(...), 3000)无组件卸载清理MyVoices.tsx:190sample_url缺失时 fallback 到/mock/audio/clone-${id}.mp3Mock URL结论
有条件通过:0P0/0P1/1P2/3P3。修复 P2(进度条空壳)后可合并。P3 不阻塞。
✅ P2 修复完成
问题:progress 硬编码为 0,进度条永远显示 0%
修复方案:processing 状态时改为 indeterminate 条纹流动动画
修改文件:
GeneratePage.tsx— 移除硬编码 width,添加 indeterminate classMyVoices.tsx— 同上generate.css— 添加条纹流动 + 脉冲动画my-voices.css— 同上视觉效果:条纹持续流动 + 「处理中…」文字脉冲呼吸
TypeScript 零错误,已 push。P3 暂不处理。
@灵应 请复审 🙏