Files
cmautobuy/docs/task/187-多地址面板只修改默认地址.md
T

3.0 KiB

187 多地址面板只修改已设默认地址

背景与目标

采购进入包含多条收货地址的面板后,整页存在多个“修改”按钮,旧代码要求全页只有一个候选,因此安全停止。页面还同时暴露 PDD 标题栏返回和 Android 系统导航返回。本任务只修改带唯一“已设默认”标记的地址,并排除系统导航栏。

最终方案

  • 把地址列表 RecyclerView 的直接子节点作为独立地址卡片。
  • 多张地址卡片存在时,定位唯一包含精确“已设默认”文字的卡片,只提取该卡片内部的唯一“修改”。
  • 默认卡片可以位于任意行;不按列表顺序选择第一条。
  • 没有默认卡片、默认卡片不唯一或默认卡片内“修改”不唯一时安全停止。
  • 单地址旧页面继续使用全页唯一“修改”,保持兼容。
  • 保存后的地址面板使用相同的默认卡片规则识别。
  • 返回目标必须属于 PDD 包并位于页面左上标题栏,排除 Android 系统导航栏。
  • 继续沿用 #179 的稳定读取和有界重试,以及 #180 的保存单击和系统浮层限制。

改了哪些

  • client/src/pdd_u2_purchase_adapter.py:增加 PDD 包内文字目标、地址卡片、默认卡片修改和标题栏返回解析。
  • client/test/test_pdd_u2_purchase_adapter.py:增加多地址最小控件树及默认地址在不同位置、默认缺失/重复、卡片内修改歧义、系统返回共存测试。

验收结果

验收标准 结果
多地址面板只定位唯一“已设默认”卡片内的修改 通过
默认卡片不在第一行时仍能正确定位 通过
不点击其他地址及其他操作 通过
默认缺失、不唯一或卡片内修改不唯一时停止 通过
单地址旧页面保持兼容 通过
保存后能识别多地址面板 通过
返回只选择 PDD 标题栏并排除系统导航栏 通过
保存、下单和不可逆门禁未修改 通过
Client 全量测试通过 通过

测试

  • 执行的命令:在 client 目录执行 C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_u2_purchase_adapter.py'
  • 结果:42 个采购 Adapter 测试全部通过。
  • 执行的命令:在 client 目录执行 $env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py'
  • 结果:460 个 Client 测试全部通过;仅有测试环境 Qt 字体目录警告。
  • 固件验证:只读解析本机 addresses_panel.xml,得到默认卡片唯一修改目标和 PDD 标题栏唯一返回目标;原始 XML 未提交。
  • 没验证到的部分:未点击真机;未执行真实地址修改、保存、提交订单或其他不可逆操作。

相关提交

  • 9c014ef fix: 多地址面板选择默认地址 (#187)