Files

75 lines
3.7 KiB
Markdown

---
id: T-574
title: ②封面画廊保存后停留并提示已保存
phase: 7
deps: [T-573]
status: DONE
created: 2026-07-09
---
## 问题 / 背景
②AI生成模块中,双击任务行打开封面画廊后,用户可以在多张 AI 生成封面候选图之间切换。当前行为是:勾选其它候选图后点击「保存」,程序会把该图片写入任务的 `new_cover_path`,但弹窗立即退出。
这个行为在数据层是正确的,但从用户体验看反馈不够清楚:
- 用户无法在弹窗内立刻确认“刚才选择的图片已经保存为本地待更新封面”。
- 弹窗关闭后,用户如果还想继续比较其它候选图,需要重新打开。
- 「保存后关闭」容易让用户误解为已经更新到蝦皮线上商品主图。实际上这一步只更新本地任务的待更新封面,只有后续③「更新蝦皮」成功后,线上主图才会变化。
## 方案
- `app/gui/tabs/generate.py`
- 在 `CoverGalleryDialog` 底部按钮区,「保存」按钮左侧增加轻量状态提示 label。
- 用户点击「保存」后:
- 调用原有保存逻辑,继续写入 `db.update_generated_cover()`。
- 保存成功后不关闭弹窗。
- 提示 label 显示类似「已保存为本次更新封面」。
- 刷新当前候选图状态,让新保存的图片标记为当前生效封面。
- 保留未保存切换/关闭保护:如果用户选择了另一张但未保存,切换上一条/下一条或关闭时仍提示「保存 / 不保存 / 取消」。
- 底部原「取消」按钮建议改为「关闭」,因为保存后弹窗可继续停留,关闭按钮语义更准确。
## 文案原则
- 不使用「商品封面主图」作为保存成功提示,避免误导用户以为已经提交到蝦皮线上。
- 推荐提示:
- `已保存为本次更新封面`
- 如保存失败,继续沿用现有警告弹窗和状态保护。
## 验收要点
- 在封面画廊中勾选其它 AI 生成图片,点击「保存」后:
- DB 中当前任务 `new_cover_path` 更新为选中图片。
- 弹窗保持打开,不自动退出。
- 保存按钮左侧显示成功提示。
- 当前候选图状态刷新为「当前生效封面」。
- 点击「关闭」可以关闭弹窗。
- 如果选择了另一张但未保存,切换任务或关闭弹窗仍会触发未保存选择确认。
- 不影响 T-572 的 `↑ / ↓` 记录切换。
- 不影响 T-573 的候选图横向滚动布局。
- 验证命令:
- `py -3.10 -m unittest tests.test_gui`
- `python -m ruff check app tests main.py`
- `py -3.10 -m compileall app main.py`
- `py -3.10 -m unittest discover -s tests`
- `git diff --check`
## 边界(不改什么)
- 不改候选图文件发现规则。
- 不改重新生成封面流程。
- 不改 DB schema,只继续使用现有 `update_generated_cover()`。
- 不改 AI/cmhub、Excel、③更新蝦皮或 CDP/Shopee 交互。
## 执行记录
- 2026-07-09:已完成。
- `app/gui/tabs/generate.py`:封面画廊底部新增保存提示 label;「保存」后不再关闭弹窗,成功写入本地 `new_cover_path` 后显示「已保存为本次更新封面」,并重建候选项刷新「当前生效封面」标记;原「取消」按钮改为「关闭」,仍走原关闭/未保存保护逻辑。
- `tests/test_gui.py`:更新封面画廊保存测试,覆盖保存后弹窗不退出、DB 生效、提示文案显示、关闭按钮文案以及新候选项立即标记为当前生效。
- 验证通过:
- `py -3.10 -m unittest tests.test_gui`
- `python -m ruff check app tests main.py`
- `py -3.10 -m compileall app main.py`
- `py -3.10 -m unittest discover -s tests`
- `git diff --check`