diff --git a/docs/tasks/T-622.md b/docs/tasks/T-622.md new file mode 100644 index 0000000..84e84c2 --- /dev/null +++ b/docs/tasks/T-622.md @@ -0,0 +1,66 @@ +--- +id: T-622 +title: ⑥用「商品套图」模块替换现有 AI工场(迁移电商图生成器套餐模块) +phase: 7 +deps: [T-564] +status: TODO +created: 2026-07-13 +--- + +## 问题 / 背景 + +顾客不满意最新代码里的 ⑥「AI工场」模块(现有原生 PySide6 实现,后端表 `image_studio_*`)。要求把 `/mnt/d/chengma/虾皮圈电商图生成器源码` 项目里的「商品套图(商品套餐)」模块交互迁移过来,替换现有 ⑥「AI工场」。 + +已核实的现状事实(落地依据,来自读码): + +- cmshopee **全原生 PySide6**,未引入 `QtWebEngine / QWebChannel`;迁移源是 QWebChannel + WebView 单页应用(`web/index.html` + `web/app.js` + `web/style.css`)。 +- 现有 ⑥「AI工场」后端分层已完整,可复用:`app/image_studio.py`(领域 Project/Asset/Job/Selection)、`app/image_studio_generation.py`(异步生图)、`app/image_studio_export.py`(导出)、`app/image_studio_images.py`(图片处理)、`app/image_paths.py`;DB 表 `image_studio_projects/assets/jobs/selections`(`app/db.py:293+`);提示词目录 `data/prompts/image_studio/`(`app/appconfig.py:256`)。 +- 现有 AI工场 **project 强绑定「账号别名 + 商品ID」**(`app/image_studio.py:148`「缺少账号别名」、`:291`「缺少商品ID」)——顾客不满的是交互/UI,后端契约(绑账号+商品ID、异步生图)保留。 +- 异步生图已接:`POST /api/v1/generate/image/tasks` + `Idempotency-Key` + `task_id` 轮询(`app/ai.py:1104+`,T-564 已落地)。 + +UI 已定稿:`docs/ui/tab6-suite-package-v1.svg`(本仓库家风:`#2b3a55` 头栏 / `#2f6fed` 蓝 / 微软雅黑;已在 `docs/ui/README.md` 登记)。 + +## 需求定稿(以 SVG 为准) + +**整体** +- ⑥ 单一图片类型(**去掉「详情图」**,与套图合并;详情类目可用「自定义分类」加回)。 +- 保留**多任务并行**(顶部「套图任务 1 / 2 / +」标签,互不阻塞)。 +- **顶部上下文条**:`账号` 下拉 + `商品ID` 输入 + `拉取蝦皮主图` 按钮(右靠、与「打开文件夹」同右边缘);每个套图任务绑定一个账号+商品ID,切换任务随之切换。 +- 采用**原生 PySide6 重写 UI**,复用上述 `image_studio_*` 后端与异步生图管线;**不引入 QtWebEngine**。 + +**左侧配置面板(可滚动区 + 底部固定按钮)** +- 商品原图上传:两行共 **6 张缩略图**(主图 / 参考1..5)+ 添加;支持点击/拖拽/粘贴,或「拉取蝦皮主图」带入;第 1 张为主图,最多 16 张。 +- 生成设置:**4 个可切换下拉**(平台=Shopee / 国家地区=中国台湾 / 语言=繁体中文 / 比例=1:1),**不显示 label**(靠位置辨识);+ 复选框「每张上传图分别作为主图生成」。 + - 平台/国家/语言当前后端为固定单值,做成下拉是为将来多平台扩展;**选中值须透传进生成提示词上下文**,不得只做装饰。 +- 商品卖点与要求:多行输入框(较高)+「✧ AI 帮写」按钮。 +- 套图结构配置:默认仅 **3 类**「白底图 / 场景图 / 卖点图」,各带 `− 数量 +` 计数器;`+ 添加自定义分类`(可改名 / 删除)。 +- 底部固定「▶ 生成套图(N)」按钮(**在滚动区外,不随滚动**);点击后**同一按钮切换为「■ 停止生成」**(建议危险色);**取消独立「停止」按钮**。按钮下方 label:`建议填写产品名称、核心卖点、目标人群、使用场景与禁用元素`。 +- 除「生成套图」按钮外,其余组件同属一个**竖直滚动区**。 + +**右侧结果区** +- 工具栏:`生成结果` + `共 N 张·成功 M 张` 徽标 + `历史生成` + `打开文件夹`。 +- 结果网格:每张卡片显示图片/生成中骨架/失败(带「重试」);右键单图可 预览 / 复制路径 / 重新生成。 +- 底部一行(与左侧「生成套图」按钮同高):进度条 + `套图 X/Y(秒)· 失败 N` 汇总。 + +## 待决 / 选型(实现前确认) + +1. **技术栈**:推荐**原生 PySide6 重写 UI**、复用现有 `image_studio_*` 后端;已排除内嵌 WebView(避免 QtWebEngine 打包体积与依赖)。若坚持搬 WebView 需另评估。 +2. 平台/国家/语言下拉的选中值如何进入生成上下文(提示词模板变量 or 生成请求参数),需与 `image_studio_generation` 对齐。 +3. 效果图当前为「滚动区裁剪」呈现;如需一屏展示全部配置项,属实现期布局细节。 + +## 验收要点 + +- ⑥ 标签由「AI工场」交互替换为「商品套图」布局,功能对齐 SVG;旧 AI工场入口不再暴露。 +- 顶部账号+商品ID 生效:切换任务/账号/商品ID 正确带入;「拉取蝦皮主图」把线上主图拉进「商品原图」。 +- 套图结构 3 类默认 + 自定义分类增删改;数量计数正确,合计张数与「生成套图(N)」一致。 +- 生成走异步管线(复用 T-564):提交→轮询→逐张落盘;单张失败可重试;「生成⇄停止」toggle 正常;多任务并行互不阻塞。 +- 平台/国家/语言/比例选中值确实进入生成上下文(非装饰)。 +- 复用现有 `image_studio_*` 表与目录,不新造并行后端;不引入 QtWebEngine。 +- 验证:`py -3.10 -m unittest`(相关模块)、`python -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check` 全绿。 + +## 边界(不改什么) + +- 不改动 `image_studio.py / image_studio_generation.py / image_studio_export.py` 的后端数据契约与异步生图协议(仅按需扩展字段)。 +- 不动 ①~⑤ 既有标签与流程。 +- 不引入 `QtWebEngine`(采纳原生重写方案时)。 +- 安全红线:不写真实凭证到代码/文档/日志;`config.json`、`cmshopee.db`、`images/` 等不提交;不绕过 Shopee 风控;生成/导出等本地操作不触碰 ③ 的线上提交边界。 diff --git a/docs/ui/README.md b/docs/ui/README.md index bfb165b..dbc4423 100644 --- a/docs/ui/README.md +++ b/docs/ui/README.md @@ -14,5 +14,6 @@ | [tab6-image-studio.svg](tab6-image-studio.svg) | ⑥ 图片精修(提案·初版):商品列表、原主图九宫、照片池、生成控制、终选排序 | | [tab6-image-studio-v2.svg](tab6-image-studio-v2.svg) | ⑥ 图片精修(提案·重排):细图标轨、照片池放大、提示词中心整列、全宽出片盘 | | [tab6-ai-studio-v3.svg](tab6-ai-studio-v3.svg) | ⑥ AI工场(需求定稿·v3):合并提示词、完整模板 CRUD、异步任务照片池、部分导出与终选排序 | +| [tab6-suite-package-v1.svg](tab6-suite-package-v1.svg) | ⑥ 商品套图(迁移提案·v1):从「虾皮圈电商图生成器」商品套餐模块迁移,替换 AI工场;已去掉「详情图」(与套图合并为单一图片类型)。采用本仓库既有模块风格(#2b3a55 头栏 / #2f6fed 蓝 / 微软雅黑)。多任务标签页、左侧配置面板(商品原图上传、生成设置、AI 帮写、套图结构配置:白底/场景/模特/细节/卖点+自定义分类计数)、右侧生成结果网格、底部进度与生成/停止 | > 仅为线框效果图,最终样式以实现为准。带 `-T584`/`-v2` 等后缀的为**改版提案**,未定稿。界面职责与流程见 [../routes.md](../routes.md)。 diff --git a/docs/ui/tab6-suite-package-v1.svg b/docs/ui/tab6-suite-package-v1.svg new file mode 100644 index 0000000..069b863 --- /dev/null +++ b/docs/ui/tab6-suite-package-v1.svg @@ -0,0 +1,167 @@ + + + + + + + + + + 蝦皮圈優化助手 · 商品套图生成 + + + + + + ① 导入采集 + ② AI生成 + ③ 更新蝦皮 + ④ 账号管理 + ⑤ 设置 + ⑥ 商品套图 + + + + 套图任务 1× + + 套图任务 2× + + + + 账号 + 女装店▾ + 商品ID + 51100639510 + 拉取蝦皮主图 + + + + + + + + + 商品原图 + 6 / 16 + + + 主图 + + 参考1 + + 参考2 + + +添加 + + + 参考3 + + 参考4 + + 参考5 + 点击 / 拖拽 / 粘贴,或「拉取蝦皮主图」带入;第 1 张为主图,最多 16 张 + + + 生成设置 + Shopee▾ + 中国台湾▾ + 繁体中文▾ + 1:1▾ + + 每张上传图分别作为主图生成 + + + 商品卖点与要求 + ✧ AI 帮写 + + 降噪蓝牙耳机,40 小时续航,亲肤皮革 + 耳罩,适合通勤与办公场景… + + + 套图结构配置 + 合计 5 张 + + + 白底图 + −1+ + + 场景图 + −2+ + + 卖点图 + −2+ + + + + 添加自定义分类(可改名 / 删除) + + + + + + + + + ▶ 生成套图(5) + 建议填写产品名称、核心卖点、目标人群、使用场景与禁用元素 + + + + + + 生成结果 + 共 5 张 · 成功 3 张 + 历史生成 + 打开文件夹 + + + + + + + 白底图× + + + + 场景图 1× + + + + 生成中… + 场景图 2 + + + + ! + 重试 + 卖点图 1 + + + + + 卖点图 2× + + + + 右键单图:预览 / + 复制路径 / 重新生成 + + + + + + 套图 4 / 5(38 秒)· + 失败 1 + 每张完成即落盘 · 失败可单张重试 + +