Files
cmshoppe/docs/tasks/T-662c.md
T

61 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-662c
title: AI生成异常商品默认排除与强制生成确认
status: TODO
phase: 7
deps: [T-662a]
created: 2026-07-18
---
# T-662c AI生成异常商品默认排除与强制生成确认
## 问题 / 背景
未上架、审核中商品默认继续进入②会消耗 cmhub 点数。②当前点击「开始生成」会直接创建 `GenerateWorker`,没有通用生成确认框,因此不能把不存在的确认流程写成现状。
## 方案
- 现有「状态」标签改为「任务状态」,新增独立「商品状态」下拉:
- `可生成(默认)`:`normal/unknown`;
- `全部`;
- `正常/未上架/审核中/未知`。
- 保留商品状态筛选前的基础范围快照,用于摘要计算,避免异常记录从模型隐藏后无法统计。
- 默认模式不把 `unlisted/reviewing` 传给 `GenerateWorker`,不创建 AI 请求、不消耗点数、不改 stage/status/Excel;摘要、状态栏和本轮日志说明排除数量及示例商品ID。
- `unknown` 默认可生成,避免历史数据和临时检测失败被整批拦住。
- 用户切换「全部」「未上架」或「审核中」后,如果本轮确实包含异常商品,弹一次中文高风险确认,列出数量、状态、示例商品ID和可能产生点数;默认取消。确认后才允许异常商品进入 worker。
- 正常任务不新增通用确认弹窗,保持现有一键开始流程。
- UI 可见筛选范围与最终 worker 列表必须分别记录;确认期间数据变化则取消旧计划并要求重新开始。
## 验收标准
- [ ] 默认可生成模式排除未上架/审核中,正常和未知仍可生成。
- [ ] 默认排除记录不产生 worker 任务、cmhub 请求、点数或 DB 状态变化。
- [ ] 摘要与日志即使在异常记录被隐藏时仍能显示排除数量。
- [ ] 显式显示异常状态后,只有确认才可强制生成;取消不执行。
- [ ] 正常批次不增加额外弹窗;停止、进度、重试与现有增量生成不回归。
- [ ] 商品状态筛选与批次、店铺、商品ID、任务状态叠加正确。
## 测试与文档
- 纯逻辑 helper 覆盖默认排除、未知放行和显式包含。
- `tests/test_gui.py` 覆盖隐藏统计、强制确认、取消、worker 列表、点数不消耗边界和运行态。
- 更新 `docs/routes.md`、`docs/04-architecture.md` 和 `docs/api.md`。
## 验证
```bash
py -3.10 -m unittest tests.test_ai tests.test_gui
py -3.10 -m unittest discover -s tests
py -3.10 -m ruff check app tests main.py
py -3.10 -m compileall app main.py
git diff --check
```
## 非目标
- 不修改 AI 接口、价格目录、并发、重试或普通任务的启动交互。
## 执行记录
- 待实现。