Client:地址流程关键操作后增加1秒稳定等待 #221

Open
opened 2026-08-14 10:24:30 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:缺陷
  • 父级大工单:#1
  • 所属 MVP / 版本:#2
  • 阶段:正式采购地址流程稳定性

要解决什么

正式采购在规格确认区域选择颜色、尺码后,会依次进入收货地址面板、默认地址编辑页,填写采购编号后缀、保存并返回原规格确认页。当前每个页面切换都保留状态轮询,但部分关键操作完成后会立即读取控件树,真机页面和无障碍树尚未稳定时可能读到旧页面,造成地址页面切换或保存确认超时。

做什么 / 不做什么

  • 做:在地址入口、修改、填写地址、保存、关闭已知 ColorOS 密码本浮层、地址页返回这六类状态改变操作后,统一增加 1 秒稳定等待;继续使用原页面识别、轮询、超时、唯一目标和单次保存门禁。
  • 做:增加自动测试,验证关键操作后发生统一稳定等待,且保存按钮仍只点击一次。
  • 不做:不改变地址后缀生成规则,不修改 Admin 接口、SQLite、任务状态或 pdd_data;不放宽默认地址、唯一按钮、页面识别和不可逆下单安全门禁;不自动付款。

怎么做

  • 在 client/src/pdd_u2_purchase_adapter.py 定义单一地址操作稳定等待常量和小型辅助方法,固定为 1.0 秒。
  • 在六类状态改变操作成功后调用辅助方法,随后继续执行现有基于控件树的页面状态等待,固定等待不能替代状态确认。
  • 保留原 0.2 秒轮询、表单连续稳定读取、保存单击限制、ColorOS 白名单浮层处理和超时诊断。
  • 在 client/test/test_pdd_u2_purchase_adapter.py 使用 Fake Device/Fake Clock 覆盖正常地址闭环及关键等待,不连接真机。
  • 预计修改:
    • client/src/pdd_u2_purchase_adapter.py
    • client/test/test_pdd_u2_purchase_adapter.py

验收标准

  • 点击地址入口后等待 1 秒,再开始确认地址面板。
  • 点击唯一“修改”目标后等待 1 秒,再确认编辑页;原最多一次安全重试规则不变。
  • 写入新地址后等待 1 秒,再确认输入值和保存目标稳定。
  • 单次点击“保存”后等待 1 秒,再确认地址面板或原规格确认页。
  • 关闭已知 ColorOS 密码本浮层后等待 1 秒,再继续确认页面。
  • 点击地址页返回后等待 1 秒,再确认回到规格确认页。
  • 原唯一目标、默认地址、表单稳定、超时、不可逆后绝不重下单和禁止付款规则全部保持。
  • 地址专项测试及 Client 回归测试通过。

怎么验证

从 client/ 执行:

C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py
C:/Python310/python.exe -m pytest test/test_pdd_u2_purchase_adapter.py -q --disable-warnings
C:/Python310/python.exe -m pytest test -q --disable-warnings

真机验收:执行一条新的、尚未进入不可逆阶段的采购任务,观察地址入口、修改、输入、保存、浮层处理和返回过程;确认地址只保存一次,回到原规格确认页后才继续采购。不付款。

风险和回退

  • 风险:一次地址闭环最多增加约 6 秒;这是为降低旧控件树误判接受的固定成本。
  • 风险:固定等待不能保证页面一定切换,因此必须保留状态轮询和超时保护。
  • 风险:地址修改属于真实采购下单前步骤;测试只使用 Fake Device,不连接真机、不创建订单。
  • 回退:移除统一稳定等待调用并恢复原状态轮询;不回退地址唯一目标、单次保存和不可逆安全门禁。
