3.3 KiB
3.3 KiB
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 -qC:/Python310/python.exe -m pytest test -qC:/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修复自绘颜色行安全点击误判。