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

Closed
opened 2026-08-12 16:22:08 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:缺陷
  • 父级大工单:#1
  • 所属 MVP / 版本:#2
  • 阶段:正式采购多地址兼容
  • 依赖:#173、#179、#180

要解决什么

采购任务 cg8 进入多地址“收货地址”面板后失败:

PURCHASE_ADDRESS_EDIT_AMBIGUOUS:收货地址页没有唯一可靠的修改按钮

真机只读检查及 client/image_xml/addresses_panel.xml 已确认:

  • 页面包含两张地址卡片和两个“修改”按钮。
  • 其中一张地址卡片包含唯一“已设默认”标记。
  • 当前代码在整页寻找“修改”并要求全页唯一,因此候选数为 2 时主动停止。
  • 页面还同时暴露 PDD 左上角返回和 Android 系统导航栏返回;整页按文字寻找返回也会产生歧义。

做什么 / 不做什么

做什么

  • 解析地址列表 RecyclerView 的直接子卡片。
  • 在多地址面板中定位唯一包含精确“已设默认”标记的地址卡片。
  • 只从该卡片内部提取唯一“修改”按钮,并沿用 #179 的连续稳定读取和最多一次受控重试。
  • 单地址旧页面没有“已设默认”时,允许以全页唯一“修改”保持兼容。
  • 多地址但默认卡片缺失、不唯一,或默认卡片内部“修改”不唯一时安全停止。
  • 保存后的地址面板识别兼容多地址结构。
  • 页面返回仅定位 PDD 包内标题栏左上角的“返回”,排除 Android 系统导航栏。
  • 使用用户提供的 addresses_panel.xml 提取脱敏最小测试固件或在测试中构造等价结构;原始文件不提交 Git。

不做什么

  • 不按列表顺序默认选择第一条地址。
  • 不点击“使用”“置顶”“复制”“删除”等其他操作。
  • 不修改地址分割、保存单击、颜色尺码、下单、不可逆门禁和核单流程。
  • 不操作真机。

怎么做

预计修改:

  • client/src/pdd_u2_purchase_adapter.py
    • 增加地址卡片解析和默认卡片内目标选择。
    • 修改进入编辑页的目标解析,但保留现有稳定点击状态机。
    • 修改保存后地址面板及 PDD 标题栏返回识别。
  • client/test/test_pdd_u2_purchase_adapter.py
    • 覆盖多地址唯一默认卡片、默认卡片不在第一行、默认卡片缺失/重复、默认卡片内修改歧义。
    • 覆盖 PDD 返回与系统返回同时存在。
    • 保持单地址和 #179/#180 测试通过。

不改数据库和 Admin 接口。

验收标准

  • 多地址面板只点击唯一“已设默认”卡片内的“修改”。
  • 默认卡片不在第一行时仍选择正确卡片。
  • 不点击其他地址的“修改”及“使用/置顶/复制/删除”。
  • 默认卡片缺失、不唯一或内部修改不唯一时安全停止。
  • 单地址旧页面保持兼容。
  • 保存后能识别多地址面板。
  • 返回只点击 PDD 标题栏目标,排除 Android 系统导航栏。
  • 保存、最终下单和不可逆门禁行为不变。
  • Client 全量测试通过。

怎么验证

从 client 目录执行:

C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_u2_purchase_adapter.py"
$env:QT_QPA_PLATFORM="offscreen"
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"

本工单不执行真机点击、地址保存或下单。

风险和回退

  • 风险:页面文案变化导致无法识别“已设默认”。
  • 控制:仅在证据唯一时点击;证据缺失安全停止,不退化为第一行。
  • 风险:系统导航栏也暴露“返回”。
  • 控制:返回候选必须属于 PDD 包且位于标题栏。
  • 回退:恢复整页唯一目标规则;地址保存及不可逆门禁无需回退。

实施结果

  • 状态:已完成,待用户真机验收。
  • 实现提交:9c014ef
  • 归档提交:836aad5
  • 归档:docs/task/187-多地址面板只修改默认地址.md
  • 专项测试:42 项通过。
  • Client 全量回归:460 项通过。
  • 用户固件只读解析:默认卡片唯一修改目标、PDD 标题栏唯一返回目标均定位成功;原始 XML 未提交。
  • 未验证:未点击真机,未修改或保存真实地址,未提交订单。
