From e64bfb0ad7f78213732aa95551b2dad1f4cb3c17 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 3 Sep 2026 19:39:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(voices):=20AI=E9=85=8D=E9=9F=B3=E6=A0=87?= =?UTF-8?q?=E8=AF=86=E5=85=BC=E5=AE=B9=E6=97=A7=E7=B4=A0=E6=9D=90=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20tts=5Fjob=5Fid=20=E9=99=8D=E7=BA=A7?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧素材 metadata 无 source 字段但有 tts_job_id,通过检查两者任一存在来显示 AI 标签 --- apps/web/src/pages/voices/components/MaterialVoiceTab.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/web/src/pages/voices/components/MaterialVoiceTab.tsx b/apps/web/src/pages/voices/components/MaterialVoiceTab.tsx index 31f5f8a1c..2c406ec3a 100644 --- a/apps/web/src/pages/voices/components/MaterialVoiceTab.tsx +++ b/apps/web/src/pages/voices/components/MaterialVoiceTab.tsx @@ -136,8 +136,9 @@ export const MaterialVoiceTab: React.FC = ({ const material = mapAssetToMaterial(asset) // duration 优先取顶层(后端从 metadata 提取),兜底 metadata const cardDuration = asset.duration || material.duration || 0 - // AI 生成素材标识(metadata.source === "tts_job") - const isAiMaterial = (asset.metadata as Record)?.source === "tts_job" + // AI 生成素材标识:兼容旧素材(无 source 字段但有 tts_job_id) + const meta = asset.metadata as Record + const isAiMaterial = meta?.source === "tts_job" || !!meta?.tts_job_id const isPlaying = playingId === asset.id const isSelected = selectedIds.has(asset.id) // 播放中以 audio 真实时长为准,未播放显示卡片时长 -- 2.54.0