fix(viral-video): 预设音色改用 voices/presets(带Bearer Token)+ 清理analyze-images冗余参数 (#2128)
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Check push changed paths (push) Successful in 17s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m14s
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Validate - Style (pull_request) Has been skipped
CI/CD Pipeline / Validate - Security (pull_request) Has been skipped
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 3m24s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 25s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 31s
CI/CD Pipeline / Build Staging API Image (push) Successful in 32s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 29s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 2m48s
AI Code Review / AI Code Review (pull_request) Successful in 7m15s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 5m26s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m3s
CI/CD Pipeline / CI Gate (pull_request) Successful in 5s
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been skipped
CI/CD Pipeline / Validate - Style (push) Successful in 14m9s
CI/CD Pipeline / Integration Tests (push) Successful in 14m7s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 2m48s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 17m33s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 1m52s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 4m25s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 4m44s
CI/CD Pipeline / Unit Tests (push) Successful in 22m18s
CI/CD Pipeline / Validate - Security (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled

This commit was merged in pull request #2128.
This commit is contained in:
2026-10-01 19:34:15 +08:00
parent f417611829
commit 522668006f
@@ -26,6 +26,7 @@ import {
} from "@ant-design/icons"
import { Select, Input, message } from "antd"
import { uploadAssetDirect, getAssetLibraries, getAssetsByKind, type AssetItem } from "@/api/assets"
import { fetchPresetVoices } from "@/api/voices"
import {
FUSION_LEVELS,
STYLE_STRENGTHS,
@@ -393,25 +394,21 @@ const ViralVideoPage: React.FC = () => {
),
)
.catch(() => {})
fetch("/api/v1/tts/presets", { credentials: "include" })
.then((r) => (r.ok ? r.json() : []))
.then((list: { voice_id?: string; id?: string; name?: string; display_name?: string }[]) => {
const arr = Array.isArray(list) ? list : []
fetchPresetVoices()
.then((res) => {
const arr = Array.isArray(res?.items) ? res.items : []
setPresetVoices(
arr.map((v) => ({
id: v.voice_id || v.id || "",
name: v.display_name || v.name || v.voice_id || "预置音色",
desc: "系统音色",
id: v.voice_id,
name: v.name,
desc: v.description || v.tags?.join("/") || "系统音色",
sample_audio_url: v.preview_url || undefined,
})),
)
})
.catch(() => {
setPresetVoices([
{ id: "zh-CN-XiaoxiaoNeural", name: "晓晓", desc: "温柔女声" },
{ id: "zh-CN-YunxiNeural", name: "云希", desc: "活力男声" },
{ id: "zh-CN-YunjianNeural", name: "云健", desc: "专业男声" },
{ id: "zh-CN-XiaoyiNeural", name: "晓伊", desc: "甜美女声" },
])
// 接口失败兜底 mock(与 PresetVoicePickerModal 内 MOCK_VOICES 一致)
setPresetVoices([])
})
}, [])
@@ -763,7 +760,6 @@ const ViralVideoPage: React.FC = () => {
const job = await analyzeViralImages({
images: readyImgs.map((i) => i.ossUrl as string),
reference_video_url: task.refVideo?.ossUrl || undefined,
style_template_id: task.refVideo?.ossUrl ? undefined : undefined,
style_strength: task.refVideo?.ossUrl ? task.styleStrength : undefined,
})
setTask({ job, jobId: job.id })