docs(ai-outfit): empty-tasks prompt + keep preview on generate (§10.4 / §19.10)

After a whole sheet is 完成, clicking 开始生成 silently shows '0 待处理 /
完成 0' and also re-empties the preview sample dropdown. Document two fixes:
(1) a clear 'no pending rows' message (N done skipped / M failed retryable /
clear E column to redo), (2) _on_tasks_loaded must not reset the preview combo
(read_all_rows owns it). Add §10.4 + §19.10.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 15:14:57 +08:00
co-authored by Claude Opus 4.8
parent 1c9ee36488
commit 2643b19686
2 changed files with 22 additions and 0 deletions
+12
View File
@@ -225,6 +225,18 @@ Excel 行 → `OutfitTask` 列表的转换由 `excel_service` 完成;核心只
- `_reload_sample_rows()` 改调 `read_all_rows`(预览专用);**生成仍走 `load_outfit_tasks`**(待处理过滤不变)。运行时填下拉的 `_on_tasks_loaded` 仍用实际任务。 - `_reload_sample_rows()` 改调 `read_all_rows`(预览专用);**生成仍走 `load_outfit_tasks`**(待处理过滤不变)。运行时填下拉的 `_on_tasks_loaded` 仍用实际任务。
- 补 `read_all_rows` 单测(含「完成」行也返回、空字段行跳过)。 - 补 `read_all_rows` 单测(含「完成」行也返回、空字段行跳过)。
### 10.4 改进:整表无待处理行时的提示 + 生成不清空预览样本
承接 §10.3。整表都「完成」后点「开始生成」时当前体验不清晰,两项改进:
**改进 1 — 无待处理行时给明确提示。**
现状:整表都「完成」(或都失败但未勾「重试失败行」)→ `load_outfit_tasks` 返回空 → 仅日志「已加载 0 行待处理任务」+ 结束弹窗「完成 0,失败 0」,用户看不懂为何没出图。
改为:检测到 0 行待处理时,明确提示——例如「该表没有待处理的行:已完成 N 行会跳过;失败 M 行可勾『重试失败行』重做;要重做已完成行,请清空对应行的状态(E)列。」(N/M 可由 `read_all_rows` 的各行状态统计得到。)在 `tasks_loaded` 为空或 `_on_finished(total==0)` 时弹 `QMessageBox.information`。
**改进 2 — 生成不清空预览样本行。**
现状:`_on_tasks_loaded` 里调 `_fill_sample_combo(tasks)`,空任务时把预览下拉清成占位文案,破坏 §10.3 的修复。
改为:`_on_tasks_loaded` 不再动预览样本下拉;预览样本行只由 `read_all_rows`(`_reload_sample_rows`)维护,与运行解耦。
## 11. 配置与数据位置 ## 11. 配置与数据位置
遵循 cmbot「配置集中、放数据目录、凭据不入库」约定: 遵循 cmbot「配置集中、放数据目录、凭据不入库」约定:
+10
View File
@@ -1124,3 +1124,13 @@
- [x] `services/excel_service.py`:新增 `read_all_rows(excel)`,返回每一有效数据行(标题/货号/衣服图齐全)的 `OutfitTask`,**忽略 E 列状态** - [x] `services/excel_service.py`:新增 `read_all_rows(excel)`,返回每一有效数据行(标题/货号/衣服图齐全)的 `OutfitTask`,**忽略 E 列状态**
- [x] `ai_outfit_panel._reload_sample_rows()` 改调 `read_all_rows`(预览专用);生成仍走 `load_outfit_tasks`,`_on_tasks_loaded` 仍用实际任务 - [x] `ai_outfit_panel._reload_sample_rows()` 改调 `read_all_rows`(预览专用);生成仍走 `load_outfit_tasks`,`_on_tasks_loaded` 仍用实际任务
- [x] 单测 `tests/test_excel_service.py`:`read_all_rows` 含「完成」「失败」行也返回、空字段行跳过(8 用例);离屏验证全表完成的 Excel 预览下拉有样本行;全套 12 文件绿 - [x] 单测 `tests/test_excel_service.py`:`read_all_rows` 含「完成」「失败」行也返回、空字段行跳过(8 用例);离屏验证全表完成的 Excel 预览下拉有样本行;全套 12 文件绿
### 19.10 无待处理行提示 + 生成不清空预览样本 — docs/11 §10.4
前置阅读:`docs/11-ai-outfit.md`(§10.4、§10.3)
背景:整表都「完成」后点「开始生成」,当前只显示「已加载 0 行待处理任务 / 完成 0,失败 0」,看不懂;且 `_on_tasks_loaded([])` 会把预览样本下拉清空(破坏 §10.3)。
- [ ] 改进 1:检测 0 行待处理时弹明确提示「该表没有待处理的行:已完成 N 行会跳过;失败 M 行可勾『重试失败行』;要重做已完成行请清空对应行状态(E)列」(N/M 由 `read_all_rows` 统计);在 `tasks_loaded` 为空或 `_on_finished(total==0)` 时弹 `QMessageBox.information`
- [ ] 改进 2:`_on_tasks_loaded` 去掉 `_fill_sample_combo(tasks)`,预览样本下拉只由 `read_all_rows`/`_reload_sample_rows` 维护,与运行解耦
- [ ] 离屏验证:全表完成点生成 → 弹"无待处理行"提示、预览下拉仍有样本行;正常有待处理行时不弹该提示