style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (push) Successful in 15s
CI/CD Pipeline / Build Staging API Image (push) Successful in 15s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 19s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 33s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 53s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 1m41s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 2m13s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 4m9s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Has been cancelled
CI/CD Pipeline / Validate - Style (push) Has been cancelled
CI/CD Pipeline / Validate - Security (push) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (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
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Failing after 168h9m3s
CI/CD Pipeline / Retag skipped Staging API Image (push) Failing after 168h9m3s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 168h9m44s
CI/CD Pipeline / PR Build API Image (push) Failing after 168h9m44s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 168h9m57s
CI/CD Pipeline / Retag skipped Staging Web Image (push) Failing after 168h43m49s
CI/CD Pipeline / PR Build Web Image (push) Failing after 168h44m30s

This commit is contained in:
CI Bot
2026-09-09 07:14:01 +00:00
parent 0c76967453
commit 288e0760df
+33 -9
View File
@@ -36,7 +36,9 @@ const AiAvatarPage: React.FC = () => {
/* ── 对口型生成弹窗 ── */
const [showLipsyncModal, setShowLipsyncModal] = useState(false)
const [lipsyncStatus, setLipsyncStatus] = useState<"generating" | "completed" | "failed">("generating")
const [lipsyncStatus, setLipsyncStatus] = useState<"generating" | "completed" | "failed">(
"generating",
)
const [lipsyncErrorMessage, setLipsyncErrorMessage] = useState("")
/* ── 对口型轮询 ── */
@@ -65,7 +67,7 @@ const AiAvatarPage: React.FC = () => {
setShowLipsyncModal(true)
setLipsyncStatus("generating")
setLipsyncErrorMessage("")
// ① 先按素材 id 拿 file_url(#1809 补充:对齐后端新参数 video_url)
console.log("[对口型] 开始生成:", {
videoId: video.id,
@@ -101,7 +103,11 @@ const AiAvatarPage: React.FC = () => {
try {
const updated = await getLipsyncJob(job.id)
state.setLipsyncJob(updated)
console.log("[对口型] 轮询状态:", { id: updated.id, status: updated.status, error: updated.error_message })
console.log("[对口型] 轮询状态:", {
id: updated.id,
status: updated.status,
error: updated.error_message,
})
if (updated.status === "completed") {
if (lipsyncTimerRef.current) clearInterval(lipsyncTimerRef.current)
setLipsyncStatus("completed")
@@ -331,26 +337,44 @@ const AiAvatarPage: React.FC = () => {
✕
</button>
</div>
<div className="aa-modal__body" style={{ display: "flex", flexDirection: "column", alignItems: "center", padding: "40px 20px" }}>
<div
className="aa-modal__body"
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
padding: "40px 20px",
}}
>
{lipsyncStatus === "generating" && (
<>
<div className="aa-lipsync-spinner" />
<div style={{ marginTop: 20, fontSize: 15, color: "#1a1a2e" }}>对口型视频生成中…</div>
<div style={{ marginTop: 8, fontSize: 13, color: "#8c8ca1" }}>请勿关闭页面,完成后将自动提示</div>
<div style={{ marginTop: 20, fontSize: 15, color: "#1a1a2e" }}>
对口型视频生成中…
</div>
<div style={{ marginTop: 8, fontSize: 13, color: "#8c8ca1" }}>
请勿关闭页面,完成后将自动提示
</div>
</>
)}
{lipsyncStatus === "completed" && (
<>
<div style={{ fontSize: 48 }}>✅</div>
<div style={{ marginTop: 16, fontSize: 15, color: "#1a1a2e" }}>对口型视频生成完成</div>
<div style={{ marginTop: 16, fontSize: 15, color: "#1a1a2e" }}>
对口型视频生成完成
</div>
</>
)}
{lipsyncStatus === "failed" && (
<>
<div style={{ fontSize: 48 }}>❌</div>
<div style={{ marginTop: 16, fontSize: 15, color: "#1a1a2e" }}>对口型生成失败</div>
<div style={{ marginTop: 16, fontSize: 15, color: "#1a1a2e" }}>
对口型生成失败
</div>
{lipsyncErrorMessage && (
<div style={{ marginTop: 8, fontSize: 13, color: "#ff4d4f" }}>{lipsyncErrorMessage}</div>
<div style={{ marginTop: 8, fontSize: 13, color: "#ff4d4f" }}>
{lipsyncErrorMessage}
</div>
)}
</>
)}