Files
cmshoppe/docs/tasks/T-669.md
T

54 lines
4.1 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-669
title: 导入采集商品状态展示与筛选
status: DONE
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 和账号等主信息保留可读宽度,避免新增列后五列平均拉伸而截断。
## 验收标准
- [x] ①列表显示「商品状态」列,并能正确区分架上商品、未上架、审核中、状态未知和待检测;阶段列仍正确显示待采集、已采集、已生成等工作流状态。
- [x] 商品状态下拉位于「处理状态」左侧;两项筛选可叠加,且继续与批次、店铺、商品 ID 筛选共同生效。
- [x] 历史默认正常记录显示「架上商品」,tooltip 明确其未实时检测语义;真实 `unknown` 与 NULL/空白的「待检测」不混淆。
- [x] 筛选、刷新、采集、回写、生成和更新既有行为不回归;不改变商品状态的写入时机、历史迁移规则或③更新安全预检。
- [x] `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 或③更新流程。
- 不在②、③新增新的商品状态列或筛选控件;它们继续沿用现有生成/更新前的状态安全规则。
## 执行记录
- 在 `product_status` 增加仅供界面筛选/展示使用的原始状态区分:NULL/空白为「待检测」,显式 `unknown` 仍为「状态未知」,不改变生成和更新预检的空状态安全语义。
- ①任务表新增商品状态列、语义色和状态备注/检测时间 tooltip;顶部新增商品状态筛选,原「状态」改名为「处理状态」,筛选与批次、店铺、商品 ID、处理状态叠加。
- 更新①路由文档,并补充表格展示、历史默认备注、组合筛选和运行中禁用的 GUI 回归测试。
- 验证通过:`py -3.10 -m unittest discover -s tests`(621 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。