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

2.7 KiB
Raw Blame History

id, title, phase, deps, status, created
id title phase deps status created
T-592 AI工场主图/详情图终选拖放、插入排序与比例轻提示 7
T-591
DONE 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,已通过。