diff --git a/docs/task/266-修正规格候选遍历后的颜色复核顺序.md b/docs/task/266-修正规格候选遍历后的颜色复核顺序.md new file mode 100644 index 0000000..0fcd4ab --- /dev/null +++ b/docs/task/266-修正规格候选遍历后的颜色复核顺序.md @@ -0,0 +1,60 @@ +# #266 Client:修正规格候选遍历后的颜色复核顺序 + +- 工单号:#266 +- 类型:缺陷修复 +- 父级大工单:#96(关联 #1) +- 所属 MVP:#253 +- 状态:待验收 +- 日期:2026-08-18 +- Gitea: + +## 背景与目标 + +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 设备上复现长尺码列表后的颜色区域恢复;未执行真实规格点击、提交订单或付款。