Files

49 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: T-591
title: ⑥ AI工场主界面、照片池、大图预览与生成控制
phase: 7
deps: [T-588, T-589, T-590]
status: DONE
created: 2026-07-11
---
## 问题 / 背景
需要把已完成的数据、拉图、模板和生成服务接入第六个 Tab。当前视觉口径是 `docs/ui/tab6-ai-studio-v3.svg`:左商品轨、中照片池、右生成设置、底部终选盘;本任务先完成主界面和照片池/生成,不实现终选拖放与导出细节。
## 方案
- 主窗口新增 `⑥ AI工场`,不缩小既有 Tab 可点击区域;更新必要的 routes/架构 UI 文档。
- 左轨支持项目切换/新增,顶部显示当前账号+商品、拉取主图、打开项目文件夹。
- 原主图抽屉异步显示;单击加入池,双击大图。
- 照片池显示原/主/详角标、比例、排队/生成/失败状态;单击设源图、双击大图、右键移除(引用中/任务中禁用并说明)。
- 右侧使用单一提示词框和较窄模板下拉,按钮为新建/重命名/保存/删除;程序不显示“主提示词/每张动作词”label。
- 类型、数量、比例和 cmhub 计费区域按 v3;当前阶段固定使用 cmhub 托管模型,不显示自定义来源、Provider 或 API Key 控件,也不保留可点击的禁用占位。
- 所有网络/CDP/AI/图片解码走 worker/QThread 或异步 Qt API,主线程只更新 UI。
## 验收要点
- 六个 Tab 顺序和中文文案正确,在 1180×760、960×640 及 Windows 缩放下无重叠/截断。
- 任意原图/池图双击打开大图;单击仍执行区域业务动作,不冲突。
- 合并提示词、模板 CRUD、源图选择、N 张生成、停止、进度和逐图失败可用。
- 生成设置只呈现 cmhub 托管模型的点数、余额和实际扣点,不出现生成来源选择。
- 切项目不会串图片/任务/提示词;运行中关键控件禁用并可安全恢复。
- 不存在“导入本地图片”按钮或隐藏入口。
- GUI offscreen 测试覆盖 objectName、布局结构、信号和状态;人工截图与 SVG 对照。
## 边界(不改什么)
- 不实现终选拖放排序(T-592)、导出(T-593)、BYOK、自定义 Provider 或 API Key;自定义模型后置到 T-596。
- 不自动上传蝦皮,不增加本地图片导入。
- 不在 widget 槽函数直接写 SQL 或做网络请求。
## 执行记录
- 2026-07-11:完成 ⑥ AI工场主界面第一版接入。
- 新增 `ImageStudioTab`:主窗口出现第六个 Tab `⑥ AI工场`,包含账号+商品项目入口、项目列表、只读拉主图、原主图抽屉、照片池、大图预览、单一完整提示词框、AI工场模板 CRUD、类型/数量/比例/cmhub 扣点提示、开始生成/停止/进度/日志和底部终选占位。
- 新增 `ImageStudioPullImagesWorker`、`ImageStudioDownloadOriginalWorker`、`ImageStudioGenerateJobsWorker`:拉蝦皮主图、远程原图下载、cmhub 托管多图 submit/poll/download 均走 worker;运行中禁用关键控件,停止为协作式停止。
- `image_studio` 增加照片池移除保护:未被任务/终选引用的资产可从池记录移除但不删除本地文件;被 job/selection 引用时阻断。
- 更新 `docs/routes.md`、`docs/04-architecture.md`、入口/技术栈/README 文档,把主窗口事实改为 6 Tab,并明确 T-591 只做照片池/生成,终选拖放和导出留给 T-592/T-593。
- 补充 GUI/offscreen 与 service 测试:主窗口 6 Tab 顺序、AI工场控件/objectName、无“导入本地图片”入口、模板读取、项目创建、原图/照片池状态展示、照片池移除引用保护。
- 验证:当前主工作区因无关未提交 `app/default_prompts/cover/*` 变动导致全量 unittest 的默认封面模板断言失败;已在干净 worktree 仅套用 T-591 diff 后运行 `python -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`py -3.10 -m unittest discover -s tests`(362 tests)和 `git diff --check`,全部通过。