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
+15
-18
@@ -1,45 +1,42 @@
|
||||
---
|
||||
id: T-662d
|
||||
title: 更新蝦皮异常商品过滤与T-659预检整合
|
||||
title: 更新蝦皮商品状态后台拦截与T-659预检整合
|
||||
status: TODO
|
||||
phase: 7
|
||||
deps: [T-662a, T-659]
|
||||
created: 2026-07-18
|
||||
---
|
||||
|
||||
# T-662d 更新蝦皮异常商品过滤与T-659预检整合
|
||||
# T-662d 更新蝦皮商品状态后台拦截与T-659预检整合
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
③需要在更新内容预检之外处理商品状态。商品状态是采集快照,不能取代 Shopee 执行时校验;同时「显示全部」只是查看范围,不能被误当成更新异常商品的授权。
|
||||
③属于线上写操作。即使用户在①选择采集所有状态,或在②明确选择生成所有状态,也不能把该选择继承为线上更新授权。商品状态是采集快照,不能取代 Shopee 执行时校验,但已知非正常状态必须在创建 `ApplyWorker` 前被拦截。
|
||||
|
||||
## 方案
|
||||
|
||||
- 现有「状态」标签改为「任务状态」,新增独立「商品状态」下拉,**放在「任务状态」label 左边**(需求定稿位置):
|
||||
- `可更新(默认)`:`normal/unknown`;
|
||||
- `全部`;
|
||||
- `正常/未上架/审核中/未知`。
|
||||
- 选项术语与平台原文对齐:「审核中」不用「未审核」、「未知」不用「其他」;默认档为复合的「可更新」而非单选「正常」,未知默认放行,避免历史批次被整批拦住。
|
||||
- 保留商品状态筛选前的基础范围快照,显示默认排除数量;即使表格隐藏异常记录,也能在摘要/确认中说明。
|
||||
- 无论商品状态筛选选择什么,`unlisted/reviewing` 都不得传入 `ApplyWorker`;「全部」只用于查看,不构成强制线上更新授权。
|
||||
- 扩展 T-659 结构化预检结果,分别保存:可执行、缺标题、缺封面、未上架、审核中;同一任务只计一次总跳过,但各原因统计可分别展示。
|
||||
- 本任务不新增商品状态列、下拉框或“强制更新异常商品”入口;现有批次、店铺、商品ID、任务状态和更新内容模式保持不变。
|
||||
- 扩展 T-659 结构化预检,先按共享状态 helper 分组,再检查标题/封面完整性:只有 `normal` 可进入可执行集合;`unlisted/reviewing/unknown`(含历史 NULL)全部从正式更新和 dry-run 的 Worker 列表剔除。
|
||||
- 预检结果分别保存:可执行、缺标题、缺封面、未上架、审核中、状态未知;同一任务只计一次总跳过,但各原因统计可分别展示。明确原因优先级,保证汇总去重稳定。
|
||||
- 确认框、状态栏与本轮日志显示异常状态排除数量、分类和示例商品ID。预检排除记录不计入 worker 的成功/略过/失败,不改 stage/status/Excel。
|
||||
- 内容缺失和商品异常全部剔除后没有可执行任务时,按真实主因显示中文中止文案;全部异常时不得误报「更新内容未生成」。
|
||||
- 「检查本轮更新」与正式更新使用同一计划;用户确认期间筛选或数据变化时废弃旧计划。
|
||||
- `unknown` 默认允许更新;现有商品失效 toast、页面校验、账号预检和 T-659 内容校验继续作为执行层防线。
|
||||
- 不能先因当前模型任务为空而返回通用文案;必须先读取商品状态筛选不存在时的当前基础范围并执行预检,确保全异常批次得到真实中止原因。
|
||||
- 「检查本轮更新」与正式更新使用同一 planner 和计划指纹;用户确认期间 `task_id/updated_at/product_status/new_title/new_cover_path/更新模式` 变化时废弃旧计划。
|
||||
- ①②弹窗选择仅影响各自本轮,③不读取或继承其范围策略。现有商品失效 toast、页面校验、账号预检、最终中文确认和 T-659 内容校验继续作为执行层防线。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] 默认可更新模式排除未上架/审核中,正常和未知可进入内容预检。
|
||||
- [ ] 切换「全部」能查看异常记录,但开始更新和 dry-run 仍剔除异常商品。
|
||||
- [ ] 确认框正确合并内容缺失与商品状态原因,同一任务总数不重复。
|
||||
- [ ] 未上架、审核中、未知和历史 NULL 均不能进入正式更新或 dry-run Worker;只有 `normal` 可继续内容预检。
|
||||
- [ ] ①采集所有状态或②生成所有状态不会授权③更新非正常商品。
|
||||
- [ ] 确认框正确合并内容缺失与三类商品状态原因,同一任务总数不重复。
|
||||
- [ ] 全异常时显示商品状态中止原因;全缺内容时仍保持 T-659 文案。
|
||||
- [ ] 被排除记录不进入 `ApplyWorker`,DB、Excel 和本轮 worker 统计不变。
|
||||
- [ ] T-659 三种更新模式、账号就绪、分批、停止和真实更新确认不回归。
|
||||
|
||||
## 测试与文档
|
||||
|
||||
- `tests/test_gui.py` 覆盖默认排除、显示全部、原因去重、全异常中止、dry-run 一致性和 T-659 回归。
|
||||
- 纯逻辑 planner 覆盖四类状态、历史 NULL、原因优先级、去重和计划指纹。
|
||||
- `tests/test_gui.py` 覆盖状态硬拦截、全异常中止、内容缺失合并、确认期数据变化、dry-run 一致性和 T-659 回归。
|
||||
- 更新 `docs/routes.md`、`docs/04-architecture.md` 和 `docs/api.md`。
|
||||
|
||||
## 验证
|
||||
@@ -54,7 +51,7 @@ git diff --check
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不根据采集快照自动修改蝦皮商品状态,不提供异常商品强制更新入口,不做实时状态刷新。
|
||||
- 不新增商品状态 UI,不根据采集快照自动修改蝦皮商品状态,不提供非正常商品强制更新入口,不做实时状态刷新。
|
||||
|
||||
## 执行记录
|
||||
|
||||
|
||||
Reference in New Issue
Block a user