feat(product-suite): add original image batch management

This commit is contained in:
chengma
2026-07-14 15:35:59 +08:00
parent 21d2dd5253
commit e86b9189ab
8 changed files with 759 additions and 37 deletions
+12 -1
View File
@@ -3,7 +3,7 @@ id: T-631
title: 商品套图原图自适应展示与批量选择删除
phase: 7
deps: [T-627]
status: TODO
status: DONE
created: 2026-07-14
---
@@ -95,3 +95,14 @@ created: 2026-07-14
- 不修改 cmhub 生图提交、轮询、下载、并发、重试或计费逻辑,不修改生成结果/历史结果删除语义。
- 不把原图勾选状态持久化,不新增 SQLite 字段;只扩展现有图片资产服务的事务级批量操作。
- 不修改①~⑤模块 UI,不修改主窗口全局样式。
## 执行记录
- 2026-07-14 完成。
- ⑥商品原图列表已关闭横向/纵向内部滚动条,按当前可用宽度、固定缩略图尺寸和最多16张原图动态计算行数与高度;最少6个展示位保持不变,图片区自然向下展开并由外层 `suiteConfigScroll` 统一滚动。
- 每张真实原图通过自定义 delegate 显示独立复选框,添加占位图不参与选择。标题栏新增「已选 N 张 / 全选 / 反选」;普通刷新和拖拽排序按 `asset_id` 保留勾选,任务切换及删除成功后清空。复选框点击不会触发下载或预览,缩略图单击、双击、拖拽和悬停单张删除保持原语义。
- 右键菜单和 Delete/Backspace 已统一支持单张或勾选集合删除。确认框显示准确数量,包含主图变化、本地源文件保留、蝦皮线上图片不删除及重新拉取可能恢复的说明;生成中或任一选中图片仍在后台下载时整批阻断。
- `app/image_studio.py` 新增 `remove_original_assets_if_unused()`:一次校验项目、原图类型、job/终选引用,在同一个 SQLite 事务中删除资产行并连续重排 `source_order`;任一 ID 无效或被引用时整批不变,本地文件始终保留。
- 已同步 `docs/04-architecture.md`、`docs/api.md` 与 `docs/routes.md`。新增 GUI 和服务层测试,覆盖 0/6/7/16 张及宽度变化、选择状态、任务切换、点击/键盘/右键路由、运行与下载阻断、跨项目/非原图/不存在/job/终选引用的事务回滚。
- 离屏界面检查通过:1180×760 下16张图片为3列6行,内部滚动范围为0、外层滚动正常;960×640 的 Windows 125% / 150% 缩放模拟下标题栏操作不重叠,复选框不遮挡缩略图文字或右上角单张删除入口。
- 当前工作区全量测试仅有任务开始前已存在的默认封面提示词重命名导致3个旧 `papa1` 断言失败;在只包含 T-631 暂存内容的干净验证工作树中运行 `py -3.10 -m unittest discover -s tests`,479项全部通过。`python -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check` 全部通过。