From a9b12507d01c9d8dab7528fed99b30631e0d10f5 Mon Sep 17 00:00:00 2001 From: kang Date: Tue, 19 May 2026 10:43:58 +0800 Subject: [PATCH] feat: add upload replicate mode --- .memory/worklog.json | 7 +++++++ HANDOFF_IMAGE_PIPELINE.md | 15 +++++++-------- RULES.md | 11 +++++++++-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index b16f9df..9398246 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -477,6 +477,13 @@ "type": "session-heartbeat", "message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 3 项未提交变更 · 最近提交:auto-save 2026-05-19 10:35 (+3, ~8, -1)", "files_changed": 3 + }, + { + "ts": "2026-05-19T10:40:30+08:00", + "type": "commit", + "message": "auto-save 2026-05-19 10:40 (+1, ~3)", + "hash": "12159ca", + "files_changed": 4 } ] } diff --git a/HANDOFF_IMAGE_PIPELINE.md b/HANDOFF_IMAGE_PIPELINE.md index a43f1cd..56be03c 100644 --- a/HANDOFF_IMAGE_PIPELINE.md +++ b/HANDOFF_IMAGE_PIPELINE.md @@ -646,14 +646,14 @@ UI 上传图区域要醒目提示: 在 §4 Checklist 之外,额外加: -- [ ] 8.A 上传 API + 存储 `data/uploads/` -- [ ] 8.B `PromptPanel` 改 3-tab:想法 / 二创 / 复刻 -- [ ] 8.C Mode A(二创):multipart + `/images/edits` 批量变体 -- [ ] 8.D Mode B(复刻):跳过批量生图,直接 lock + cleanup -- [ ] 8.E `inferCharacterSpecFromImage` Vision 推断 +- [x] 8.A 上传 API + 存储 `data/uploads/` +- [x] 8.B `PromptPanel` 改 3-tab:想法 / 二创 / 复刻 +- [x] 8.C Mode A(二创):multipart + `/images/edits` 批量变体 +- [x] 8.D Mode B(复刻):跳过批量生图,直接 lock + cleanup +- [x] 8.E `inferCharacterSpecFromImage` Vision 推断 - [ ] 8.F Mode C:上传图 role 标注 UI + `preFilledSlots` 合并 -- [ ] 8.G cleanup 加 `preserveLevel` 参数,复刻模式用 strict -- [ ] 8.H 版权合规提示 UI +- [x] 8.G cleanup 加 `preserveLevel` 参数,复刻模式用 strict +- [x] 8.H 版权合规提示 UI ### 8.11 优先级建议 @@ -1339,4 +1339,3 @@ extra fingers, distorted toy proportions 3 个 slot 跑通了,宣发素材就够发一波。 - diff --git a/RULES.md b/RULES.md index 73cf20d..4f014f1 100644 --- a/RULES.md +++ b/RULES.md @@ -21,7 +21,7 @@ ## 元数据回写清单 - 改公网域名或迁移部署时,更新 `.project.json.urls` + 本节 -- 数据持久化在 `data/`(gitignored),不入库 +- 数据持久化在 `data/`(gitignored),不入库;上传原图在 `data/uploads/` - VPS 数据持久化在 `/opt/ai-toy-patent-workflow/data` - VPS 生产环境变量在 `/opt/ai-toy-patent-workflow/deploy/.env.production`,不入库 @@ -44,6 +44,7 @@ - 不允许编造不存在的部署域名、账号、密码 ## 图像链路事实 +- 输入入口:想法、二创、复刻三段;复刻模式会把上传主体图直接作为 L0 锚图 - L0:用户选中的意向图 - L1:角色锁定时生成的白底净化锚图,写入 `CharacterSpec.cleanReferenceImageUrl` - L2:每个素材包的根图,例如 `patent_front`、`acc_inventory_sheet`、`prod_front_spec`、`mkt_white_front` @@ -51,6 +52,9 @@ - pack 图像生成必须走真实图生图:读取 anchor 图片字节后调用 GPT image edit,不再把参考图 URL 当纯文本拼进 prompt - 单张重做接口:`POST /api/assets/[assetId]/regenerate`,必须沿用该图的 anchor - 视频参考优先级:宣发白底图 `mkt_white_front` → 专利主图 `patent_front` → L1 白底锚图 → L0 意向图 +- 上传 API:`POST /api/uploads`,multipart 图片存入 `data/uploads/`,返回 `UploadedImage` +- 复刻建项目 API:`POST /api/projects/from-upload`,`mode=replicate` 时跳过批量生图,创建 selected L0,Vision 推断 `CharacterSpec`,并用 strict L1 净化 prompt +- 上传图锁定 API:`POST /api/character/lock-from-upload`,用于对上传主体图重新推断并 strict 净化 ## 注意事项 - `data/` 目录会存原图(generated/selected/refs),可能体积大,已 gitignored @@ -58,7 +62,10 @@ - mock 模式仅用于跑通流程,生图质量为零(只是 SVG 笑脸占位) ## 工作流 -1. 输入 prompt + 可选参考图(最多 4 张)+ 风格 + 数量(4/8/12) +1. 输入模式: + - 想法:prompt + 可选参考图(最多 4 张)+ 风格 + 数量(4/8/12) + - 二创:上传参考图 + 变化方向 + 风格 + 数量,生成变体候选 + - 复刻:上传主体图,直接作为 L0 锚图并锁定角色 2. 点 🪄 批量生成 / `⌘/Ctrl+Enter` 3. 九宫格快筛:数字键 `1-9` 选中,`Shift+1-9` 打叉 4. 选中的图自动复制到 `data/selected/`