# 180 修复地址后缀分割并兼容保存后的 ColorOS 浮层 - 类型:缺陷 - 父级大工单:#1 - 所属 MVP / 版本:#2 - 状态:已完成,待用户验收 - 日期:2026-08-12 - Gitea 工单: ## 背景与目标 正式采购已经成功进入地址编辑页并点击保存,但旧地址中不符合白名单格式的下划线后缀不会被替换;保存后 OPPO/ColorOS 密码本浮层又占据控件树,使程序无法识别背后的收货地址面板。本任务按已确认业务规则重建地址,并安全处理该系统浮层后返回规格确认页。 ## 最终方案 - 使用第一个 `-` 或 `_` 分割原地址,取第一段作为地址主体,再拼接 `_` 和当前采购编号。 - 保存按钮保持单次点击。 - 保存后优先检查已知 `com.coloros.codebook` 可见焦点浮层,连续读取三次仍存在时最多按一次系统返回键,不点击浮层内容。 - 浮层自行消失时不按返回;返回键无效时不再按第二次,最终安全超时。 - 非 ColorOS 密码本的未知页面不按返回、不继续点击。 - PDD 地址面板优先使用完整新地址确认;地址全文未暴露时,使用“收货地址标题 + 唯一修改按钮 + 唯一返回按钮”的组合证据。 - 若系统返回键竞态导致已经回到规格确认页,直接结束地址更新,不重复导航。 - 超时诊断增加浮层是否出现、系统返回次数和脱敏控件树。 ## 改了哪些 - `client/src/pdd_u2_purchase_adapter.py`:实现首个分隔符地址规则、可靠地址面板证据及保存后 ColorOS 浮层有界状态机。 - `client/test/test_pdd_u2_purchase_adapter.py`:覆盖任意旧后缀、隐藏地址全文、浮层自行消失、一次返回成功、一次返回无效和未知页面安全停止。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 任意 `-` 或 `_` 后缀按首个分隔符截断并追加采购编号 | 通过 | | 保存按钮仍只点击一次 | 通过 | | ColorOS 浮层自行消失时不按返回、不点击浮层 | 通过 | | 持续浮层最多按一次系统返回键 | 通过 | | 未知页面不按返回、不继续点击 | 通过 | | 地址全文未暴露时仍可用可靠组合证据识别 | 通过 | | 返回地址面板后继续回到规格确认页 | 通过 | | 不可逆下单门禁未修改 | 通过 | | Client 全量测试通过 | 通过 | ## 测试 - 执行的命令:在 `client` 目录执行 `C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_u2_purchase_adapter.py'` - 结果:38 个采购 Adapter 测试全部通过。 - 执行的命令:在 `client` 目录执行 `$env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py'` - 结果:456 个 Client 测试全部通过;仅有测试环境 Qt 字体目录警告。 - **没验证到的部分**:未在真机执行地址修改、保存、系统返回、提交订单或任何不可逆操作。 ## 相关提交 - `669f144` fix: 兼容地址保存系统浮层 (#180)