Files
cmautobuy/docs/task/268-兼容无维度名摘要的纵向颜色列表归位.md
2026-08-18 14:43:12 +08:00

67 lines
3.2 KiB
Markdown
Raw Permalink 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.
# #268 Client:兼容无维度名摘要的纵向颜色列表归位
- 工单号:#268
- 类型:缺陷修复
- 父级大工单:#96(关联 #1)
- 所属 MVP:#97
- 状态:待验收
- 日期:2026-08-18
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/268>
## 背景与目标
采购目标颜色为繁体 `寵粉誘惑-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;未执行真实规格选择、提交订单或付款。