Clone
9
Task 65 purchase address panel recovery
QiuSW edited this page 2026-09-21 16:13:32 +08:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

65 修复规格面板地址入口恢复与地址页稳定识别

  • 类型:缺陷
  • 所属 Epic:采购 MVP
  • 状态:待用户验收
  • 日期:2026-08-22
  • Gitea 工单:#65
  • 设计证据:恢复既有 Android 行为,不改变 Admin 页面或用户交互,无需 UI 原型。

背景与目标

正式任务 CG-8 已完成精确规格、数量、价格和摘要校验,但选好规格后收货地址位于规格/下单面板顶部的裁切区域。原实现按页面中面积最大的可滚动节点执行通用滑动,可能选错页面或评论滚动容器,最终以 PURCHASE_ADDRESS_UPDATE_FAILED 页面切换超时安全失败。

参考 D:\chengma\cmautobuy\client 的成熟做法,确认地址修改应在当前规格/下单面板内先恢复地址入口;不存在额外的“进入确认页”按钮。

最终方案

  • 地址入口不可见时,只接受唯一、可见、启用、占据至少 60% 屏幕宽度和 20% 屏幕高度的纵向滚动面板。
  • Android 驱动使用面板节点的类名和位置重新定位唯一真实无障碍节点,在该节点内有限向下滑动;不再退化为页面最大滚动区域。
  • 每次滑动后重新读取页面,并用不含控件文字的结构签名检测无进展;达到次数上限或连续无变化后明确失败。
  • 脱敏手机号入口的近乎完全重叠无障碍重复节点合并为一个目标;多个独立入口或多个候选面板均失败关闭。
  • 地址面板、编辑页、输入回读和保存返回分别使用明确错误码;原有地址后缀、保存回读、唯一创建订单按钮和禁止支付边界保持不变。
  • CG-9 真机验证确认面板定向下拉成功,但三星当前 PDD 页面中,脱敏手机号文字的最近可点击祖先覆盖几乎整个下单面板,导致祖先中心点击没有打开地址页。后续修复改为重新定位唯一脱敏手机号文字节点并在其中心执行一次精确手势点击,不再沿用宽泛可点击祖先。
  • CG-10 真机验证已成功打开收货地址页,但“修改”文字节点不可点击、同尺寸父节点可点击。原帮助函数用无文字父节点替换文字锚点,导致新鲜定位失败。后续统一保留原始文字节点,父节点只用于证明可点击路径,执行时从重新定位的文字节点向上点击最近父节点;同一机制覆盖“修改”“保存”和“提交订单”。
  • CG-11 真机验证已成功进入地址编辑页。页面同时存在收货人、手机号和详细地址 3 个输入框,原实现错误地要求页面只有一个非空输入框而安全失败。后续以“详细地址”标签为结构锚点,只选择与标签纵向相交且位于右侧的唯一输入框。
  • CG-12 真机验证已完成地址修改、保存回读和最终商品/规格/数量/价格复核,并在 10:03:43 进入 order_submit_started。创建订单按钮只点击一次,随后设备停留在 Android 系统 ChooserActivity,Agent 未取得唯一 PDD 订单号和下单时间,任务进入 order_result_unknown。该系统选择器核单问题超出本地址缺陷范围,必须独立建单;在人工核对前禁止重试或再次点击创建订单。
  • 不保存原始控件树、截图、完整地址或手机号。

修改文件

  • android/app/src/main/java/cn/ilapage/goauto/agent/automation/GoAutoAccessibilityService.kt
  • android/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseLiveAutomation.kt
  • android/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseRehearsalExecutor.kt
  • android/app/src/test/java/cn/ilapage/goauto/agent/PurchaseLiveAutomationTest.kt
  • android/app/src/test/java/cn/ilapage/goauto/agent/PurchaseRehearsalExecutorTest.kt
  • Wiki Business-Rules-and-Glossary、Android-Agent-API-Contract

验收结果

验收标准 结果
地址被裁切时只在唯一规格/下单面板内下拉 自动化测试通过
多个候选面板时不滑动、不点击并明确失败 自动化测试通过
通用页面滚动不再用于地址入口恢复 自动化测试通过
地址后缀、保存回读、创建订单一次性和禁止支付保持有效 全量 Android 单元测试通过
最新 Debug APK 安装至三星 SM_G9700 adb install -r 返回 Success
CG-9 未进入地址页时安全失败 PURCHASE_ADDRESS_PANEL_TIMEOUT;无订单号、无不可逆时间、未支付
不可点击手机号文字使用自身中心精确手势 自动化测试通过,最新 APK 已重新安装
CG-10 进入地址页后“修改”安全失败 RULE_ACTION_FAILED;无订单号、无不可逆时间、未支付
不可点击文字保留原始锚点并沿父链执行 自动化测试通过,最新 APK 已重新安装
CG-11 进入编辑页后因多个输入框安全失败 PURCHASE_ADDRESS_UPDATE_FAILED;无订单号、无不可逆时间、未支付
三输入框页面精确定位详细地址 自动化测试通过,最新 APK 已重新安装
CG-12 完成地址修改并进入订单提交边界 通过;irreversible_at=2026-08-22 10:03:43.027
创建订单后的唯一订单号与下单时间 未取得;任务为 order_result_unknown,无自动重试、无支付

测试

  • android/gradlew.bat testDebugUnitTest --tests cn.ilapage.goauto.agent.PurchaseLiveAutomationTest --tests cn.ilapage.goauto.agent.PurchaseRehearsalExecutorTest:通过。
  • android/gradlew.bat testDebugUnitTest assembleDebug:通过。
  • scripts/verify.ps1 -Component android:通过。
  • python dev_scripts/harness.py check --strict:通过。
  • python dev_scripts/harness.py sync --verify:Gitea Wiki API 返回 404,自动同步不可用;改用 Wiki Git 仓库先推送长期页面,再按 revision 78583c8528b4157a90b1fe221fa39288480cb90a 更新本地只读镜像。
  • git diff --check:通过。
  • 未验证部分:地址恢复与修改链路已由 CG-12 真机通过。创建订单后停留在 Android 系统选择器,尚未人工确认 PDD 是否已生成待付款订单,也未取得订单号和下单时间;任务必须保持 order_result_unknown,禁止自动重试。系统选择器的安全返回与只读核单由独立缺陷处理。全程未支付。

相关提交

  • f5ac7f6 fix(#65): restore address entry within purchase panel
  • 464a3b8 fix(#65): tap exact purchase address entry
  • 3405439 fix(#65): preserve text anchors for purchase clicks
  • 553dc46 fix(#65): locate detailed address editor by label