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

59 lines
3.9 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-663
title: 采集与生成范围确认弹窗可读性与语义色
status: TODO
phase: 7
deps: [T-662b, T-662c]
created: 2026-07-18
---
# T-663 采集与生成范围确认弹窗可读性与语义色
## 问题 / 背景
①「导入采集」的商品状态范围确认目前直接使用 `QMessageBox`。三个较长中文按钮由平台样式横向安排,窗口未设置稳定最小宽度,在较窄窗口或高系统缩放下会截断选项文字。`采集所有状态的商品` 同时使用 `DestructiveRole` 和错误红色,视觉语义接近删除或不可逆操作;实际它只是扩大本轮采集范围,可能增加耗时但不消耗 AI 点数。②「生成所有状态的商品」也应使用一致的范围选择语义;它会额外消耗点数,但同样不是删除操作。
## 方案
- 提供可复用的中文“商品状态范围”专用对话框,供①采集和②生成调用;不继续依赖 `QMessageBox` 的平台按钮横向排布。
- 对话框使用稳定的最小内容宽度(不小于 520px)、可换行说明文字和纵向全宽按钮。窗口可随内容增大,不设置会导致文字再次被裁切的固定最大宽度;在 Windows 100%/125%/150% 缩放下三个按钮均完整显示。
- 保持三项业务选择、返回值和键盘安全性不变:
- ①:`只采集状态正常的商品`(默认) / `采集所有状态的商品` / `取消`;
- ②:`只生成状态正常的商品`(默认) / `生成所有状态的商品` / `取消`;
- 回车只触发默认“正常状态”选项,Esc/关闭触发取消;本轮选择不保存为下次默认值。
- 默认“正常状态”选项使用现有主操作视觉;“所有状态”选项改为警示橙色描边(复用 `COLOR_WARNING = #bc4c00`),并使用非破坏性 `ActionRole` 或等价的自定义操作语义,不再使用 `DestructiveRole`、错误红或“危险”措辞;“取消”保持中性样式。
- ①说明保留“可能增加采集时间,但不消耗 AI 点数”;②说明保留“非正常状态也会调用 AI,可能额外消耗点数”。成本和范围风险由说明文字清晰表达,不借用删除语义。
- 保留既有按钮 objectName,或为替换后的按钮提供等价稳定 objectName,避免现有 GUI 自动化测试失效;两处调用只接收稳定策略代码 `normal_only/all/None`,不改变 Worker、状态检测、计划指纹、运行日志、计费和③更新蝦皮的逻辑。
## 验收标准
- [ ] ①和②范围确认弹窗在常见 Windows 缩放下完整显示三项中文选项,不出现省略号、裁切或横向拥挤。
- [ ] ①“所有状态”显示警示橙色描边而非红色;②采用同一语义色,默认正常选项仍最突出,取消为中性。
- [ ] 默认选择、回车、Esc/关闭、三种返回值以及每轮不记忆范围策略的现有行为不回归。
- [ ] ①“所有状态”不被呈现为删除/不可逆,仍明确提示只增加采集时间且不消耗 AI 点数;②仍明确提示可能额外消耗点数。
- [ ] 不改 `CollectWorker` / `GenerateWorker` 的状态范围、任务计划、并发、重试、日志和计费行为;③更新蝦皮不受影响。
## 测试与文档
- `tests/test_gui.py` 覆盖①②对话框最小宽度、三个完整按钮文案、默认焦点、回车/取消、两种范围返回值、警示色与非破坏性按钮角色。
- 更新 `docs/routes.md`、`docs/04-architecture.md` 与 `docs/api.md` 中①②范围确认的显示与语义说明。
## 验证
```bash
py -3.10 -m unittest 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
```
## 非目标
- 不新增商品状态筛选列、常驻范围设置或“强制更新异常商品”入口。
- 不改变①采集或②生成是否处理异常商品的业务规则,不改变 cmhub 计费、数据库字段、CDP 或③更新蝦皮流程。
## 执行记录
- 待实现。