fix(web): 上传按钮模式+卡片文字重叠+AI配音时长+smart-match结构兼容 #1564
Reference in New Issue
Block a user
Delete Branch "feat/upload-button-card-layout-voice-duration"
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?
改动(4 项)
1. 上传区改为按钮模式(需求1)
AssetUploadZone.tsx:大虚线框Upload.Dragger→ 紧凑「+ 上传素材」按钮(隐藏 file input,多选/上传/队列逻辑完全不变)assets.css:删除.xx-asset-upload-zone/icon/text/hint旧虚线框样式,新增按钮样式2. 素材卡片文字重叠修复(需求2)
AssetCard.tsx信息区重排:第一行 = 状态标签(左)+ 时长(右,两端对齐);第二行 = 「已用X%」余量标签独占一行.xx-status-pill/.xx-asset-usage-badge字号 padding 缩小适配 6 列窄卡片;状态标签过长省略号;文件名保持单行省略3. AI 配音时长显示(需求3)
Step5VoiceSelect.tsx:新增isAiVoice()(duration≤0 且 file_size≤0 判定为音色模型)4. smart-match 结构兼容 + 404/422 防御(任务0 联调,前端侧)
assets.ts smartMatchAssets:兼容后端{items:[{asset,score,breakdown}]}包装结构与扁平结构,统一归一化为AssetItem[],过滤无 id 项usePreviewAssets:请求前过滤 undefined/空 id,杜绝GET /assets/undefined404useSmartMatch:matched 再过滤无 id 项后取 id,杜绝 undefined 流入 clips/from-assets 导致 422不改动
验收
本地 tsc / ESLint / Prettier / 607 单测全绿。
- AssetUploadZone: 大虚线框 Dragger 改为紧凑「上传素材」按钮(隐藏input多选), 拖拽到内容区仍可上传;删除旧虚线框样式 - AssetCard: 信息区重排,状态标签+时长第一行(两端对齐)、余量标签独占第二行, 标签/余量 pill 缩小适配6列窄卡片,长标签省略号,杜绝文字重叠 - Step5VoiceSelect: duration=0 且 file_size=0 的 AI 音色显示「AI音色/按文本合成」, 不显示 00:00/大小,且不参与时长不足校验(克隆音色按脚本实时合成) - smartMatchAssets: 兼容后端 {items:[{asset,score,breakdown}]} 包装结构, 统一归一化为 AssetItem[] 并过滤无 id 项 - usePreviewAssets: 过滤 undefined/空 id,杜绝 /assets/undefined 404 - useSmartMatch: matched 再过滤无 id 项后取 id🚀 预览环境已部署
代码审查结果 - PR #1564
⚠️ 问题(0个需要修改)
无
💡 建议(1个可选)
isAiVoice函数通过duration <= 0 && size <= 0来判断是否为 AI 音色。虽然能覆盖大部分场景,但如果用户上传了损坏的文件(例如大小为0的空文件),也会被误判为 AI 音色。建议后续数据模型支持时,增加明确的kind或is_ai字段进行区分,以提高判断准确性。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-08-30 17:58:09 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1564 已关闭或合并,对应的预览环境已被清理。