59 lines
3.3 KiB
Markdown
59 lines
3.3 KiB
Markdown
# 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` 修复自绘颜色行安全点击误判。
|