auto-save 2026-05-13 20:51 (~7)

This commit is contained in:
2026-05-13 20:51:23 +08:00
parent 700fa24992
commit a8d09010b6
7 changed files with 102 additions and 11 deletions

View File

@@ -16,9 +16,9 @@ import { ThemeToggle } from "@/components/theme-toggle"
import { StoryboardBar } from "@/components/storyboard-bar"
import { StoryboardWorkbench } from "@/components/storyboard-workbench"
import {
addManualFrame, analyzeJob, createJob, getJob, uploadJob, deleteFrame, deleteGeneratedImage,
addManualFrame, analyzeJob, createJob, getHealth, getJob, uploadJob, deleteFrame, deleteGeneratedImage,
deleteGeneratedVideo, generateStoryboardVideo,
type Job, type ImageRef, type StoryboardScene,
type BackendHealth, type Job, type ImageRef, type StoryboardScene,
} from "@/lib/api"
import { VideoLightbox } from "@/components/video-lightbox"
@@ -77,6 +77,7 @@ export default function Home() {
const [storyboardFrame, setStoryboardFrame] = useState<number | null>(null)
const [workbenchOpen, setWorkbenchOpen] = useState(false)
const [clipboard, setClipboard] = useState<ImageRef | null>(null)
const [backendHealth, setBackendHealth] = useState<BackendHealth | null>(null)
const flowRef = useRef<any>(null)
// 把 setJob(prev=>...) 翻译成 setJobs 里更新当前 active
@@ -228,6 +229,10 @@ export default function Home() {
const handleQuickGenerateVideo = useCallback(async (frameIdx: number, scene: StoryboardScene, model: string) => {
if (!job) return
if (backendHealth?.models?.video_configured === false) {
toast.error("当前 SKG ezlink 未开通生视频端点,不能提交视频任务")
return
}
const frame = job.frames.find((f) => f.index === frameIdx)
if (!frame) return
@@ -265,7 +270,13 @@ export default function Home() {
} catch (e) {
toast.error("提交视频失败:" + (e instanceof Error ? e.message : String(e)))
}
}, [job, setJob])
}, [job, setJob, backendHealth?.models?.video_configured])
useEffect(() => {
getHealth()
.then(setBackendHealth)
.catch(() => setBackendHealth(null))
}, [])
// URL ?job=xxx,yyy 自动恢复多个 job
useEffect(() => {
@@ -487,6 +498,7 @@ export default function Home() {
onJobUpdate={setJob as any}
clipboard={clipboard}
focusedFrame={storyboardFrame}
videoConfigured={backendHealth?.models?.video_configured}
onGenerateVideo={handleQuickGenerateVideo}
/>
</div>