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

2.9 KiB
Raw Blame History

#266 Client:修正规格候选遍历后的颜色复核顺序

背景与目标

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

验收结果

  • 颜色节点仅因第二规格遍历滑出控件树时,先恢复颜色区域再复核。
  • 恢复后重新读取控件树,并继续使用繁简体归一化后的强选中证据。
  • 明确换色仍返回 PURCHASE_SPEC_CONTEXT_CHANGED,不会点击返回尺码。
  • 无法恢复颜色区域时返回 PURCHASE_PANEL_COLOR_REGION_NOT_FOUND,不会读取候选或点击尺码。
  • 页面、候选快照和最终尺码选中门禁保持不变。
  • 全部操作仍发生在不可逆标记之前。

测试

在 client/ 目录执行:

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 设备上复现长尺码列表后的颜色区域恢复;未执行真实规格点击、提交订单或付款。