51 lines
3.4 KiB
Markdown
51 lines
3.4 KiB
Markdown
---
|
|
id: T-669
|
|
title: 导入采集商品状态展示与筛选
|
|
status: TODO
|
|
phase: 7
|
|
deps: [T-662a, T-667]
|
|
created: 2026-07-20
|
|
---
|
|
|
|
# T-669 导入采集商品状态展示与筛选
|
|
|
|
## 问题 / 背景
|
|
|
|
商品状态已经在 `tasks.product_status/product_status_note/product_status_at` 保存,①「导入采集」却只显示处理阶段,顶部「状态」下拉实际也只筛选待采集、已采集、已生成等处理阶段。运营无法在采集页直观看出哪些商品已在架、未上架、审核中,或尚未检测;两个不同维度都称为“状态”也容易误操作。
|
|
|
|
## 方案
|
|
|
|
- 在①任务表新增「商品状态」列,位于「阶段」右侧;现有「阶段」继续表示工作流进度,不复用或替换其含义。
|
|
- ①筛选行在现有处理阶段下拉左侧新增「商品状态」下拉,并把既有标签「状态」改为「处理状态」。商品状态选项固定为「全部商品状态、架上商品、未上架、审核中、状态未知、待检测」。
|
|
- 显示和筛选以原始 `tasks.product_status` 区分:`normal` 显示「架上商品」、`unlisted` 显示「未上架」、`reviewing` 显示「审核中」、显式 `unknown` 显示「状态未知」、NULL/空白显示「待检测」。不得把未检测的空值在①列表里伪装为真实的「状态未知」。
|
|
- 商品状态使用语义色:架上商品为成功绿,审核中为警示橙,未上架为错误红或深红,状态未知/待检测为中性灰;不能只依赖颜色,文字必须始终完整显示。保留已有阶段色。
|
|
- 商品状态列 tooltip 显示 `product_status_note`;历史批次自动迁移的 `normal` 必须能看到「历史批次默认按架上商品处理(未实时检测)」,让用户区分默认值与实时检测快照。检测时间存在时可追加简短检测时间。
|
|
- 商品状态和处理状态筛选为叠加关系,并与批次、店铺、商品 ID、未匹配筛选继续共同生效;刷新后按现有页面习惯保留可用选择。表格列宽调整为商品状态/阶段按内容宽度,商品 ID 和账号等主信息保留可读宽度,避免新增列后五列平均拉伸而截断。
|
|
|
|
## 验收标准
|
|
|
|
- [ ] ①列表显示「商品状态」列,并能正确区分架上商品、未上架、审核中、状态未知和待检测;阶段列仍正确显示待采集、已采集、已生成等工作流状态。
|
|
- [ ] 商品状态下拉位于「处理状态」左侧;两项筛选可叠加,且继续与批次、店铺、商品 ID 筛选共同生效。
|
|
- [ ] 历史默认正常记录显示「架上商品」,tooltip 明确其未实时检测语义;真实 `unknown` 与 NULL/空白的「待检测」不混淆。
|
|
- [ ] 筛选、刷新、采集、回写、生成和更新既有行为不回归;不改变商品状态的写入时机、历史迁移规则或③更新安全预检。
|
|
- [ ] `tests/test_gui.py` 和模型相关测试覆盖状态列展示、tooltip、商品状态筛选与处理状态叠加筛选。
|
|
|
|
## 验证
|
|
|
|
```bash
|
|
py -3.10 -m unittest discover -s tests -p "test_gui.py"
|
|
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
|
|
```
|
|
|
|
## 非目标
|
|
|
|
- 不新增 SQLite 字段,不修改商品状态检测、Chrome/CDP、AI 调用、Excel 或③更新流程。
|
|
- 不在②、③新增新的商品状态列或筛选控件;它们继续沿用现有生成/更新前的状态安全规则。
|
|
|
|
## 执行记录
|
|
|
|
- 待实现。
|