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

45 lines
2.7 KiB
Markdown
Raw 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-592
title: AI工场主图/详情图终选拖放、插入排序与比例轻提示
phase: 7
deps: [T-591]
status: DONE
created: 2026-07-11
---
## 问题 / 背景
照片池是候选集合,导出需要有序的主图和详情图集合。终选必须支持从池拖入、落在占用槽时插入顺延、槽内重排、移出终选和跨类别复用,同时保证数据库与 UI 顺序一致。
## 方案
- 底部全宽终选盘显示目标和当前数量,默认主图 9、详情 12,目标可配置。
- 从池拖到空槽直接放入;拖到占用槽按位置插入并顺延;满额时拒绝超出并提示。
- 槽内拖动原子重排;Delete/右键只移出终选,不删除 pool asset。
- 同一 asset 在同类别最多一次,可同时各用于一次 main/detail。
- 主图/详情图推荐比例不匹配显示黄色边框+tooltip,不硬拦。
- 所有槽位保持连续,无中间空洞;双击槽图查看大图。
- 使用 T-586 service 事务更新 selection,拖放失败时 UI 回滚到 DB 顺序。
## 验收要点
- empty insert、occupied insert+shift、same-list reorder、remove、满额和重复拖入均有测试。
- 跨 main/detail 允许,同类别重复拒绝;比例提示不阻止保存。
- 重启后顺序与退出前一致;并发/异常不产生重复 position 或空洞。
- 运行中图片尚未可用时不能拖入;文件缺失资产有明确禁用状态。
## 边界(不改什么)
- 不导出文件、不删除照片池资产、不上传蝦皮。
- 不自动裁剪、转比例或替用户决定主图/详情图。
- 不实现撤销历史;失败只恢复当前持久化顺序。
## 执行记录
- 2026-07-11:完成 AI工场主图/详情图终选盘。
- `ImageStudioTab` 底部终选占位升级为主图/详情图两个可拖放列表;照片池可用图片提供 asset_id 拖拽,终选列表支持外部拖入、落点插入顺延、列表内重排、Delete/右键移出。
- 写库统一走 `image_studio.replace_selections()`;同类别重复拖入、满额、文件未下载/缺失会中文提示并拒绝;主图/详情图跨类别复用允许。
- 主图非 1:1 比例显示黄色轻提示和 tooltip,不阻止加入;运行中禁用终选列表,避免生成/下载时状态并发修改。
- 更新 `docs/routes.md` 的 ⑥ AI工场底部终选说明,明确 T-593 才做导出。
- 验证:当前主工作区仍有无关默认提示词脏文件会影响全量 unittest;已在干净 worktree 仅套用 T-592 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`(363 tests)和 `git diff --check`,全部通过。主工作区也运行了 T-592 相关 targeted unittest,已通过。