diff --git a/apps/web/src/api/viral-video/types.ts b/apps/web/src/api/viral-video/types.ts index c62678cd8..92a791ec1 100644 --- a/apps/web/src/api/viral-video/types.ts +++ b/apps/web/src/api/viral-video/types.ts @@ -287,6 +287,8 @@ export interface ViralVideoModel { supports_audio: boolean supported_resolutions: string[] max_duration: number + /** 计费模式(可选):per_second / per_video 等,后端预留字段 */ + billing_mode?: string is_default?: boolean } diff --git a/apps/web/src/pages/viral-video/ViralVideoPage.css b/apps/web/src/pages/viral-video/ViralVideoPage.css index 6dc6ece13..aa152c3ca 100644 --- a/apps/web/src/pages/viral-video/ViralVideoPage.css +++ b/apps/web/src/pages/viral-video/ViralVideoPage.css @@ -1002,6 +1002,11 @@ .vv-form-row { margin-bottom: 10px; } +.vv-form-hint { + font-size: 12px; + color: #9ca3af; + line-height: 1.4; +} @media (max-width: 500px) { .vv-form-grid { grid-template-columns: 1fr; diff --git a/apps/web/src/pages/viral-video/ViralVideoPage.tsx b/apps/web/src/pages/viral-video/ViralVideoPage.tsx index d81a84773..d9c76f48f 100644 --- a/apps/web/src/pages/viral-video/ViralVideoPage.tsx +++ b/apps/web/src/pages/viral-video/ViralVideoPage.tsx @@ -219,11 +219,11 @@ const RATIOS = [ { v: "16:9", label: "16:9 横屏(B站/YouTube)" }, { v: "1:1", label: "1:1 方形(小红书)" }, ] -/** 兜底模型列表(接口未返回时使用,字段与 ViralVideoModel 对齐) */ +/** 兜底模型列表(接口未返回时使用,字段与 ViralVideoModel 对齐;后端返回后自动覆盖) */ const FALLBACK_VIDEO_MODELS: ViralVideoModel[] = [ { key: "seedance-2.5", - display_name: "Seedance 2.5(最新模型)", + display_name: "Seedance 2.5 — 最新最强", supports_audio: true, supported_resolutions: ["480p", "720p", "1080p"], max_duration: 30, @@ -231,7 +231,28 @@ const FALLBACK_VIDEO_MODELS: ViralVideoModel[] = [ }, { key: "seedance-2.0", - display_name: "Seedance 2.0 完整版(正式投放首选)", + display_name: "Seedance 2.0 — 正式首选", + supports_audio: true, + supported_resolutions: ["480p", "720p", "1080p"], + max_duration: 15, + }, + { + key: "seedance-2.0-fast", + display_name: "Seedance 2.0 Fast — 快速测试 🔇", + supports_audio: false, + supported_resolutions: ["480p", "720p"], + max_duration: 15, + }, + { + key: "seedance-2.0-mini", + display_name: "Seedance 2.0 Mini — 低成本 💰", + supports_audio: true, + supported_resolutions: ["480p", "720p"], + max_duration: 15, + }, + { + key: "wan-3.0", + display_name: "Wan 3.0 — 通义万相全能", supports_audio: true, supported_resolutions: ["480p", "720p", "1080p"], max_duration: 15, @@ -2359,9 +2380,17 @@ const ViralVideoPage: React.FC = () => { }} options={videoModels.map((m) => ({ value: m.key, - label: m.supports_audio ? m.display_name : `${m.display_name} 🔇无声`, + label: m.display_name, }))} /> + {(() => { + const curM = videoModels.find((m) => m.key === task.videoModel) + return curM && !curM.supports_audio ? ( +
+ 🔇 该模型不支持自动配音,视频为无声 +
+ ) : null + })()}