Files
cmautobuy/docs/task/266-修正规格候选遍历后的颜色复核顺序.md
T
2026-08-18 14:04:23 +08:00

61 lines
2.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.
# #266 Client:修正规格候选遍历后的颜色复核顺序
- 工单号:#266
- 类型:缺陷修复
- 父级大工单:#96(关联 #1)
- 所属 MVP:#253
- 状态:待验收
- 日期:2026-08-18
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/266>
## 背景与目标
Client 完整遍历 PDD 第二规格后,规格面板可能停在尺码列表末端,已选颜色因滑出当前无障碍控件树而暂时不可见。原实现先复核颜色、后恢复颜色区域,会把“暂时不可见”误报为 `PURCHASE_SPEC_CONTEXT_CHANGED`。本任务调整安全复核顺序,同时保留颜色、页面、候选快照和最终选中门禁。
## 最终方案
- Admin 返回规格解析结果后,先确认页面仍为规格确认页。
- 使用既有有界手势恢复颜色区域,并使用恢复函数返回的最新控件树复核目标颜色。
- 颜色仍明确选中才重新完整读取尺码候选、复算候选快照并点击返回尺码。
- 无法恢复颜色区域时返回 `PURCHASE_PANEL_COLOR_REGION_NOT_FOUND`;恢复后目标颜色没有选中证据时仍返回 `PURCHASE_SPEC_CONTEXT_CHANGED`。
- 不跳过颜色复核,不改变 Admin 接口、AI 结果、不可逆标记或单次提交规则。
## 改了哪些文件
- `client/src/pdd_u2_purchase_adapter.py`
- `client/test/test_pdd_u2_purchase_adapter.py`
- `docs/client/06-quality-security.md`
实现提交:`b0cddb9`
## 验收结果
- [x] 颜色节点仅因第二规格遍历滑出控件树时,先恢复颜色区域再复核。
- [x] 恢复后重新读取控件树,并继续使用繁简体归一化后的强选中证据。
- [x] 明确换色仍返回 `PURCHASE_SPEC_CONTEXT_CHANGED`,不会点击返回尺码。
- [x] 无法恢复颜色区域时返回 `PURCHASE_PANEL_COLOR_REGION_NOT_FOUND`,不会读取候选或点击尺码。
- [x] 页面、候选快照和最终尺码选中门禁保持不变。
- [x] 全部操作仍发生在不可逆标记之前。
## 测试
在 `client/` 目录执行:
```powershell
C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py
C:/Python310/python.exe -m pytest -q test/test_pdd_u2_purchase_adapter.py test/test_purchase_task_service.py
C:/Python310/python.exe -m pytest -q test
$env:QT_QPA_PLATFORM="offscreen"
C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); print('OK'); app.quit()"
Remove-Item Env:QT_QPA_PLATFORM
```
结果:
- 语法检查通过。
- 定向测试 84 项全部通过。
- Client 全量测试 528 项通过、2 项失败;失败是工作区现有 `src/version.py` 为 `0.1.2`,两项旧测试仍期待 `0.1.0`,与本任务无关。
- 离屏 UI 冒烟打印 `OK`。
未验证到的部分:未在真实 Android 设备上复现长尺码列表后的颜色区域恢复;未执行真实规格点击、提交订单或付款。