From fe560d667420fad93a4b114a8fdc0b6d3e9a7fbb Mon Sep 17 00:00:00 2001 From: kang Date: Mon, 18 May 2026 07:33:17 +0800 Subject: [PATCH] auto-save 2026-05-18 07:33 (~4) --- .memory/worklog.json | 14 +++++++------- api/main.py | 2 +- docs/source-analysis.html | 20 +++++++++++++++++--- web/components/ad-recreation-board.tsx | 2 +- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index 167d26d..d9741e9 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -1,12 +1,5 @@ { "entries": [ - { - "files_changed": 2, - "hash": "f590d51", - "message": "auto-save 2026-05-15 17:17 (~2)", - "ts": "2026-05-15T17:17:23+08:00", - "type": "commit" - }, { "files_changed": 5, "hash": "d802701", @@ -3254,6 +3247,13 @@ "type": "session-heartbeat", "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 07:22 (~2)", "files_changed": 4 + }, + { + "ts": "2026-05-18T07:27:45+08:00", + "type": "commit", + "message": "auto-save 2026-05-18 07:27 (~6)", + "hash": "9790e5b", + "files_changed": 6 } ] } diff --git a/api/main.py b/api/main.py index d19efa4..bfb2e3c 100644 --- a/api/main.py +++ b/api/main.py @@ -4190,7 +4190,7 @@ def generate_subject_assets(job_id: str, idx: int, element_id: str, req: Generat + prompt_extra_clause + actor_style_clause + framing_clause - f"Create a high-definition standalone asset on a solid {bg_phrase} background. " + + f"Create a high-definition standalone asset on a solid {bg_phrase} background. " "No extra objects, no props, no additional products, no background elements, no original scene fragments, no shadows from the original scene, no text, no watermark, no UI. " "If the source is incomplete, partially visible, occluded, or low resolution, reconstruct the missing parts by redrawing a clean complete subject while staying consistent with the reference. " "For living standard full-body views, keep a normal upright standing pose; do not create sitting, walking, medical, horror, or distorted anatomy unless explicitly requested by the view label. " diff --git a/docs/source-analysis.html b/docs/source-analysis.html index 69d0dcc..c366c1c 100644 --- a/docs/source-analysis.html +++ b/docs/source-analysis.html @@ -612,6 +612,7 @@ api/main.pyFastAPI 单文件后端:登录会话、状态模型、任务恢复、下载、抽帧、Vision、清洗、元素、分镜、原音频转写/翻译、声音与背景音分析、后续口播改写/TTS、文件返回。 api/product_library/skg-products内置 SKG 白底产品图库:manifest.json 记录从桌面产品图筛出的 gallery 白底图和桌面 4 张产品角度图,images/ 存 45 张参考图。 + api/character_library/skg-characters内置相似主体形象库:从桌面 5 套策划形象导入,manifest.json 记录运动阳光男、都市型男、优雅白领女、运动辣妹、绅士大叔,每套含 7 张透明骨架参考图,用于相似主体高清视图包的创意方向选择。 jobs/<jobId>/state.json运行时状态文件,不在源码列表里,但刷新恢复依赖它。 jobs/<jobId>/audio.wav拆轨得到的原始音频,当前只作为后端分析和后续必要预览的只读文件来源;主界面不再默认渲染底部音频条。 jobs/<jobId>/frames关键帧 jpg。注意 frame.index 是稳定 ID,不等于数组下标。 @@ -626,7 +627,7 @@ web/app/page.tsx -> 信息流广告复刻工作表:web/components/ad-recreation-board.tsx -> 开始:创建/激活 job → 下载完成后自动触发音频处理 - -> 左侧素材输入列 + 右侧默认折叠的文案依据 + 源视频工作区(音频解析结果默认折叠,竖版 9:16 原视频播放器内可当前点抽帧,右侧上方连续响度波形显示当前/总时长/指针停点,右侧下方逐句时间轴联动滚动,参考帧池在下方多列铺开且主入口为“自动抽帧 12 张”,相似主体 6 白底视图生成按钮放在视图区;不勾选帧则默认用全部帧,勾选后只用已选帧) + -> 左侧素材输入列 + 右侧默认折叠的文案依据 + 源视频工作区(音频解析结果默认折叠,竖版 9:16 原视频播放器内可当前点抽帧,右侧上方连续响度波形显示当前/总时长/指针停点,右侧下方逐句时间轴联动滚动,参考帧池在下方多列铺开且主入口为“自动抽帧 12 张”,相似主体高清视图包生成按钮放在视图区;不勾选帧则默认用全部帧,勾选后只用已选帧,可叠加 5 套内置形象) -> 信息流复刻分镜工作台:同一产品素材池不限量上传 → 自动识别视角 / 背景 / 用途 / 风险 → 人工检查备注 → 单条生成自动挑选最多 6 张相关产品图 → 逐句时间轴 → 原内容 / 新口播文案 / 画面规划与产品融入 / 6 个候选视频槽 -> 底部音频条:不再渲染,音频结果集中到右侧工作表 -> 旧节点/深度素材面板:web/components/nodes/index.tsx、web/components/lightbox.tsx、web/components/storyboard-workbench.tsx(底层保留,当前不作为主入口) @@ -650,7 +651,7 @@ api/main.py
你看到的区域音频解析结果表
主要源码AudioIntakePanel / SourceReferenceBuildPanel in web/components/ad-recreation-board.tsx;复用 triggerTranscribeAudioScriptanalyzeJobaddManualFramedeleteFramegenerateSubjectAssets
-
适合怎么描述“竖版原视频尺寸、播放器内当前播放点手动抽帧、自动抽帧 12 张入口、关键帧删除、相似主体 6 白底视图、透明骨架/普通真人主体类型、连续响度波形、逐句时间轴滚动、高亮和跳转联动还需要怎么调整”。
+
适合怎么描述“竖版原视频尺寸、播放器内当前播放点手动抽帧、自动抽帧 12 张入口、关键帧删除、相似主体高清视图包、内置形象选择、透明骨架/普通真人主体类型、连续响度波形、逐句时间轴滚动、高亮和跳转联动还需要怎么调整”。
你看到的区域信息流复刻分镜工作台
@@ -888,7 +889,7 @@ ProductRefStateItem { 应用清洗POST /cleanup/applyapplyCleanedFrame物理覆盖 frames/{idx}.jpg,并备份原图。 元素增改删POST/PATCH/DELETE /elementsaddElement/updateElement/deleteElement让用户修正 Vision 错误,避免候选结果锁死。 元素提取POST /elements/{element_id}/cutoutcutoutElement调用图像模型生成独立白底素材图,每次累积一张 cutout。 - 主体资产包POST /elements/{element_id}/subject-assets
DELETE /elements/{element_id}/subject-assets/{asset_id}generateSubjectAssets
deleteSubjectAsset根据参考帧重新绘制一个统一主体资产包;前端默认把全部关键帧作为 source_frame_indices,如果用户手动选择了关键帧则只传已选帧,后端拼参考板。当前源视频工作区支持 subject_style=transparent_humansubject_style=source_actor 两种相似主体:透明骨架人会保持透明/半透明皮肤包裹可见白色骨架,普通真人会保持正常广告演员方向。两种模式都使用 reconstruction_mode=similar,最多读取 12 张参考帧,生成 6 张白底视图;后端强制使用 gpt-image-2,不再接受前端或环境变量切到其他图片模型,也不做 gpt-image-1.5 / Gemini fallback;后端会加身份锁定约束,统一性别表现、年龄段、体型、材质、风格和视觉身份,避免六视图混成不同人物。如果参考帧是竖屏,prompt 会明确要求竖版 9:16 风格画布,落盘也按源帧纵横比归一化。前端白底视图缩略图和关键帧一样,鼠标停留会用顶层浮层放大预览,点击仍打开原图;后端每个 view 单独调用一次生图,并明确禁止六视图拼图、contact sheet、多主体、多面板、标签或对比排版,保证一个视角一张照片。replace_views=true 时会替换同一视角旧图;删除接口会移除对应 subject asset 记录并删除本地 jpg 文件。 + 主体资产包POST /elements/{element_id}/subject-assets
DELETE /elements/{element_id}/subject-assets/{asset_id}generateSubjectAssets
deleteSubjectAsset根据参考帧和可选内置形象重新绘制一个统一主体资产包;前端默认把全部关键帧作为 source_frame_indices,如果用户手动选择了关键帧则只传已选帧,也可传 character_id 选择 5 套内置透明骨架形象之一。当前源视频工作区支持 subject_style=transparent_humansource_actor 两种相似主体:透明骨架人会保持透明/半透明皮肤包裹可见白色骨架,普通真人会保持正常广告演员方向。两种模式都使用 reconstruction_mode=similar,后端最多把 10 张参考图作为独立 image[] 提交给 gpt-image-2,生成默认 10 张 2048 高清白底图:正面、左右 45、左右侧、背面、肩颈正/左右近景、后颈肩背特写。Prompt 明确这是肩颈按摩设备视频素材,要求脖颈、锁骨、肩线、上背和肩胛区域清晰无遮挡;内置形象只作为创意方向,不照抄。后端强制使用 gpt-image-2,不再接受前端或环境变量切到其他图片模型,也不做图片模型 fallback;后端会加身份锁定约束,统一性别表现、年龄段、体型、材质、风格和视觉身份,避免整套图混成不同人物。如果参考帧是竖屏,prompt 会明确要求竖版 9:16 风格画布,落盘也按源帧纵横比归一化。前端白底视图缩略图和关键帧一样,鼠标停留会用顶层浮层放大预览,点击仍打开原图;后端每个 view 单独调用一次生图,并明确禁止多视图拼图、contact sheet、多主体、多面板、标签或对比排版,保证一个视角一张照片。replace_views=true 时会替换同一视角旧图;删除接口会移除对应 subject asset 记录并删除本地 jpg 文件。 首尾帧资产POST /frames/{idx}/scene-assetgenerateSceneAsset同一接口兼容旧场景图和新首尾帧;新流程传 asset_role=first_frame/last_frame,后端走文字生图,参考帧只用于理解透明骨架人形象、比例、机位和光线,生成结果仍保存在 scene_assets 并自动填入产品融合镜头。 产品图库GET /product-library/skglistProductLibrary读取内置 SKG 白底图库 manifest,返回产品标题、品类、尺寸、白底评分和预览图 URL。 产品图入库到 jobPOST /jobs/{id}/assetsPOST /jobs/{id}/assets/product-libraryuploadStoryboardAssetcopyProductLibraryAsset上传产品图或把内置产品图库条目复制为当前 job 的普通 asset。后端统一生成最长边 1600px、JPEG 92 的 AI 工作副本,透明底铺白,过大/过小图片会在 ImageRef.asset_meta 里返回转换动作和风险;黑底/白底背景本身不强行转换。注意该接口只写图片文件,产品素材池列表另由 PUT /jobs/{id}/product-refs 持久化。 @@ -1004,6 +1005,19 @@ ProductRefStateItem {

变更记录

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

+
+
+

2026-05-18 · 相似主体升级为内置形象 + 肩颈高清视图包

+ API + UI + Workflow +
+
+

问题:相似主体仍按“6 视图”理解,只覆盖全身角度;肩颈按摩设备需要更清晰的脖颈、肩线、后颈和上背特写。桌面已有 5 套策划好的透明骨架形象,但主工作表没有提供内置形象选择。

+

改动:SourceReferenceBuildPanel 在“相似主体白底视图”中加入 5 套内置形象选择,默认仍可走源视频相似,选择内置形象后把 character_id 传给 generateSubjectAssets。主体生成默认请求 10 张 2048 高清图,包含全身多视角、肩颈正/左右近景和后颈肩背特写。后端不再把主体多参考图拼成参考板,而是把内置形象图和关键帧作为独立 image[] 交给 gpt-image-2,并在 prompt 中明确“创新变体,不照抄”。

+

影响:api/main.pyweb/lib/api.tsweb/components/ad-recreation-board.tsxRULES.mddocs/source-analysis.html。后续描述这个功能时应叫“相似主体高清视图包”,不要再只说 6 视图。

+
+

2026-05-18 · 产品视角识别切到 gpt-image-2 并重做补图参考选择

diff --git a/web/components/ad-recreation-board.tsx b/web/components/ad-recreation-board.tsx index 21fe242..712e87e 100644 --- a/web/components/ad-recreation-board.tsx +++ b/web/components/ad-recreation-board.tsx @@ -3165,7 +3165,7 @@ function StoryboardSegmentCard({
onGenerateElement()}> {busy ? : } - 提取+6视图 + 提取+高清视图