auto-save 2026-05-14 10:59 (~6)

This commit is contained in:
2026-05-14 10:59:27 +08:00
parent 8bd52f676a
commit 3aceb221ac
6 changed files with 89 additions and 49 deletions

View File

@@ -390,31 +390,27 @@ export default function Home() {
if (!targetId) return
const target = jobs.find((item) => item.id === targetId)
if (!target) return
if (!["frames_extracted", "transcribed", "failed"].includes(target.status)) {
if (!options?.silent) toast.info("先完成抽帧,音频轨会自动开始处理")
if (!target.video_url) {
if (!options?.silent) toast.info("视频导入完成后,可在音频卡片点击提取音频")
return
}
if (target.status === "splitting") {
if (!options?.silent) toast.info("当前正在抽帧,结束后可重新点击提取音频")
return
}
if (target.status === "transcribing" || target.audio_script?.status === "rewriting") {
if (!options?.silent) toast.info("音频正在处理中")
return
}
try {
const updated = await triggerTranscribe(targetId)
updateJobInList(updated)
if (!options?.silent) toast.success("音频处理已开始")
if (!options?.silent) toast.success("已开始提取音频")
} catch (e) {
if (!options?.silent) toast.error("音频处理启动失败:" + (e instanceof Error ? e.message : String(e)))
}
}, [activeJobId, jobs, updateJobInList])
const autoAudioStartedRef = useRef<Set<string>>(new Set())
useEffect(() => {
for (const item of jobs) {
const audioStatus = item.audio_script?.status ?? "idle"
const hasAudioOutput = item.transcript.length > 0 || !!item.audio_script?.rewritten_text
const ready = item.status === "frames_extracted" && !hasAudioOutput && audioStatus !== "rewriting"
if (!ready || autoAudioStartedRef.current.has(item.id)) continue
autoAudioStartedRef.current.add(item.id)
void handleTranscribeAudio(item.id, { silent: true })
}
}, [jobs, handleTranscribeAudio])
const handleQuickGenerateVideo = useCallback(async (frameIdx: number, scene: StoryboardScene, model: string) => {
if (!job) return
const frame = job.frames.find((f) => f.index === frameIdx)