auto-save 2026-05-14 06:11 (~6)

This commit is contained in:
2026-05-14 06:11:29 +08:00
parent 2b546168f7
commit 871ced6d2d
6 changed files with 225 additions and 82 deletions

View File

@@ -1257,18 +1257,6 @@ export function VisualLabNode({ data, selected }: any) {
borderClass: f.quality_report?.risk === "bad" ? "border-rose-300/70" : f.quality_report?.risk === "warn" ? "border-amber-300/70" : "border-orange-300/50",
aspect,
})) : []),
...sceneAssets.map((p) => ({
id: `scene:${p.frameIdx}:${p.assetId}`,
kind: "scene" as const,
group: "场景图",
frameIdx: p.frameIdx,
assetId: p.assetId,
src: p.src,
label: p.label,
caption: `${p.width}×${p.height}`,
borderClass: p.risk === "bad" ? "border-rose-300/70" : p.risk === "warn" ? "border-amber-300/70" : "border-emerald-300/60",
aspect: p.width && p.height ? `${p.width}/${p.height}` : aspect,
})),
...subjectAssets.map((p) => ({
id: `subject:${p.frameIdx}:${p.assetId}`,
kind: "subject" as const,
@@ -1281,6 +1269,18 @@ export function VisualLabNode({ data, selected }: any) {
borderClass: "border-violet-300/65",
aspect: p.width && p.height ? `${p.width}/${p.height}` : "1/1",
})),
...sceneAssets.map((p) => ({
id: `scene:${p.frameIdx}:${p.assetId}`,
kind: "scene" as const,
group: "场景图",
frameIdx: p.frameIdx,
assetId: p.assetId,
src: p.src,
label: p.label,
caption: `${p.width}×${p.height}`,
borderClass: p.risk === "bad" ? "border-rose-300/70" : p.risk === "warn" ? "border-amber-300/70" : "border-emerald-300/60",
aspect: p.width && p.height ? `${p.width}/${p.height}` : aspect,
})),
...videos.map((v, i) => {
const videoSrc = apiAssetUrl(v.url)
const posterSrc = apiAssetUrl(v.poster_url)
@@ -1556,19 +1556,6 @@ export function VisualLabNode({ data, selected }: any) {
</div>
<div></div>
</button>
<button
type="button"
onClick={(e) => { e.stopPropagation(); openFirstFrame() }}
disabled={!job || frames.length === 0}
className="min-h-14 rounded-md border border-white/10 px-2 py-2 text-left transition hover:border-emerald-300/50 hover:bg-emerald-400/10 disabled:opacity-35"
title="生成 / 审核每张关键帧的场景图"
>
<div className="mb-1 flex items-center gap-1 text-[var(--text-strong)] text-[12px] font-semibold">
<Sparkles className="h-3 w-3 text-emerald-300" />
{sceneAssetCount}/{targetFrameCount}
</div>
<div></div>
</button>
<button
type="button"
onClick={(e) => { e.stopPropagation(); openFirstFrame() }}
@@ -1582,6 +1569,19 @@ export function VisualLabNode({ data, selected }: any) {
</div>
<div></div>
</button>
<button
type="button"
onClick={(e) => { e.stopPropagation(); openFirstFrame() }}
disabled={!job || frames.length === 0}
className="min-h-14 rounded-md border border-white/10 px-2 py-2 text-left transition hover:border-emerald-300/50 hover:bg-emerald-400/10 disabled:opacity-35"
title="基于主体资产生成去主体 / 相似 / 换风格场景图"
>
<div className="mb-1 flex items-center gap-1 text-[var(--text-strong)] text-[12px] font-semibold">
<Sparkles className="h-3 w-3 text-emerald-300" />
{sceneAssetCount}/{targetFrameCount}
</div>
<div></div>
</button>
<button
type="button"
onClick={(e) => { e.stopPropagation(); d.onOpenWorkbench?.(frames.find((f) => d.selectedFrames.has(f.index))?.index ?? frames[0]?.index) }}
@@ -1599,10 +1599,10 @@ export function VisualLabNode({ data, selected }: any) {
<div className="mt-2 text-[10.5px] leading-snug text-[var(--text-faint)]">
{frames.length > 0 ? (
<>
{cleanedCount} · {sceneAssetCount} · {subjectAssetCount} · {targetFrameCount} · {completedVideos.length}
{cleanedCount} · {subjectAssetCount} · {sceneAssetCount} · {targetFrameCount} · {completedVideos.length}
</>
) : (
"解析后这里变成素材准备看板:先审关键帧,再生成场景图和主体资产包。"
"解析后这里变成素材准备看板:先审关键帧,再生成主体资产包和去主体场景图。"
)}
</div>
</NodeShell>
@@ -1771,7 +1771,7 @@ export function KeyframeNode({ data, selected }: any) {
<span className={elementsCount > 0 ? "text-violet-300/90 font-medium" : ""}>{elementsCount} </span>
<br />
<span className="text-[10.5px] text-[var(--text-faint)]">
/ SKG
/ SKG
</span>
</div>
)