Compare commits

..

1 Commits

Author SHA1 Message Date
xiaoxia 86afbb3eaf fix(#1341): 修复 EditorDrawers totalDuration 重复定义
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 36s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 38s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 41s
AI Code Review / AI Code Review (pull_request) Successful in 1m18s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m26s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m34s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m52s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m30s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m59s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m54s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 8m44s
CI/CD Pipeline / CI Gate (pull_request) Failing after 9s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 52s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 839h9m53s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 839h9m54s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 839h9m55s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 839h9m55s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 839h9m55s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 839h18m4s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 839h18m5s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 839h18m38s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 839h18m38s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 839h18m39s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 839h18m40s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 839h18m42s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 839h18m42s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 839h43m24s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 839h43m25s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 839h51m36s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 839h52m12s
2026-08-12 16:07:58 +08:00
4 changed files with 5 additions and 37 deletions
@@ -118,10 +118,6 @@ export interface EditPlanConfig {
generate_count?: number
/** 素材模式 */
material_mode?: string
/** 预览视频 URL(封面生成用) */
rendered_storage_key?: string
/** 生成任务 ID */
generation_task_id?: string
}
/* ── 模板草稿主体 ── */
@@ -1,5 +1,4 @@
import React from "react"
import { Modal, Spin } from "antd"
import type { CoverConfig } from "../../editing-planner/types"
import { useStep6Cover } from "../hooks/useStep6Cover"
import Button from "@/components/ui/Button"
@@ -19,7 +18,6 @@ interface Step6CoverSettingsProps {
const Step6CoverSettings: React.FC<Step6CoverSettingsProps> = (props) => {
const {
coverSettings,
generating,
generateAutoCover,
showCoverSettings,
setShowCoverSettings,
@@ -97,14 +95,6 @@ const Step6CoverSettings: React.FC<Step6CoverSettingsProps> = (props) => {
template={editingTemplate}
onSave={handleSaveTemplate}
/>
{/* AI 生成封面进度弹窗 */}
<Modal open={generating} closable={false} footer={null} centered>
<div style={{ textAlign: "center", padding: "24px 0" }}>
<Spin size="large" />
<p style={{ marginTop: 16, fontSize: 14, color: "#666" }}>AI 正在生成封面,请稍候...</p>
</div>
</Modal>
</div>
)
}
@@ -4,7 +4,6 @@
*/
import { useState, useCallback, useMemo, useEffect, useRef } from "react"
import { createPreview, getPreviewStatus } from "@/api/generation"
import { updateEditPlan } from "@/api/template-editor/editPlans"
import type { PreviewTaskResponse, PreviewStatus as ApiPreviewStatus } from "@/api/generation"
import type { EditingTemplate } from "@/api/editing-planner"
import { safeExtractError } from "./generate-video/errorUtils"
@@ -251,15 +250,6 @@ export function useStep4Preview({
it.index === index ? { ...it, status: "ready", result, progress: 100 } : it,
),
)
// 保存预览视频 URL 到 plan config,供封面生成使用
if (result.videoUrl && selectedTemplate) {
updateEditPlan(selectedTemplate, {
config: { rendered_storage_key: result.videoUrl } as any,
}).catch((err) => {
console.warn("[Step4] 保存预览视频URL到plan config失败:", err)
})
}
return
}
@@ -30,7 +30,7 @@ export function useStep6Cover({
assetIds = [],
selectedTemplate = "",
}: UseStep6CoverProps) {
const [generating, setGenerating] = useState(false)
const generatingRef = useRef(false)
// ── 封面设置弹窗状态 ──
const [showCoverSettings, setShowCoverSettings] = useState(false)
@@ -67,7 +67,7 @@ export function useStep6Cover({
/** 调用后端智能封面 API,生成封面并更新预览 */
const generateAutoCover = useCallback(async () => {
if (generating) {
if (generatingRef.current) {
message.warning("封面正在生成中,请稍候...")
return
}
@@ -82,17 +82,12 @@ export function useStep6Cover({
return
}
setGenerating(true)
// 超时保护:300 秒后强制重置,防止 state 卡死导致按钮永久失效
const timeoutId = setTimeout(() => {
setGenerating(false)
}, 300000)
generatingRef.current = true
try {
const response = await generateCover(selectedTemplate, {
asset_ids: assetIds,
cover_type: "ai_frame",
})
clearTimeout(timeoutId)
const thumbnailUrl = response.cover?.image_url || ""
if (thumbnailUrl) {
onCoverSettingsChange({
@@ -105,14 +100,12 @@ export function useStep6Cover({
message.warning("封面生成未返回图片,请重试")
}
} catch (err) {
clearTimeout(timeoutId)
console.warn("[Step6] 智能封面生成失败:", err)
message.error("封面生成失败,请稍后重试")
} finally {
clearTimeout(timeoutId)
setGenerating(false)
generatingRef.current = false
}
}, [selectedTemplate, assetIds, coverSettings, onCoverSettingsChange, generating])
}, [selectedTemplate, assetIds, coverSettings, onCoverSettingsChange])
// ── 模板操作方法 ──
const handleSelectTemplate = useCallback((id: string) => {
@@ -172,7 +165,6 @@ export function useStep6Cover({
return {
coverSettings,
generating,
generateAutoCover,
totalDuration,
showCoverSettings,