Files
cmautobuy/docs/task/270-client自绘颜色行安全点击误判.md
T
2026-08-18 16:41:17 +08:00

59 lines
3.3 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.
# 270 Client:修复自绘颜色行与款式节点导致的安全点击误判
- 类型:缺陷
- 父级大工单:#96(Client Epic #1)
- 所属 MVP / 版本:#253 采购运行时 AI 规格纠偏闭环
- 状态:已完成
- 日期:2026-08-18
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/270>
## 背景与目标
部分 PDD 商品的规格面板使用没有 `scrollable=true` 的自绘横向颜色行。同一行的颜色选项可能叫“款式”,旧逻辑会把该选项误判为规格标题,导致真实颜色区域计算错误,最终报出“目标颜色没有完整可见的安全点击位置”。
目标是在保持安全点击和繁简匹配规则的前提下,正确识别自绘颜色行中的完整目标卡片。
## 最终方案
- 无滚动属性的颜色行中,先从目标颜色节点向上寻找完整、可点击、宽度足够且高度受限的父级行作为安全区域。
- 只有找不到可靠父级行时,才继续使用原有的颜色标题和下一规格标题推算逻辑。
- `normalize_spec_text()` 仍只用于繁简等价比较;实际点击和选中确认继续使用页面/任务原始文字。
- 保留繁简归一化后的多候选歧义停止规则,不使用模糊坐标或盲点。
- 增加脱敏 XML 回归测试,覆盖长繁体颜色、同一行“款式”节点和无滚动属性。
## 改了哪些
- `client/src/util/select_color_size.py`:增加目标节点父级颜色行区域识别,避免同名“款式”节点干扰区域计算。
- `client/test/test_select_color_size.py`:增加自绘颜色行和繁体原文点击回归测试。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 同行存在“款式”颜色选项时不再误判颜色分类标题 | 通过 |
| 无 `scrollable=true` 的自绘颜色行中完整目标颜色可以安全点击并确认 | 通过 |
| 长繁体目标可匹配页面原文,点击仍使用原始文字 | 通过 |
| 繁简归一化后存在多个候选时仍停止并报告歧义 | 通过(原有测试通过) |
| 既有简体颜色、尺码、套餐和多行颜色测试通过 | 通过 |
| 数量、价格、地址、不可逆下单和只读核单门禁未改变 | 通过(未修改相关代码) |
| Python 3.10 单元测试、编译和离屏 UI 检查通过 | 通过 |
## 测试
- 执行的命令:
- `C:/Python310/python.exe -m pytest test/test_select_color_size.py test/test_pdd_u2_purchase_adapter.py -q`
- `C:/Python310/python.exe -m pytest test -q`
- `C:/Python310/python.exe -m py_compile src/util/select_color_size.py src/pdd_u2_purchase_adapter.py`
- 设置 `QT_QPA_PLATFORM=offscreen` 后创建并关闭 `MainWindow`。
- 结果:规格选择和采购适配器测试 84 项通过;Client 全量测试 533 项通过、2 项失败,失败均为工作区现有版本号 `0.1.3` 与旧测试固定期望 `0.1.0` 不一致,与本任务无关;编译和离屏 UI 检查通过。
- **没验证到的部分**:未使用真实 Android 设备复现并执行完整采购链路,未连接真实 Admin,未执行自动付款。
## 遗留问题
- 真实 PDD 页面和设备上的端到端回归仍需单独执行。
- 工作区已有的版本号测试断言不在本任务范围内。
## 相关提交
- `e2ed00c` 修复自绘颜色行安全点击误判。