Client:稳定进入收货地址编辑页并限制修改重试 #179

Closed
opened 2026-08-12 10:57:10 +08:00 by ila · 2 comments
Owner

1. 基本信息

  • 类型:Client 采购缺陷修复
  • 父级大工单:#1
  • 所属 MVP:#2
  • 阶段:正式采购地址更新稳定性

2. 要解决什么

最新采购任务 cg4 报错:

PURCHASE_ADDRESS_PAGE_TIMEOUT:收货地址页面切换或保存确认超时,未进入不可逆下单阶段

已确认现场:

  • 数据库诊断为 expected_page=edit。
  • 已成功进入标题为“收货地址”的地址列表面板。
  • 唯一“修改”按钮存在,坐标为 [954,674][1044,734],中心点 (999,704)。
  • 点击后页面仍停留在地址列表面板,没有出现编辑输入框。
  • irreversible_action_at 为空,地址未修改、没有下单。
  • #173 地址流程对“修改”只点击一次,地址面板刚出现时没有稳定等待,也没有在原页面保持不变时执行受控重试。
  • #178 只修改颜色选择;它让流程继续到地址阶段,但不是本问题根因。

3. 做什么 / 不做什么

做什么

  • 地址面板连续两次识别到相同的唯一“修改”目标后才点击。
  • 第一次点击后,只有明确确认仍停留在同一地址面板、且“修改”仍是同一唯一目标时,才允许最多重试一次。
  • 页面进入编辑页后立即停止点击。
  • 页面进入未知状态、候选变化或不唯一时立即停止,不重试。
  • 编辑页识别使用“修改收货地址”标题或唯一详细地址编辑器的强证据。
  • 超时诊断记录期望页面、最后识别页面、修改点击次数、候选数量,并保存脱敏控件树。
  • 增加首次点击丢失、二次成功及持续失败不超过两次的测试。

不做什么

  • 不重试“保存”按钮;保存仍只点击一次。
  • 不修改地址后缀规则、输入框选择和保存后回读规则。
  • 不修改颜色、尺码、数量、价格、提交订单、不可逆门禁和核单流程。
  • 不连接真机执行测试,不提交原始地址 XML。

4. 已确认的实现方案

预计修改:

  • client/src/pdd_u2_purchase_adapter.py
    • 增加地址页面类型识别。
    • 增加“稳定识别 → 点击修改 → 原页面确认 → 最多重试一次 → 等待编辑页”的专用方法。
    • 超时时调用现有脱敏 XML 保存能力。
    • 保持保存按钮现有单次点击流程。
  • client/test/test_pdd_u2_purchase_adapter.py
    • 模拟首次修改点击被页面动画吞掉、第二次成功。
    • 模拟两次点击都失败,确认停止、诊断完整且未保存地址。
    • 保持原地址完整流程和采购安全测试通过。

5. 验收标准

  • 地址面板稳定后才点击“修改”。
  • 首次点击无效且明确仍在原面板时,第二次点击可以进入编辑页。
  • 修改按钮最多点击两次,持续失败后安全停止。
  • 页面未知、候选不唯一或候选变化时不重复点击。
  • 保存按钮仍只点击一次。
  • 超时包含最后页面、点击次数和脱敏控件树诊断。
  • 未修改不可逆下单门禁。
  • Client 全量测试通过。

6. 验证方式

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

预期:采购 Adapter 和 Client 全量测试全部通过。

风险和回退

  • 风险:重复点击“修改”可能在页面已经切换时误触编辑页其他位置。
  • 控制:仅在最新控件树明确仍为地址面板、同一唯一目标连续稳定时允许第二次点击;未知或已切页绝不点击。
  • 风险:采购地址修改属于正式采购流程。
  • 控制:不重试保存、不修改提交订单及不可逆门禁;本任务自动测试不连接真机。
  • 回退:恢复“修改”单次点击后直接等待编辑页;���存和其他采购流程无需回退。

7. 实施结果

  • 状态:已完成,待用户真机验收。
  • 实现提交:7c56981
  • 归档提交:4df023a
  • 归档文档:docs/task/179-稳定进入收货地址编辑页.md
  • 专项测试:33 项通过。
  • Client 全量回归:451 项通过。
  • 未验证:未连接真机,未点击地址修改、保存或下单。
