Files
cmshoppe/docs/tasks/T-591.md
T

49 lines
3.9 KiB
Markdown
Raw Normal View History

---
id: T-591
title: ⑥ AI工场主界面、照片池、大图预览与生成控制
phase: 7
deps: [T-588, T-589, T-590]
2026-07-11 14:16:11 +08:00
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 14:16:11 +08:00
- 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`,全部通过。