auto-save 2026-05-13 13:53 (+1, ~4)

This commit is contained in:
2026-05-13 13:54:10 +08:00
parent 2d297ecdc1
commit 41fe9a8b1a
5 changed files with 195 additions and 4 deletions

View File

@@ -15,6 +15,7 @@ import {
import { ThemeToggle } from "@/components/theme-toggle"
import { Dashboard, type DashboardHandle } from "@/components/dashboard"
import { StoryboardBar } from "@/components/storyboard-bar"
import { StoryboardEditor } from "@/components/storyboard-editor"
import { addManualFrame, analyzeJob, createJob, getJob, uploadJob, deleteFrame, deleteGeneratedImage, type Job } from "@/lib/api"
import { VideoLightbox } from "@/components/video-lightbox"
@@ -65,6 +66,7 @@ export default function Home() {
const [selectedFrames, setSelectedFrames] = useState<Set<number>>(new Set())
const [expandedFrame, setExpandedFrame] = useState<number | null>(null)
const [videoLightboxOpen, setVideoLightboxOpen] = useState(false)
const [storyboardFrame, setStoryboardFrame] = useState<number | null>(null)
const dashboardRef = useRef<DashboardHandle>(null)
// 把 setJob(prev=>...) 翻译成 setJobs 里更新当前 active
@@ -259,6 +261,7 @@ export default function Home() {
onOpenPanel: (key: string) => dashboardRef.current?.openPanel(key),
onDeleteFrame: handleDeleteFrame,
onDeleteGenerated: handleDeleteGenerated,
onOpenStoryboard: (idx: number) => setStoryboardFrame(idx),
}), [job, jobs, activeJobId, submitting, analyzing, selectedFrames, expandedFrame, handleSubmit, handleUpload, handleAnalyze, handleToggleFrame, handleAddManualFrame, handleSwitchJob, setJob, handleDeleteFrame, handleDeleteGenerated])
// 用 useNodesState 让 ReactFlow 自己管位置(避免轮询时重置 drag
@@ -323,7 +326,7 @@ export default function Home() {
<StoryboardBar
job={job}
selectedFrames={selectedFrames}
onExpandFrame={setExpandedFrame}
onOpenStoryboard={setStoryboardFrame}
/>
<div className="relative flex-1 min-h-0">
<ReactFlow
@@ -357,6 +360,13 @@ export default function Home() {
onClose={() => setVideoLightboxOpen(false)}
onAddFrame={handleAddManualFrame}
/>
{/* 分镜头编排专属面板 — imagegen 节点 / storyboard bar 缩略图点击进入 */}
<StoryboardEditor
job={job}
frameIndex={storyboardFrame}
onClose={() => setStoryboardFrame(null)}
/>
</main>
</>
)