## 1. 基本信息 - 类型:Client 采购缺陷修复 - 父级大工单:#1 - 所属 MVP:#2 - 阶段:正式采购地址更新稳定性 ## 2. 要解决什么 最新采购任务 cg4 报错: `PURCHASE_ADDRESS_PAGE_TIMEOUT:收货地址页面切换或保存确认超时,未进入不可逆下单阶段` 已确认现场: - 数据库诊断为 `expected_page=edit`。 - 已成功进入标题为“收货地址”的地址列表面板。 - 唯一“修改”按钮存在,坐标为 `[954,674][1044,734]`,中心点 `(999,704)`。 - 点击后页面仍停留在地址列表面板,没有出现编辑输入框。 - `irreversible_action_at` 为空,地址未修改、没有下单。 - #173 地址流程对“修改”只点击一次,地址面板刚出现时没有稳定等待,也没有在原页面保持不变时执行受控重试。 - #178 只修改颜色选择;它让流程继续到地址阶段,但不是本问题根因。 ## 3. 做什么 / 不做什么 ### 做什么 - 地址面板连续两次识别到相同的唯一“修改”目标后才点击。 - 第一次点击后,只有明确确认仍停留在同一地址面板、且“修改”仍是同一唯一目标时,才允许最多重试一次。 - 页面进入编辑页后立即停止点击。 - 页面进入未知状态、候选变化或不唯一时立即停止,不重试。 - 编辑页识别使用“修改收货地址”标题或唯一详细地址编辑器的强证据。 - 超时诊断记录期望页面、最后识别页面、修改点击次数、候选数量,并保存脱敏控件树。 - 增加首次点击丢失、二次成功及持续失败不超过两次的测试。 ### 不做什么 - 不重试“保存”按钮;保存仍只点击一次。 - 不修改地址后缀规则、输入框选择和保存后回读规则。 - 不修改颜色、尺码、数量、价格、提交订单、不可逆门禁和核单流程。 - 不连接真机执行测试,不提交原始地址 XML。 ## 4. 已确认的实现方案 预计修改: - `client/src/pdd_u2_purchase_adapter.py` - 增加地址页面类型识别。 - 增加“稳定识别 → 点击修改 → 原页面确认 → 最多重试一次 → 等待编辑页”的专用方法。 - 超时时调用现有脱敏 XML 保存能力。 - 保持保存按钮现有单次点击流程。 - `client/test/test_pdd_u2_purchase_adapter.py` - 模拟首次修改点击被页面动画吞掉、第二次成功。 - 模拟两次点击都失败,确认停止、诊断完整且未保存地址。 - 保持原地址完整流程和采购安全测试通过。 ## 5. 验收标准 - [x] 地址面板稳定后才点击“修改”。 - [x] 首次点击无效且明确仍在原面板时,第二次点击可以进入编辑页。 - [x] 修改按钮最多点击两次,持续失败后安全停止。 - [x] 页面未知、候选不唯一或候选变化时不重复点击。 - [x] 保存按钮仍只点击一次。 - [x] 超时包含最后页面、点击次数和脱敏控件树诊断。 - [x] 未修改不可逆下单门禁。 - [x] Client 全量测试通过。 ## 6. 验证方式 从 `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" ``` 预期:采购 Adapter 和 Client 全量测试全部通过。 ## 风险和回退 - 风险:重复点击“修改”可能在页面已经切换时误触编辑页其他位置。 - 控制:仅在最新控件树明确仍为地址面板、同一唯一目标连续稳定时允许第二次点击;未知或已切页绝不点击。 - 风险:采购地址修改属于正式采购流程。 - 控制:不重试保存、不修改提交订单及不可逆门禁;本任务自动测试不连接真机。 - 回退:恢复“修改”单次点击后直接等待编辑页;���存和其他采购流程无需回退。 ## 7. 实施结果 - 状态:已完成,待用户真机验收。 - 实现提交:`7c56981` - 归档提交:`4df023a` - 归档文档:`docs/task/179-稳定进入收货地址编辑页.md` - 专项测试:33 项通过。 - Client 全量回归:451 项通过。 - 未验证:未连接真机,未点击地址修改、保存或下单。
Author
Owner

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

  • 实现提交:7c56981
  • 归档提交:4df023a
  • 专项测试:33 项通过
  • Client 全量回归:451 项通过
  • 未执行真机地址修改、保存、提交订单或其他不可逆操作

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

实现与归档已完成,当前等待用户真机验收。 - 实现提交:`7c56981` - 归档提交:`4df023a` - 专项测试:33 项通过 - Client 全量回归:451 项通过 - 未执行真机地址修改、保存、提交订单或其他不可逆操作 父工单 #1、#2 的 #179 清单保持未勾选,用户验收通过后再关闭并同步。
Author
Owner

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

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