diff --git a/docs/task/268-兼容无维度名摘要的纵向颜色列表归位.md b/docs/task/268-兼容无维度名摘要的纵向颜色列表归位.md new file mode 100644 index 0000000..d4cf3ec --- /dev/null +++ b/docs/task/268-兼容无维度名摘要的纵向颜色列表归位.md @@ -0,0 +1,66 @@ +# #268 Client:兼容无维度名摘要的纵向颜色列表归位 + +- 工单号:#268 +- 类型:缺陷修复 +- 父级大工单:#96(关联 #1) +- 所属 MVP:#97 +- 状态:待验收 +- 日期:2026-08-18 +- Gitea: + +## 背景与目标 + +采购目标颜色为繁体 `寵粉誘惑-E01【一件】`,PDD 控件树显示简体规格。现有繁简归一化能够得到同一比较键,但规格面板记住了纵向颜色列表中部位置,只显示 E09~E16;“已选”摘要不包含“颜色分类”维度名,导致 Client 没有把列表归位到包含 E01 的顶部,最终误报目标不可见。 + +## 最终方案 + +- 保留现有 Windows `LCMapStringEx` 繁简归一化和唯一候选规则,不修改目标原文。 +- “已选”摘要包含颜色维度名时继续使用原归位规则。 +- 摘要不包含维度名时,只有以下结构证据全部成立才允许归位: + - 当前存在第二规格标题; + - 规格面板只有一个可靠的纵向滚动容器; + - 第二规格标题位于该容器内; + - 标题上方至少存在两个完整、可见、可点击且不是操作控件的规格卡片。 +- 证据成立后复用既有有界向顶部滑动,看到正式颜色标题和可靠颜色选项即停止。 +- 归位后继续用精确或唯一繁简等价规则匹配目标颜色;不按编号或近似文字猜测。 +- 单规格、候选不足、多个滚动容器或无法到达颜色标题时安全停止。 + +## 改了哪些文件 + +- `client/src/pdd_u2_purchase_adapter.py` +- `client/test/test_pdd_u2_purchase_adapter.py` +- `docs/client/06-quality-security.md` + +实现提交:`ad9f4e6` + +## 验收结果 + +- [x] 繁体任务颜色和简体 PDD 颜色继续按唯一繁简等价规则匹配。 +- [x] 无维度名摘要、纵向列表停在中部时可以用强结构证据触发归位。 +- [x] 归位后只点击唯一的简体 E01 卡片并确认选中。 +- [x] 单规格尺码面板不会被误判为颜色列表。 +- [x] 标题上方只有一个候选或存在多个滚动容器时不会触发归位。 +- [x] 归位和查找均有次数上限,不循环滑动或猜测点击。 +- [x] 当前真实设备控件树只读判定结果为 `RESTORE_REQUIRED=True`,未执行滑动或点击。 + +## 测试 + +在 `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_select_color_size.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 +``` + +结果: + +- 语法检查通过。 +- 定向测试 83 项全部通过。 +- Client 全量测试 532 项通过、2 项失败;失败是工作区现有 `src/version.py` 为 `0.1.2`,两项旧测试仍期待 `0.1.0`,与本任务无关。 +- 离屏 UI 冒烟打印 `OK`。 + +未验证到的部分:未在真实 Android 设备执行颜色列表归位或点击 E01;未执行真实规格选择、提交订单或付款。