Client:修复地址后缀分割并兼容保存后的 ColorOS 浮层 #180

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

基本信息

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

要解决什么

最新采购任务 cg4 已进入地址编辑页、修改地址并点击保存,但最终报错:

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

已确认两个独立根因:

  1. 地址后缀处理只删除 cg数字、时间戳/十六进制等白名单后缀。已有地址包含其他 - 或 _ 后缀时不会分割,会继续追加采购编号,不符合已确认的“按 - 或 _ 分割并取下标 0”规则。
  2. 最新运行诊断为 expected_page=saved、observed_page=unknown。保存后的脱敏控件树由 OPPO/ColorOS 密码本包 com.coloros.codebook 占据,PDD 地址面板内容没有暴露;代码因此没有进入点击“返回”的步骤。

#179 已使流程成功进入编辑页,本缺陷发生在其后的保存确认阶段。

做什么 / 不做什么

做什么

  • 地址使用第一个 - 或 _ 分割,取下标 0 后拼接 _ 和当前采购编号。
  • 保存后识别 com.coloros.codebook 系统浮层,先等待其自行消失,不点击浮层内容。
  • 浮层持续存在时,基于最新控件树再次确认后最多按一次系统返回键。
  • 返回键后重新读取页面;接受可靠的 PDD 地址面板,继续点击唯一“返回”目标。
  • 地址面板优先以完整新地址确认;完整地址未暴露时,使用“收货地址标题 + 唯一修改按钮 + 唯一返回按钮”的组合证据确认。
  • 记录期望页面、观察页面、系统浮层、返回键次数及脱敏 XML。
  • 增加地址任意后缀、浮层自行消失、单次返回关闭浮层、未知浮层和返回后异常页面测试。

不做什么

  • 不点击 ColorOS 浮层中的 Snackbar 或任何操作按钮。
  • 不重复点击保存;保存仍只点击一次。
  • 不修改颜色、尺码、数量、价格、最终提交、不可逆门禁和核单流程。
  • 不连接真机,不执行真实地址保存或下单。

怎么做

预计修改:

  • client/src/pdd_u2_purchase_adapter.py
    • 按已确认分隔规则重建地址。
    • 增加地址面板强证据和 ColorOS 密码本浮层识别。
    • 把保存后等待改为有界状态机;系统返回最多一次且仅用于已确认的密码本浮层。
    • 扩充脱敏诊断。
  • client/test/test_pdd_u2_purchase_adapter.py
    • 覆盖任意 - / _ 后缀。
    • 覆盖浮层自行消失、需要一次返回、持续未知以及安全停止。
    • 断言保存仍只点击一次、系统返回最多一次。

不改数据库和 Admin 接口。

验收标准

  • 任意已有 - 或 _ 后缀均按第一个分隔符截断,只保留地址主体并追加当前采购编号。
  • 保存按钮仍只点击一次。
  • ColorOS 密码本浮层自行消失时不按返回、不点击浮层。
  • 浮层持续存在时最多按一次系统返回键,且按键前后都读取最新页面。
  • 非 com.coloros.codebook 未知页面不按返回、不继续点击。
  • 地址面板完整地址未暴露时可用可靠组合证据识别。
  • 返回地址面板后点击唯一返回目标并回到规格确认页。
  • 不可逆下单门禁未修改。
  • 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 页面。
  • 控制:只在最新控件树仍明确包含 com.coloros.codebook 全屏焦点浮层时���一次,随后绝不再次按键。
  • 风险:按第一个分隔符���断可能删除地址主体中本来存在的连字符或下划线。
  • 控制:这是用户明确确认的业务规则,并通过测试固定;如需更精细规则应另行确认。
  • 回退:恢复原白名单后缀替换与保存后严格完整地址校验;保存、下单和不可逆门禁无需回退。

实施结果

  • 状态:已完成,待用户真机验收。
  • 实现提交:669f144
  • 归档提交:8c7be7b
  • 归档:docs/task/180-修复地址后缀分割并兼容保存浮层.md
  • 专项测试:38 项通过。
  • Client 全量回归:456 项通过。
  • 未验证:未连接真机,未修改或保存真实地址,未提交订单。
