83 lines
4.3 KiB
Markdown
83 lines
4.3 KiB
Markdown
---
|
|
id: T-575
|
|
title: ②AI生成图片失败红色进度段与完成汇总弹窗
|
|
phase: 7
|
|
deps: [T-574]
|
|
status: DONE
|
|
created: 2026-07-09
|
|
---
|
|
|
|
## 问题 / 背景
|
|
|
|
②AI生成模块中,图片生成进度条当前主要按成功数量推进。例如本轮需要生成 13 张图片,其中 11 张成功、2 张失败,结束后进度条会显示大部分绿色、剩余部分白色/空白。
|
|
|
|
从用户视角看,这个表现容易误解:
|
|
|
|
- 白色区域像是“还有任务没处理完”,但实际是已经处理完且失败。
|
|
- 失败任务没有在进度条上形成直观的红色反馈,用户需要看日志或失败数字才知道失败占比。
|
|
- 一批生成结束后,只有底部状态和日志,缺少一次清晰中文汇总提示。
|
|
|
|
## 方案
|
|
|
|
- `app/gui/tabs/generate.py`
|
|
- 为②AI生成页增加一个轻量分段进度条控件,至少支持:
|
|
- 绿色:成功数量。
|
|
- 红色:失败数量。
|
|
- 灰白/空白:未处理、停止后未执行或尚未完成数量。
|
|
- 图片进度条改用分段进度条。
|
|
- 统计口径:
|
|
- `cover_done` 表示图片成功数。
|
|
- `failed` 中包含本轮标题/图片失败总数;为了第一版范围可控,图片进度条的红色失败段先使用“本轮失败数中可归入图片处理的数量”或在 GUI 侧保守用 `min(failed, cover_total - cover_done)`。
|
|
- 完整结束时,已处理部分应显示为绿色 + 红色,剩余未执行才保留空白。
|
|
- 本轮生成 `finished` / `cancelled` 后弹一次中文汇总框:
|
|
- 全成功用信息提示。
|
|
- 有失败或停止用警告提示。
|
|
- 汇总标题和图片各自成功/总数、失败数、用时秒数。
|
|
- 弹窗只做汇总,不塞完整商品 ID 清单;失败明细继续看滚动日志。
|
|
|
|
## 文案建议
|
|
|
|
- 全成功:
|
|
- 标题:`AI生成完成`
|
|
- 正文:`本轮AI生成完成:标题 13/13,图片 13/13,失败 0,用时 126 秒。`
|
|
- 有失败:
|
|
- 标题:`AI生成完成,有失败任务`
|
|
- 正文:`本轮AI生成完成:标题 13/13,图片 11/13,失败 2,用时 492 秒。失败明细请查看下方运行日志,可稍后重新生成失败任务。`
|
|
- 停止:
|
|
- 标题:`AI生成已停止`
|
|
- 正文:`本轮AI生成已停止:标题 8/13,图片 5/13,失败 1,用时 180 秒。未完成任务可再次点击开始生成继续处理。`
|
|
|
|
## 验收要点
|
|
|
|
- 本轮图片 13 张、成功 11、失败 2 时,图片进度条结束后显示 11 份绿色 + 2 份红色,不再留下误导性的白色失败区域。
|
|
- 运行中未完成部分仍可显示为空白/灰白。
|
|
- 本轮生成完成后只弹一次中文汇总框。
|
|
- 全成功、部分失败、用户停止分别使用合适标题和提示级别。
|
|
- 滚动日志仍保留失败明细,弹窗不展示敏感信息、不展示完整接口路径或 token。
|
|
- 不影响标题进度条、用时秒数、cmhub余额显示和现有运行日志。
|
|
- 验证命令:
|
|
- `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`
|
|
|
|
## 边界(不改什么)
|
|
|
|
- 不改 AI/cmhub 请求协议、并发、重试、下载保存逻辑。
|
|
- 不改 DB schema。
|
|
- 不改任务筛选、重置生成、封面画廊、Excel 或③更新蝦皮流程。
|
|
- 第一版不做逐商品失败弹窗,不做失败商品 ID 大列表。
|
|
|
|
## 执行记录
|
|
|
|
- 2026-07-09:已完成。
|
|
- `app/gui/tabs/generate.py`:新增 `_SegmentedProgressBar`,图片进度条保持 `QProgressBar` 兼容但改为绿色成功段 + 红色失败段 + 灰白未完成段;②图片进度按 `cover_done` 和保守失败数 `min(failed, cover_total - cover_done)` 显示红色失败区域;本轮完成、失败或停止后弹一次中文汇总框,弹窗只显示汇总,不暴露接口路径或底层异常细节。
|
|
- `tests/test_gui.py`:新增分段图片进度条测试、图片部分失败完成汇总弹窗测试、停止汇总弹窗测试。
|
|
- 验证通过:
|
|
- `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`(通过;仅提示 `docs/tasks-board.md` 未来触碰时 CRLF 会转 LF,非空白错误)
|