auto-save 2026-05-14 05:21 (~3)
This commit is contained in:
@@ -3322,6 +3322,19 @@
|
||||
"type": "session-heartbeat",
|
||||
"message": "Claude 会话活跃 · 最近命令:claude · 2 项未提交变更 · 最近提交:auto-save 2026-05-14 05:10 (~3)",
|
||||
"files_changed": 2
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-14T05:16:23+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-14 05:16 (~3)",
|
||||
"hash": "e46289f",
|
||||
"files_changed": 3
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-13T21:18:50Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 3 项未提交变更 · 最近提交:auto-save 2026-05-14 05:16 (~3)",
|
||||
"files_changed": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -618,13 +618,13 @@ api/main.py
|
||||
</div>
|
||||
<div class="flow-row">
|
||||
<div><strong>你看到的区域</strong><span>画面工作台 · Visual Lab</span></div>
|
||||
<div><strong>主要源码</strong><span><code>VisualLabNode</code> in <code>web/components/nodes/index.tsx</code>;它汇总关键帧、元素 cutout 和视频任务缩略图。</span></div>
|
||||
<div><strong>适合怎么描述</strong><span>“画布上只保留一个视觉展示卡片;缩略图 hover 原尺寸预览贴缩略图上边缘,点击再进入镜头处理 / 分镜编排 / 视频任务操作”。</span></div>
|
||||
<div><strong>主要源码</strong><span><code>VisualLabNode</code> in <code>web/components/nodes/index.tsx</code>;它现在是素材准备看板,汇总关键帧、场景图、主体资产包、普通抠图和视频任务。</span></div>
|
||||
<div><strong>适合怎么描述</strong><span>“画面工作台的素材准备进度、分组缩略图、关键帧审核入口和后续分镜入口应该如何组织”。</span></div>
|
||||
</div>
|
||||
<div class="flow-row">
|
||||
<div><strong>你看到的区域</strong><span>元素列表和提取图</span></div>
|
||||
<div><strong>主要源码</strong><span><code>FrameLightbox</code>;类型 <code>KeyElement</code>;接口 <code>addElement/updateElement/deleteElement/cutoutElement/deleteCutout</code>。</span></div>
|
||||
<div><strong>适合怎么描述</strong><span>“Vision 识别出来的是候选,用户要能修正、重复提取、删除错误元素”。</span></div>
|
||||
<div><strong>你看到的区域</strong><span>关键帧素材审核面板</span></div>
|
||||
<div><strong>主要源码</strong><span><code>FrameLightbox</code>;按“原图/清洗、场景图、主体包、审核”四个页签组织;相关接口包括 <code>cleanupFrame</code>、<code>generateSceneAsset</code>、<code>generateSubjectAssets</code>、<code>cutoutElement</code>。</span></div>
|
||||
<div><strong>适合怎么描述</strong><span>“某张关键帧的水印、场景图、主体多视角/动作/表情图和质量风险应该如何审核”。</span></div>
|
||||
</div>
|
||||
<div class="flow-row">
|
||||
<div><strong>你看到的区域</strong><span>顶部分镜头编排下拉面板</span></div>
|
||||
@@ -751,7 +751,7 @@ SubjectAsset {
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="tag violet">画面工作台 Visual Lab</span></td>
|
||||
<td>在一个画布卡片里展示关键帧、元素 cutout、场景图、主体资产包和视频任务状态;点击缩略图进入对应处理面板。关键帧详情面板负责生成场景资产和主体多视角/动作/表情资产。</td>
|
||||
<td>作为素材准备看板:显示准备进度、质量风险、关键帧 / 场景图 / 主体包 / 分镜视频四个入口;上方缩略图按关键帧、场景图、主体包、普通抠图、视频任务分组。点击关键帧进入素材审核面板,点击资产图复制到分镜编排。</td>
|
||||
<td>不要在主卡片里堆复杂表单;主卡片只做状态总览和入口。</td>
|
||||
<td><code>VisualLabNode</code>、<code>FrameLightbox</code>、<code>generateSceneAsset</code>、<code>generateSubjectAssets</code>、视频任务接口</td>
|
||||
</tr>
|
||||
@@ -839,6 +839,18 @@ SubjectAsset {
|
||||
<h2>变更记录</h2>
|
||||
<p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p>
|
||||
<div class="changelog">
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-14 · 画面工作台改为素材准备看板</h3>
|
||||
<span class="tag violet">Visual Lab</span>
|
||||
<span class="tag blue">UX</span>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p><strong>问题:</strong>画面工作台从展示缩略图扩展为素材生产中枢后,关键帧、场景图、主体资产包和视频任务继续混在一个列表里会让流程不清晰;关键帧详情面板也把清洗、识别、场景和主体生成都堆在一屏。</p>
|
||||
<p><strong>改动:</strong><code>VisualLabNode</code> 改成素材准备进度看板,显示目标关键帧、场景图、主体资产和分镜/视频四个入口,并在上方缩略图中按关键帧、场景图、主体包、普通抠图、视频任务分组。<code>FrameLightbox</code> 新增“原图/清洗、场景图、主体包、审核”四个页签,素材审核信息从普通元素列表中拆出来。</p>
|
||||
<p><strong>影响:</strong><code>web/components/nodes/index.tsx</code>、<code>web/components/lightbox.tsx</code>、<code>docs/source-analysis.html</code>。这轮只重排工作台信息架构,批量自动准备队列仍留到下一阶段。</p>
|
||||
</div>
|
||||
</article>
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-14 · 画面工作台增加场景图和主体资产包</h3>
|
||||
|
||||
@@ -763,8 +763,41 @@ export function FrameLightbox({ jobId, frames, activeIndex, selected, onClose, o
|
||||
|
||||
{/* 右侧识别 + 元素清单 */}
|
||||
<div className="flex flex-col gap-2.5 overflow-y-auto flex-1 min-h-0" style={{ minWidth: 240 }}>
|
||||
{activeTab === "clean" && (
|
||||
<section className="rounded-lg border border-cyan-300/15 bg-cyan-500/[0.08] p-3 text-[11px] leading-relaxed text-white/58">
|
||||
<div className="mb-1.5 text-[12.5px] font-semibold text-white">清洗审核</div>
|
||||
先看原图是否有水印、平台 UI、字幕或多余文字。全图清洗会生成待应用版本;如果只想处理局部,切换画框后可多框去水印,也可单框提取成元素。
|
||||
</section>
|
||||
)}
|
||||
{activeTab === "scene" && (
|
||||
<section className="rounded-lg border border-emerald-300/15 bg-emerald-500/[0.08] p-3 text-[11px] leading-relaxed text-white/58">
|
||||
<div className="mb-1.5 text-[12.5px] font-semibold text-white">场景资产规则</div>
|
||||
每张已选关键帧只需要一张主场景图。它用于后续生视频的空间、构图和光线参考;生成后仍需人工确认水印和细节是否被误改。
|
||||
{f.scene_assets?.length ? (
|
||||
<div className="mt-2 grid grid-cols-2 gap-2">
|
||||
{f.scene_assets.slice(-4).map((asset) => (
|
||||
<div key={asset.id} className="overflow-hidden rounded-md border border-white/10 bg-black/35">
|
||||
<img src={apiAssetUrl(asset.url)} alt={asset.label} className="h-24 w-full object-contain" />
|
||||
<div className="px-1.5 py-1 text-[9.5px] font-mono text-white/45">{asset.width}×{asset.height}</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
) : null}
|
||||
</section>
|
||||
)}
|
||||
{activeTab === "review" && (
|
||||
<section className="rounded-lg border border-white/10 bg-white/[0.035] p-3 text-[11px] leading-relaxed text-white/58">
|
||||
<div className="mb-2 text-[12.5px] font-semibold text-white">当前帧状态</div>
|
||||
<div className="space-y-1.5">
|
||||
<div>清洗:{f.cleaned_applied ? "已应用" : hasCleaned ? "待确认" : "未处理"}</div>
|
||||
<div>场景图:{latestSceneAsset ? `${latestSceneAsset.width}×${latestSceneAsset.height}` : "未生成"}</div>
|
||||
<div>普通抠图:{cutoutCount} 张</div>
|
||||
<div>主体资产:{subjectAssetCount} 张</div>
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
{/* 识别 */}
|
||||
<section>
|
||||
<section className={activeTab === "subject" ? "" : "hidden"}>
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<div className="flex items-center gap-1.5 text-white text-[12.5px] font-semibold">
|
||||
<Eye className="h-3.5 w-3.5" />
|
||||
@@ -849,7 +882,7 @@ export function FrameLightbox({ jobId, frames, activeIndex, selected, onClose, o
|
||||
</section>
|
||||
|
||||
{/* 元素清单(持久化) */}
|
||||
<section>
|
||||
<section className={activeTab === "subject" ? "" : "hidden"}>
|
||||
<div className="flex items-center gap-1.5 mb-2 text-white text-[12.5px] font-semibold">
|
||||
<Sparkles className="h-3.5 w-3.5" />
|
||||
元素清单
|
||||
|
||||
Reference in New Issue
Block a user