Client:等待多地址列表稳定后再修改默认地址 #189

Closed
opened 2026-08-12 17:03:37 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:缺陷
  • 父级大工单:#1
  • 所属 MVP / 版本:#2
  • 阶段:正式采购多地址加载稳定性
  • 依赖:#179、#187

要解决什么

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

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

已确认:

  • 运行记录为 candidate_count=0、click_attempts=0、observed_page=panel。
  • irreversible_action_at 为空,没有下单。
  • 失败后停留在同一页面,连续读取 5 次均能稳定定位默认地址的唯一“修改”目标。
  • 地址页标题先进入控件树,RecyclerView 地址卡片和“已设默认”标记稍后才出现。
  • #187 的默认地址规则正确,但进入编辑页状态机在候选数不等于 1 时立即失败,把短暂加载状态误判为最终歧义。

做什么 / 不做什么

做什么

  • 地址标题出现后继续等待地址列表和默认卡片稳定,不把候选数 0 立即判为歧义。
  • 只有同一个唯一默认地址“修改”目标连续稳定出现后才点击。
  • 候选暂时缺失、多个或结构未完成时只重新读取,不点击。
  • 直到地址页面总超时仍无法唯一定位时才安全失败。
  • 超时诊断增加地址卡片数、默认卡片数、修改候选数、最后页面、稳定读取次数和脱敏 XML。
  • 增加“标题先出现、列表后出现”、持续无候选、持续多默认及目标变化测试。

不做什么

  • 不退化为点击第一条地址。
  • 不点击“使用、置顶、复制、删除”。
  • 不修改地址内容规则、保存、系统浮层、颜色尺码、下单、不可逆门禁和核单。
  • 不操作真机、不重新执行 cg11。

怎么做

预计修改:

  • client/src/pdd_u2_purchase_adapter.py
    • 地址目标解析同时返回卡片数、默认卡片数等结构诊断。
    • 修改进入编辑页循环:非唯一目标继续等待;唯一目标仍需连续稳定读取。
    • 超时时输出结构诊断和现有脱敏控件树。
  • client/test/test_pdd_u2_purchase_adapter.py
    • 模拟地址标题先出现、下一轮才出现完整多地址列表。
    • 模拟持续无候选、持续多个默认卡片和坐标变化,断言不点击。
    • 保持 #179、#180、#187 用例通过。

不改数据库和 Admin 接口。

验收标准

  • 地址标题先出现、列表稍后出现时不会立即失败。
  • 唯一默认地址修改目标连续稳定后才点击。
  • 候选为 0、多个或坐标变化时不点击。
  • 持续无法唯一定位时到达有界超时并安全失败。
  • 超时诊断包含地址卡片数、默认卡片数、候选数、稳定读取次数和脱敏 XML。
  • 多地址默认选择、保存、下单和不可逆门禁行为不变。
  • Client 全量测试通过(461 项通过;2 项无关版本基线断言仍失败)。

怎么验证

从 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"

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

风险和回退

  • 风险:真正歧义页面需要等待到超时才报告,失败时间比旧逻辑略长。
  • 控制:等待期间不发生点击;总时长受现有 panel_timeout 限制。
  • 风险:页面加载期间目标坐标变化。
  • 控制:坐标变化会清空稳定计数,必须重新连续稳定。
  • 回退:恢复非唯一候选立即失败;采购其他阶段无需回退。

实施结果

  • 状态:代码已完成,待用户真机验收;完整回归存在 2 个与本工单无关的版本基线失败。
  • 实现提交:41d1b13
  • 归档提交:275b988
  • 归档:docs/task/189-等待多地址列表稳定加载.md
  • 专项测试:45 项通过。
  • Client 回归:461 项通过;test_update_service、test_update_ui_event 各 1 项仍期待 0.1.0,但用户工作区版本已为 0.1.1。
  • 未验证:未重新执行 cg11,未执行真机点击、地址保存、下单或不可逆操作。