## 基本信息 - 类型:缺陷 - 父级大工单:#1 - 所属 MVP / 版本:#2 - 阶段:正式采购地址流程稳定性 ## 要解决什么 正式采购在规格确认区域选择颜色、尺码后,会依次进入收货地址面板、默认地址编辑页,填写采购编号后缀、保存并返回原规格确认页。当前每个页面切换都保留状态轮询,但部分关键操作完成后会立即读取控件树,真机页面和无障碍树尚未稳定时可能读到旧页面,造成地址页面切换或保存确认超时。 ## 做什么 / 不做什么 - 做:在地址入口、修改、填写地址、保存、关闭已知 ColorOS 密码本浮层、地址页返回这六类状态改变操作后,统一增加 1 秒稳定等待;继续使用原页面识别、轮询、超时、唯一目标和单次保存门禁。 - 做:增加自动测试,验证关键操作后发生统一稳定等待,且保存按钮仍只点击一次。 - 不做:不改变地址后缀生成规则,不修改 Admin 接口、SQLite、任务状态或 `pdd_data`;不放宽默认地址、唯一按钮、页面识别和不可逆下单安全门禁;不自动付款。 ## 怎么做 - 在 `client/src/pdd_u2_purchase_adapter.py` 定义单一地址操作稳定等待常量和小型辅助方法,固定为 1.0 秒。 - 在六类状态改变操作成功后调用辅助方法,随后继续执行现有基于控件树的页面状态等待,固定等待不能替代状态确认。 - 保留原 0.2 秒轮询、表单连续稳定读取、保存单击限制、ColorOS 白名单浮层处理和超时诊断。 - 在 `client/test/test_pdd_u2_purchase_adapter.py` 使用 Fake Device/Fake Clock 覆盖正常地址闭环及关键等待,不连接真机。 - 预计修改: - `client/src/pdd_u2_purchase_adapter.py` - `client/test/test_pdd_u2_purchase_adapter.py` ## 验收标准 - [ ] 点击地址入口后等待 1 秒,再开始确认地址面板。 - [ ] 点击唯一“修改”目标后等待 1 秒,再确认编辑页;原最多一次安全重试规则不变。 - [ ] 写入新地址后等待 1 秒,再确认输入值和保存目标稳定。 - [ ] 单次点击“保存”后等待 1 秒,再确认地址面板或原规格确认页。 - [ ] 关闭已知 ColorOS 密码本浮层后等待 1 秒,再继续确认页面。 - [ ] 点击地址页返回后等待 1 秒,再确认回到规格确认页。 - [ ] 原唯一目标、默认地址、表单稳定、超时、不可逆后绝不重下单和禁止付款规则全部保持。 - [ ] 地址专项测试及 Client 回归测试通过。 ## 怎么验证 从 `client/` 执行: ```powershell C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py C:/Python310/python.exe -m pytest test/test_pdd_u2_purchase_adapter.py -q --disable-warnings C:/Python310/python.exe -m pytest test -q --disable-warnings ``` 真机验收:执行一条新的、尚未进入不可逆阶段的采购任务,观察地址入口、修改、输入、保存、浮层处理和返回过程;确认地址只保存一次,回到原规格确认页后才继续采购。不付款。 ## 风险和回退 - 风险:一次地址闭环最多增加约 6 秒;这是为降低旧控件树误判接受的固定成本。 - 风险:固定等待不能保证页面一定切换,因此必须保留状态轮询和超时保护。 - 风险:地址修改属于真实采购下单前步骤;测试只使用 Fake Device,不连接真机、不创建订单。 - 回退:移除统一稳定等待调用并恢复原状态轮询;不回退地址唯一目标、单次保存和不可逆安全门禁。
Author
Owner

实施完成,等待真机验收

实现结果

  • 六类关键地址操作后统一等待 1 秒:地址入口、修改、写入地址、保存、ColorOS 浮层返回、地址页返回。
  • 固定等待后继续使用原控件树状态轮询,不替代页面识别和超时。
  • “修改”和 ColorOS 浮层位于既有超时循环内部,已补回固定等待占用的 1 秒预算,保持原超时和安全重试语义。
  • 默认地址、唯一目标、保存单击、不可逆后绝不重下单和禁止付款规则未改变。

验证结果

  • 语法检查:通过。
  • 地址 Adapter 专项:48 项全部通过。
  • Client 全量:470 项中 468 项通过。
  • 另 2 项为既有版本断言失败:工作区版本为 0.1.2,旧更新测试仍期待 0.1.0,与 #221 无关。
  • 未连接真机,未修改真实地址,未创建订单或付款。

提交与归档

  • 实现提交:84ec0ed
  • 归档提交:0201dab
  • 归档:docs/task/221-地址流程关键操作后增加稳定等待.md

当前状态:已完成,待用户真机验收。Epic #1 和 MVP #2 的 #221 清单保持未勾选。

## 实施完成,等待真机验收 ### 实现结果 - 六类关键地址操作后统一等待 1 秒:地址入口、修改、写入地址、保存、ColorOS 浮层返回、地址页返回。 - 固定等待后继续使用原控件树状态轮询,不替代页面识别和超时。 - “修改”和 ColorOS 浮层位于既有超时循环内部,已补回固定等待占用的 1 秒预算,保持原超时和安全重试语义。 - 默认地址、唯一目标、保存单击、不可逆后绝不重下单和禁止付款规则未改变。 ### 验证结果 - 语法检查:通过。 - 地址 Adapter 专项:48 项全部通过。 - Client 全量:470 项中 468 项通过。 - 另 2 项为既有版本断言失败:工作区版本为 `0.1.2`,旧更新测试仍期待 `0.1.0`,与 #221 无关。 - 未连接真机,未修改真实地址,未创建订单或付款。 ### 提交与归档 - 实现提交:`84ec0ed` - 归档提交:`0201dab` - 归档:`docs/task/221-地址流程关键操作后增加稳定等待.md` 当前状态:已完成,待用户真机验收。Epic #1 和 MVP #2 的 #221 清单保持未勾选。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#221