docs(tasks): commit T-662a/c/d scope-dialog redesign
Redesign per user requirement: pre-run scope dialogs in ①② replace the status column/dropdown model; ③ keeps background interception only. T-662b already landed in previous commit alongside the red text alignment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
21c72d0d93
commit
b4250f36f8
+25
-23
@@ -1,45 +1,46 @@
|
||||
---
|
||||
id: T-662c
|
||||
title: AI生成异常商品默认排除与强制生成确认
|
||||
title: AI生成范围确认与异常商品点数保护
|
||||
status: TODO
|
||||
phase: 7
|
||||
deps: [T-662a]
|
||||
created: 2026-07-18
|
||||
---
|
||||
|
||||
# T-662c AI生成异常商品默认排除与强制生成确认
|
||||
# T-662c AI生成范围确认与异常商品点数保护
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
未上架、审核中商品默认继续进入②会消耗 cmhub 点数。②当前点击「开始生成」会直接创建 `GenerateWorker`,没有通用生成确认框,因此不能把不存在的确认流程写成现状。
|
||||
未上架、审核中或状态未知商品进入②会消耗 cmhub 点数。客户需要在每轮付费生成前明确选择范围,并让安全选项始终成为默认值;采集时选择“所有状态”只代表保存资料,不能自动授权后续扣点。
|
||||
|
||||
## 方案
|
||||
|
||||
- 现有「状态」标签改为「任务状态」,新增独立「商品状态」下拉,**放在「任务状态」label 左边**(需求定稿位置):
|
||||
- `可生成(默认)`:`normal/unknown`;
|
||||
- `全部`;
|
||||
- `正常/未上架/审核中/未知`。
|
||||
- 选项术语与平台原文对齐:「审核中」不用「未审核」、「未知」不用「其他」;默认档为复合的「可生成」而非单选「正常」,否则升级后历史批次(全为未知)会被整批拦住。
|
||||
- 保留商品状态筛选前的基础范围快照,用于摘要计算,避免异常记录从模型隐藏后无法统计。
|
||||
- 默认模式不把 `unlisted/reviewing` 传给 `GenerateWorker`,不创建 AI 请求、不消耗点数、不改 stage/status/Excel;摘要、状态栏和本轮日志说明排除数量及示例商品ID。
|
||||
- `unknown` 默认可生成,避免历史数据和临时检测失败被整批拦住。
|
||||
- 用户切换「全部」「未上架」或「审核中」后,如果本轮确实包含异常商品,弹一次中文高风险确认,列出数量、状态、示例商品ID和可能产生点数;默认取消。确认后才允许异常商品进入 worker。
|
||||
- 正常任务不新增通用确认弹窗,保持现有一键开始流程。
|
||||
- UI 可见筛选范围与最终 worker 列表必须分别记录;确认期间数据变化则取消旧计划并要求重新开始。
|
||||
- 本任务不新增商品状态列或下拉框。点击「开始生成」后,先按现有批次、店铺、商品ID、任务状态、生成内容模式和“缺什么生成什么”规则构造真实候选;候选为空时保持现有提示,不弹范围框。
|
||||
- 候选存在时按 T-662a 状态代码分组,弹出中文生成范围对话框:
|
||||
- `只生成状态正常的商品`:默认按钮,仅包含 `normal`;
|
||||
- `生成所有状态的商品`:红色文字,包含 `normal/unlisted/reviewing/unknown`;
|
||||
- `取消`:不创建 Worker、不调用 cmhub、不产生点数和 DB 变化。
|
||||
- 弹窗展示本轮真实候选总数及正常、未上架、审核中、未知数量;说明“生成所有状态”会让非正常状态商品也调用 AI,可能额外消耗点数。示例商品ID数量受限,日志不得泄露接口路径或密钥。
|
||||
- 若现有价格目录能依据本轮生成标题/图片模式可靠计算,则显示“预计最多消耗 X 点”;无法可靠计算时只显示风险说明,不编造点数。
|
||||
- 默认焦点和回车只允许触发“只生成状态正常的商品”;红色选项不能成为默认按钮,不记忆危险选择。没有非正常候选时禁用“生成所有状态的商品”。
|
||||
- `normal_only` 下,`unlisted/reviewing/unknown` 不进入 `GenerateWorker`,不创建 cmhub 请求、不消耗点数、不改 stage/status/Excel;历史 NULL 按 `unknown` 排除并提示重新采集。
|
||||
- `all` 只授权本轮付费生成,不改变数据库商品状态,也不授权③更新线上商品。
|
||||
- 使用共享纯逻辑 planner 输出 `base_candidates/status_counts/execution_tasks`;计划冻结字段至少包含 `task_id/updated_at/product_status/new_title/new_cover_path/生成内容模式`。弹窗期间相关数据变化时废弃旧计划并要求重新开始。
|
||||
- Worker 接收确认后的精确任务列表和稳定范围代码 `normal_only/all`;本轮日志记录所选范围、排除统计和实际入队数量,正常模式下非正常商品不得通过其他入口绕过预检。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 默认可生成模式排除未上架/审核中,正常和未知仍可生成。
|
||||
- [ ] 默认排除记录不产生 worker 任务、cmhub 请求、点数或 DB 状态变化。
|
||||
- [ ] 摘要与日志即使在异常记录被隐藏时仍能显示排除数量。
|
||||
- [ ] 显式显示异常状态后,只有确认才可强制生成;取消不执行。
|
||||
- [ ] 正常批次不增加额外弹窗;停止、进度、重试与现有增量生成不回归。
|
||||
- [ ] 商品状态筛选与批次、店铺、商品ID、任务状态叠加正确。
|
||||
- [ ] 真实候选为空时不弹范围框;有候选时弹窗数量与最终入队任务一致。
|
||||
- [ ] 默认按钮、回车和普通确认只生成 `normal`;未上架、审核中、未知和历史 NULL 均不产生 cmhub 请求或点数。
|
||||
- [ ] “生成所有状态”使用红色文字、非默认且不跨轮记忆;只有本轮明确选择后才能把非正常候选加入 Worker。
|
||||
- [ ] 取消不创建 Worker、不调用 cmhub、不改 DB;计划数据变化时不能执行旧计划。
|
||||
- [ ] 无非正常候选时危险按钮不可用;弹窗和日志使用中文并正确展示状态统计与可用的点数估算。
|
||||
- [ ] 停止、进度、重试、增量生成、只生成标题/图片/图文和并发逻辑不回归。
|
||||
|
||||
## 测试与文档
|
||||
|
||||
- 纯逻辑 helper 覆盖默认排除、未知放行和显式包含。
|
||||
- `tests/test_gui.py` 覆盖隐藏统计、强制确认、取消、worker 列表、点数不消耗边界和运行态。
|
||||
- 纯逻辑 planner 覆盖四种状态、历史 NULL、两种范围、候选去重、点数估算和计划指纹。
|
||||
- `tests/test_gui.py` 覆盖无候选、中文弹窗、默认焦点、回车、危险按钮样式/禁用、取消、数据变化、Worker 精确列表和点数不消耗边界。
|
||||
- 更新 `docs/routes.md`、`docs/04-architecture.md` 和 `docs/api.md`。
|
||||
|
||||
## 验证
|
||||
@@ -54,7 +55,8 @@ git diff --check
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不修改 AI 接口、价格目录、并发、重试或普通任务的启动交互。
|
||||
- 不修改 AI 接口、价格目录、并发和重试;不新增商品状态筛选控件。
|
||||
- 不把“生成所有状态”视为线上更新授权。
|
||||
|
||||
## 执行记录
|
||||
|
||||
|
||||
Reference in New Issue
Block a user