diff --git a/apps/web/src/pages/workspace/ProjectAssets.tsx b/apps/web/src/pages/workspace/ProjectAssets.tsx index 0ba9dcb4f..a33a6ad3d 100644 --- a/apps/web/src/pages/workspace/ProjectAssets.tsx +++ b/apps/web/src/pages/workspace/ProjectAssets.tsx @@ -476,31 +476,31 @@ const ProjectAssets: React.FC = () => { }; const assetPill = (asset: AssetItem) => { - if (asset.mime_type?.startsWith('audio')) return { text: '??', cls: 'audio' }; - if (asset.mime_type?.startsWith('image')) return { text: '??', cls: 'video' }; - if (String(asset.metadata?.review_status || '') === 'pending_review') return { text: '???', cls: 'warn' }; - if (String(asset.metadata?.review_status || '') === 'rejected') return { text: '???', cls: 'bad' }; - return { text: asset.status === 'ready' ? '??' : '??', cls: asset.status === 'ready' ? 'ok' : 'video' }; + if (asset.mime_type?.startsWith('audio')) return { text: '音频', cls: 'audio' }; + if (asset.mime_type?.startsWith('image')) return { text: '图片', cls: 'video' }; + if (String(asset.metadata?.review_status || '') === 'pending_review') return { text: '待复核', cls: 'warn' }; + if (String(asset.metadata?.review_status || '') === 'rejected') return { text: '已驳回', cls: 'bad' }; + return { text: asset.status === 'ready' ? '就绪' : '导入中', cls: asset.status === 'ready' ? 'ok' : 'video' }; }; const assetMeta = (asset: AssetItem) => { const duration = Number(asset.metadata?.duration_seconds || asset.metadata?.duration || 0); - const durationText = duration ? `${Math.round(duration)}s` : asset.mime_type?.startsWith('audio') ? '????' : '9:16'; - const classification = String(asset.metadata?.classification || '???'); - const review = String(asset.metadata?.review_status || asset.status || '???'); - return `${durationText} ? ${classification} ? ${review}`; + const durationText = duration ? `${Math.round(duration)}s` : asset.mime_type?.startsWith('audio') ? '音频素材' : '9:16'; + const classification = String(asset.metadata?.classification || '未分类'); + const review = String(asset.metadata?.review_status || asset.status || '未复核'); + return `${durationText} · ${classification} · ${review}`; }; return (
-

???

-

?????? 9:16 ??????????????????

+

素材库

+

上传和管理 9:16 视频、图片、配音素材,系统会自动分类并给出剪辑可用度。

- - + +
@@ -511,48 +511,48 @@ const ProjectAssets: React.FC = () => { style={{ width: 160 }} value={smartViewFilter} options={[ - { label: '????', value: 'all' }, - { label: '????', value: 'recommended' }, - { label: '????', value: 'needs_attention' }, - { label: '?????', value: 'high_risk' }, - { label: '?????', value: 'unclassified' }, - { label: '????', value: 'recent' }, - { label: '?????', value: 'unused' }, - { label: '?????', value: 'used' }, - { label: '?????', value: 'pending_review' }, - { label: '????', value: 'voice' }, + { label: '全部素材', value: 'all' }, + { label: '推荐可用', value: 'recommended' }, + { label: '需要处理', value: 'needs_attention' }, + { label: '高风险素材', value: 'high_risk' }, + { label: '未分类素材', value: 'unclassified' }, + { label: '最近上传', value: 'recent' }, + { label: '未使用素材', value: 'unused' }, + { label: '已使用素材', value: 'used' }, + { label: '待复核素材', value: 'pending_review' }, + { label: '配音素材', value: 'voice' }, ]} onChange={setSmartViewFilter} /> - - + - + +

素材与画面

主素材 + B-roll
+ + +

标题与模板

+ + + + +

配音与策略

+ + + +
@@ -268,10 +268,10 @@ const ProjectGeneration: React.FC = () => { @@ -326,19 +326,19 @@ const ProjectGeneration: React.FC = () => { )} {resultsQuery.data?.length ? (
-

??????

+

生成结果

{resultsQuery.data.map((item) => ( {item.name} - + ))}