## 基本信息 - 类型:缺陷 - 父级大工单:#1 - 所属 MVP / 版本:#2 - 阶段:正式采购多地址兼容 - 依赖:#173、#179、#180 ## 要解决什么 采购任务 cg8 进入多地址“收货地址”面板后失败: `PURCHASE_ADDRESS_EDIT_AMBIGUOUS:收货地址页没有唯一可靠的修改按钮` 真机只读检查及 `client/image_xml/addresses_panel.xml` 已确认: - 页面包含两张地址卡片和两个“修改”按钮。 - 其中一张地址卡片包含唯一“已设默认”标记。 - 当前代码在整页寻找“修改”并要求全页唯一,因此候选数为 2 时主动停止。 - 页面还同时暴露 PDD 左上角返回和 Android 系统导航栏返回;整页按文字寻找返回也会产生歧义。 ## 做什么 / 不做什么 ### 做什么 - 解析地址列表 RecyclerView 的直接子卡片。 - 在多地址面板中定位唯一包含精确“已设默认”标记的地址卡片。 - 只从该卡片内部提取唯一“修改”按钮,并沿用 #179 的连续稳定读取和最多一次受控重试。 - 单地址旧页面没有“已设默认”时,允许以全页唯一“修改”保持兼容。 - 多地址但默认卡片缺失、不唯一,或默认卡片内部“修改”不唯一时安全停止。 - 保存后的地址面板识别兼容多地址结构。 - 页面返回仅定位 PDD 包内标题栏左上角的“返回”,排除 Android 系统导航栏。 - 使用用户提供的 `addresses_panel.xml` 提取脱敏最小测试固件或在测试中构造等价结构;原始文件不提交 Git。 ### 不做什么 - 不按列表顺序默认选择第一条地址。 - 不点击“使用”“置顶”“复制”“删除”等其他操作。 - 不修改地址分割、保存单击、颜色尺码、下单、不可逆门禁和核单流程。 - 不操作真机。 ## 怎么做 预计修改: - `client/src/pdd_u2_purchase_adapter.py` - 增加地址卡片解析和默认卡片内目标选择。 - 修改进入编辑页的目标解析,但保留现有稳定点击状态机。 - 修改保存后地址面板及 PDD 标题栏返回识别。 - `client/test/test_pdd_u2_purchase_adapter.py` - 覆盖多地址唯一默认卡片、默认卡片不在第一行、默认卡片缺失/重复、默认卡片内修改歧义。 - 覆盖 PDD 返回与系统返回同时存在。 - 保持单地址和 #179/#180 测试通过。 不改数据库和 Admin 接口。 ## 验收标准 - [x] 多地址面板只点击唯一“已设默认”卡片内的“修改”。 - [x] 默认卡片不在第一行时仍选择正确卡片。 - [x] 不点击其他地址的“修改”及“使用/置顶/复制/删除”。 - [x] 默认卡片缺失、不唯一或内部修改不唯一时安全停止。 - [x] 单地址旧页面保持兼容。 - [x] 保存后能识别多地址面板。 - [x] 返回只点击 PDD 标题栏目标,排除 Android 系统导航栏。 - [x] 保存、最终下单和不可逆门禁行为不变。 - [x] Client 全量测试通过。 ## 怎么验证 从 `client` 目录执行: ```powershell C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_u2_purchase_adapter.py" $env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -m unittest discover -s test -p "test_*.py" ``` 本工单不执行真机点击、地址保存或下单。 ## 风险和回退 - 风险:页面文案变化导致无法识别“已设默认”。 - 控制:仅在证据唯一时点击;证据缺失安全停止,不退化为第一行。 - 风险:系统导航栏也暴露“返回”。 - 控制:返回候选必须属于 PDD 包且位于标题栏。 - 回退:恢复整页唯一目标规则;地址保存及不可逆门禁无需回退。 ## 实施结果 - 状态:已完成,待用户真机验收。 - 实现提交:`9c014ef` - 归档提交:`836aad5` - 归档:`docs/task/187-多地址面板只修改默认地址.md` - 专项测试:42 项通过。 - Client 全量回归:460 项通过。 - 用户固件只读解析:默认卡片唯一修改目标、PDD 标题栏唯一返回目标均定位成功;原始 XML 未提交。 - 未验证:未点击真机,未修改或保存真实地址,未提交订单。
Author
Owner

实现和归档已完成,当前等待用户真机验收。

  • 实现提交:9c014ef
  • 归档提交:836aad5
  • 专项测试:42 项通过
  • Client 全量回归:460 项通过
  • addresses_panel.xml 只读解析通过,原始文件未提交
  • 未执行真机点击、地址保存、提交订单或任何不可逆操作

父工单 #1、#2 的 #187 清单保持未勾选,验收通过后再关闭并同步。

实现和归档已完成,当前等待用户真机验收。 - 实现提交:`9c014ef` - 归档提交:`836aad5` - 专项测试:42 项通过 - Client 全量回归:460 项通过 - `addresses_panel.xml` 只读解析通过,原始文件未提交 - 未执行真机点击、地址保存、提交订单或任何不可逆操作 父工单 #1、#2 的 #187 清单保持未勾选,验收通过后再关闭并同步。
Author
Owner

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:ad44f83。现关闭工单。

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:`ad44f83`。现关闭工单。
ila closed this issue 2026-08-13 15:58:51 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#187