From 40a665a578308443a5599d038a522f852eb12227 Mon Sep 17 00:00:00 2001 From: kang Date: Wed, 13 May 2026 20:18:24 +0800 Subject: [PATCH] auto-save 2026-05-13 20:18 (~4) --- .memory/worklog.json | 7 +++ api/main.py | 2 +- docs/source-analysis.html | 12 ++++ web/components/nodes/index.tsx | 101 ++++++++++++++++++++++++++++----- 4 files changed, 106 insertions(+), 16 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index 203133f..332f0ef 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -2288,6 +2288,13 @@ "type": "session-heartbeat", "message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-13 20:07 (~5)", "files_changed": 1 + }, + { + "ts": "2026-05-13T20:12:54+08:00", + "type": "commit", + "message": "auto-save 2026-05-13 20:12 (~5)", + "hash": "0b6a463", + "files_changed": 5 } ] } diff --git a/api/main.py b/api/main.py index e1ee66f..ed89673 100644 --- a/api/main.py +++ b/api/main.py @@ -199,7 +199,7 @@ def run(cmd: list[str], cwd: Path | None = None) -> str: # ---- 启发式选帧工具 ---- import imagehash import numpy as np -from PIL import Image +from PIL import Image, ImageEnhance, ImageFilter, ImageOps def _sharpness(img_path: Path) -> float: diff --git a/docs/source-analysis.html b/docs/source-analysis.html index 7c9b347..df84892 100644 --- a/docs/source-analysis.html +++ b/docs/source-analysis.html @@ -830,6 +830,18 @@ api/main.py

变更记录

这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。

+
+
+

2026-05-13 · 分镜编排增加快速生成视频任务

+ StoryboardWorkbench + VideoGenNode +
+
+

问题:4 图槽已经粘贴参考图后,用户需要快速交付可用于视频生成的 prompt,并在 Video Gen 节点看到结果承载。

+

改动:分镜编排明细区增加“快速生成视频”按钮,自动根据 4 图槽、时长和改造目标生成 SKG 产品视频 prompt;生成的任务卡展示在 VideoGenNode 上方,hover 可查看大图和 prompt,点击卡片复制 prompt。

+

影响:web/components/storyboard-workbench.tsxweb/components/nodes/index.tsxweb/app/page.tsxweb/lib/api.ts。当前是前端快速交付承载,后续接 Seedance / Kling / Veo 3 时替换为真实视频 URL。

+
+

2026-05-13 · 分镜编排下拉区支持上推缩小

diff --git a/web/components/nodes/index.tsx b/web/components/nodes/index.tsx index dbe5f9b..1de6f46 100644 --- a/web/components/nodes/index.tsx +++ b/web/components/nodes/index.tsx @@ -941,23 +941,94 @@ export function StoryboardNode({ data, selected }: any) { /* ============================================================ 9. VideoGenNode (placeholder) ============================================================ */ -export function VideoGenNode({ selected }: any) { +export function VideoGenNode({ data, selected }: any) { + const d: NodeData = data + const drafts = d.videoDrafts ?? [] + const status: NodeStatus = drafts.length > 0 ? "done" : "pending" + const aspect = d.job && (d.job.width ?? 0) > 0 && (d.job.height ?? 0) > 0 + ? `${d.job.width}/${d.job.height}` + : "9/16" return ( - } - title="生成视频 · Video Gen" - subtitle="STEP 7 · 首帧 + 动作 prompt" - selected={selected} - > -
- {["Seedance", "Kling", "Veo 3"].map((m) => ( -
- {m} +
+ {drafts.length > 0 && ( +
+ {drafts.slice(0, 6).map((v, i) => ( +
+ +
+
+
+ +
+
+
+ {v.label} + {v.provider} +
+
+ {v.prompt} +
+
+
+
+
+ ))} +
+ )} + } + title="生成视频 · Video Gen" + subtitle={`STEP 7 · 首帧 + 动作 prompt${drafts.length > 0 ? ` · ${drafts.length} 个任务` : ""}`} + selected={selected} + > +
+ {["Seedance", "Kling", "Veo 3"].map((m) => ( +
+ {m} +
+ ))} +
+ {drafts.length > 0 && ( +
+ 已生成 {drafts.length} 条视频 prompt · 点上方卡片复制
- ))} -
- + )} + +
) }