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

3.3 KiB
Raw Blame History

270 Client:修复自绘颜色行与款式节点导致的安全点击误判

背景与目标

部分 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 修复自绘颜色行安全点击误判。