diff --git a/docs/tasks/T-663.md b/docs/tasks/T-663.md new file mode 100644 index 0000000..1ac8f83 --- /dev/null +++ b/docs/tasks/T-663.md @@ -0,0 +1,58 @@ +--- +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 或③更新蝦皮流程。 + +## 执行记录 + +- 待实现。