feat(P1): #579 配音库新增配音素材Tab #596
Reference in New Issue
Block a user
Delete Branch "feat/voice-library-add-material-tab"
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个Tab:配音素材 - 使用 getAssetsByKind('voice') 加载用户上传的音频素材 - 卡片式展示,包含时长、文件大小等信息 - 支持骨架屏加载和空状态 - 空状态可直接跳转上传音频 - 新增vmat系列卡片样式🚀 预览环境已部署
代码审查结果 - PR #596
⚠️ 问题(3个需要修改)
apps/web/src/pages/voices/VoiceLibrary.tsx 第809行:硬编码
limit: 50导致数据截断queryFn中直接写死了limit: 50,当用户上传的素材超过 50 个时,无法查看或访问后续数据。虽然 API 定义了page和page_size参数,但前端并未实现分页逻辑。page和page_size作为状态进行管理。apps/web/src/pages/voices/VoiceLibrary.tsx 第807行:静态 QueryKey 导致数据无法自动刷新
useQuery的queryKey设为固定的["voice-materials"]。当用户点击“上传音频”并成功上传后,该列表不会自动刷新,用户必须刷新页面才能看到新上传的素材。queryClient.invalidateQueries(["voice-materials"])以刷新数据。apps/web/src/pages/voices/VoiceLibrary.tsx 第1166行:类型断言存在运行时风险
as number强制断言asset.metadata?.duration的类型。如果后端返回的数据中duration是字符串(如"120.5")或格式不正确,该断言会掩盖类型错误,且不进行实际转换,可能导致后续计算结果为NaN。NaN:NaN)。Number(asset.metadata?.duration)或parseFloat进行安全的类型转换,并增加对isNaN的校验。💡 建议(1个可选)
filters中同时存在limit、page和page_size。通常分页逻辑使用page+page_size(或limit+offset)。同时存在limit和page_size容易引起混淆(例如:limit是指总数量限制还是单页数量?)。建议与后端确认语义,若limit即为page_size,建议统一命名。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无恙
🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 17:04:44 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #596 已关闭或合并,对应的预览环境已被清理。