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

@@ -2109,7 +2109,19 @@ export function AudioNode({ data, selected }: any) {
const voiceUrl = apiAssetUrl(audioScript?.voice_url)
const hasASR = transcript.length > 0
const isRewriting = audioScript?.status === "rewriting"
const canTriggerAudio = !!job && ["frames_extracted", "transcribed", "failed"].includes(job.status) && !isRewriting && job.status !== "transcribing"
const hasVideo = !!job?.video_url
const isAudioBusy = !!job && (job.status === "transcribing" || isRewriting)
const isVisualBusy = !!job && job.status === "splitting"
const audioButtonDisabled = !job || !hasVideo || isAudioBusy || isVisualBusy
const audioButtonLabel = !hasVideo
? "等待视频就绪"
: isAudioBusy
? "正在提取音频"
: isVisualBusy
? "抽帧中,稍后提取"
: hasASR || rewrittenText
? "重新提取音频"
: "提取音频"
const originalPreview = transcript
.slice(0, 2)
.map((s) => (s.zh || s.en).trim())
@@ -2139,17 +2151,25 @@ export function AudioNode({ data, selected }: any) {
{audioScript?.rewrite_model || "AUDIO_REWRITE_MODEL"} {audioScript?.voice_model || "MiniMax T2A"}
</span>
</div>
{canTriggerAudio && (
{job && (
<button
type="button"
disabled={audioButtonDisabled}
onClick={(e) => {
e.stopPropagation()
if (audioButtonDisabled) return
void d.onTranscribeAudio?.(job.id)
}}
className="inline-flex min-h-8 w-full items-center justify-center gap-1.5 rounded-md border border-violet-300/25 bg-violet-400/10 px-2.5 py-1.5 text-[11px] font-medium text-[var(--text-strong)] transition hover:border-violet-200/45 hover:bg-violet-400/18"
className="inline-flex min-h-8 w-full items-center justify-center gap-1.5 rounded-md border border-violet-300/25 bg-violet-400/10 px-2.5 py-1.5 text-[11px] font-medium text-[var(--text-strong)] transition hover:border-violet-200/45 hover:bg-violet-400/18 disabled:cursor-not-allowed disabled:border-white/10 disabled:bg-white/[0.03] disabled:text-[var(--text-faint)]"
>
{hasASR || rewrittenText ? <RotateCcw className="h-3.5 w-3.5" /> : <PlayCircle className="h-3.5 w-3.5" />}
{hasASR || rewrittenText ? "重新处理音频" : "开始音频处理"}
{isAudioBusy ? (
<Loader2 className="h-3.5 w-3.5 animate-spin" />
) : hasASR || rewrittenText ? (
<RotateCcw className="h-3.5 w-3.5" />
) : (
<PlayCircle className="h-3.5 w-3.5" />
)}
{audioButtonLabel}
</button>
)}
{(originalPreview || rewrittenText) && (