## 基本信息 - 类型:缺陷 - 父级大工单:#1 - 所属 MVP / 版本:#2 - 阶段:正式采购地址更新稳定性 - 依赖:#173、#179 ## 要解决什么 最新采购任务 `cg4` 已进入地址编辑页、修改地址并点击保存,但最终报错: `PURCHASE_ADDRESS_PAGE_TIMEOUT:收货地址页面切换或保存确认超时,未进入不可逆下单阶段` 已确认两个独立根因: 1. 地址后缀处理只删除 `cg数字`、时间戳/十六进制等白名单后缀。已有地址包含其他 `-` 或 `_` 后缀时不会分割,会继续追加采购编号,不符合已确认的“按 `-` 或 `_` 分割并取下标 0”规则。 2. 最新运行诊断为 `expected_page=saved`、`observed_page=unknown`。保存后的脱敏控件树由 OPPO/ColorOS 密码本包 `com.coloros.codebook` 占据,PDD 地址面板内容没有暴露;代码因此没有进入点击“返回”的步骤。 #179 已使流程成功进入编辑页,本缺陷发生在其后的保存确认阶段。 ## 做什么 / 不做什么 ### 做什么 - 地址使用第一个 `-` 或 `_` 分割,取下标 0 后拼接 `_` 和当前采购编号。 - 保存后识别 `com.coloros.codebook` 系统浮层,先等待其自行消失,不点击浮层内容。 - 浮层持续存在时,基于最新控件树再次确认后最多按一次系统返回键。 - 返回键后重新读取页面;接受可靠的 PDD 地址面板,继续点击唯一“返回”目标。 - 地址面板优先以完整新地址确认;完整地址未暴露时,使用“收货地址标题 + 唯一修改按钮 + 唯一返回按钮”的组合证据确认。 - 记录期望页面、观察页面、系统浮层、返回键次数及脱敏 XML。 - 增加地址任意后缀、浮层自行消失、单次返回关闭浮层、未知浮层和返回后异常页面测试。 ### 不做什么 - 不点击 ColorOS 浮层中的 Snackbar 或任何操作按钮。 - 不重复点击保存;保存仍只点击一次。 - 不修改颜色、尺码、数量、价格、最终提交、不可逆门禁和核单流程。 - 不连接真机,不执行真实地址保存或下单。 ## 怎么做 预计修改: - `client/src/pdd_u2_purchase_adapter.py` - 按已确认分隔规则重建地址。 - 增加地址面板强证据和 ColorOS 密码本浮层识别。 - 把保存后等待改为有界状态机;系统返回最多一次且仅用于已确认的密码本浮层。 - 扩充脱敏诊断。 - `client/test/test_pdd_u2_purchase_adapter.py` - 覆盖任意 `-` / `_` 后缀。 - 覆盖浮层自行消失、需要一次返回、持续未知以及安全停止。 - 断言保存仍只点击一次、系统返回最多一次。 不改数据库和 Admin 接口。 ## 验收标准 - [x] 任意已有 `-` 或 `_` 后缀均按第一个分隔符截断,只保留地址主体并追加当前采购编号。 - [x] 保存按钮仍只点击一次。 - [x] ColorOS 密码本浮层自行消失时不按返回、不点击浮层。 - [x] 浮层持续存在时最多按一次系统返回键,且按键前后都读取最新页面。 - [x] 非 `com.coloros.codebook` 未知页面不按返回、不继续点击。 - [x] 地址面板完整地址未暴露时可用可靠组合证据识别。 - [x] 返回地址面板后点击唯一返回目标并回到规格确认页。 - [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 页面。 - 控制:只在最新控件树仍明确包含 `com.coloros.codebook` 全屏焦点浮层时���一次,随后绝不再次按键。 - 风险:按第一个分隔符���断可能删除地址主体中本来存在的连字符或下划线。 - 控制:这是用户明确确认的业务规则,并通过测试固定;如需更精细规则应另行确认。 - 回退:恢复原白名单后缀替换与保存后严格完整地址校验;保存、下单和不可逆门禁无需回退。 ## 实施结果 - 状态:已完成,待用户真机验收。 - 实现提交:`669f144` - 归档提交:`8c7be7b` - 归档:`docs/task/180-修复地址后缀分割并兼容保存浮层.md` - 专项测试:38 项通过。 - Client 全量回归:456 项通过。 - 未验证:未连接真机,未修改或保存真实地址,未提交订单。
Author
Owner

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

  • 实现提交:669f144
  • 归档提交:8c7be7b
  • 专项测试:38 项通过
  • Client 全量回归:456 项通过
  • 未执行真机地址修改、保存、系统返回、提交订单或任何不可逆操作

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

实现和归档已完成,当前等待用户真机验收。 - 实现提交:`669f144` - 归档提交:`8c7be7b` - 专项测试:38 项通过 - Client 全量回归:456 项通过 - 未执行真机地址修改、保存、系统返回、提交订单或任何不可逆操作 父工单 #1、#2 的 #180 清单保持未勾选,验收通过后再关闭并同步。
Author
Owner

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

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