## 基本信息 - 类型:缺陷 - 父级大工单:#1 - 所属 MVP / 版本:#2 - 阶段:正式采购多地址加载稳定性 - 依赖:#179、#187 ## 要解决什么 采购任务 cg11 进入多地址“收货地址”面板后失败: `PURCHASE_ADDRESS_EDIT_AMBIGUOUS:收货地址页没有唯一可靠的修改按钮` 已确认: - 运行记录为 `candidate_count=0`、`click_attempts=0`、`observed_page=panel`。 - `irreversible_action_at` 为空,没有下单。 - 失败后停留在同一页面,连续读取 5 次均能稳定定位默认地址的唯一“修改”目标。 - 地址页标题先进入控件树,RecyclerView 地址卡片和“已设默认”标记稍后才出现。 - #187 的默认地址规则正确,但进入编辑页状态机在候选数不等于 1 时立即失败,把短暂加载状态误判为最终歧义。 ## 做什么 / 不做什么 ### 做什么 - 地址标题出现后继续等待地址列表和默认卡片稳定,不把候选数 0 立即判为歧义。 - 只有同一个唯一默认地址“修改”目标连续稳定出现后才点击。 - 候选暂时缺失、多个或结构未完成时只重新读取,不点击。 - 直到地址页面总超时仍无法唯一定位时才安全失败。 - 超时诊断增加地址卡片数、默认卡片数、修改候选数、最后页面、稳定读取次数和脱敏 XML。 - 增加“标题先出现、列表后出现”、持续无候选、持续多默认及目标变化测试。 ### 不做什么 - 不退化为点击第一条地址。 - 不点击“使用、置顶、复制、删除”。 - 不修改地址内容规则、保存、系统浮层、颜色尺码、下单、不可逆门禁和核单。 - 不操作真机、不重新执行 cg11。 ## 怎么做 预计修改: - `client/src/pdd_u2_purchase_adapter.py` - 地址目标解析同时返回卡片数、默认卡片数等结构诊断。 - 修改进入编辑页循环:非唯一目标继续等待;唯一目标仍需连续稳定读取。 - 超时时输出结构诊断和现有脱敏控件树。 - `client/test/test_pdd_u2_purchase_adapter.py` - 模拟地址标题先出现、下一轮才出现完整多地址列表。 - 模拟持续无候选、持续多个默认卡片和坐标变化,断言不点击。 - 保持 #179、#180、#187 用例通过。 不改数据库和 Admin 接口。 ## 验收标准 - [x] 地址标题先出现、列表稍后出现时不会立即失败。 - [x] 唯一默认地址修改目标连续稳定后才点击。 - [x] 候选为 0、多个或坐标变化时不点击。 - [x] 持续无法唯一定位时到达有界超时并安全失败。 - [x] 超时诊断包含地址卡片数、默认卡片数、候选数、稳定读取次数和脱敏 XML。 - [x] 多地址默认选择、保存、下单和不可逆门禁行为不变。 - [ ] Client 全量测试通过(461 项通过;2 项无关版本基线断言仍失败)。 ## 怎么验证 从 `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" ``` 本工单不执行真机点击、地址保存或下单。 ## 风险和回退 - 风险:真正歧义页面需要等待到超时才报告,失败时间比旧逻辑略长。 - 控制:等待期间不发生点击;总时长受现有 `panel_timeout` 限制。 - 风险:页面加载期间目标坐标变化。 - 控制:坐标变化会清空稳定计数,必须重新连续稳定。 - 回退:恢复非唯一候选立即失败;采购其他阶段无需回退。 ## 实施结果 - 状态:代码已完成,待用户真机验收;完整回归存在 2 个与本工单无关的版本基线失败。 - 实现提交:`41d1b13` - 归档提交:`275b988` - 归档:`docs/task/189-等待多地址列表稳定加载.md` - 专项测试:45 项通过。 - Client 回归:461 项通过;`test_update_service`、`test_update_ui_event` 各 1 项仍期待 0.1.0,但用户工作区版本已为 0.1.1。 - 未验证:未重新执行 cg11,未执行真机点击、地址保存、下单或不可逆操作。
Author
Owner

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

  • 实现提交:41d1b13
  • 归档提交:275b988
  • 采购专项:45 项通过
  • 其余 Client 回归:461 项通过
  • 完整回归另有 2 个无关版本断言失败:工作区版本已为 0.1.1,既有测试仍期待 0.1.0
  • 未重新执行 cg11,未点击真机或进入不可逆阶段

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

实现与归档已完成,当前等待用户真机验收。 - 实现提交:`41d1b13` - 归档提交:`275b988` - 采购专项:45 项通过 - 其余 Client 回归:461 项通过 - 完整回归另有 2 个无关版本断言失败:工作区版本已为 `0.1.1`,既有测试仍期待 `0.1.0` - 未重新执行 cg11,未点击真机或进入不可逆阶段 父工单 #1、#2 的 #189 清单保持未勾选,用户验收通过后再关闭并同步。
Author
Owner

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

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:`ad44f83`。现关闭工单。
ila closed this issue 2026-08-13 15:58:54 +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#189