Page:
Task 65 purchase address panel recovery
Pages
Android-Agent-API-Contract
Architecture-and-Code-Map
Business-Rules-and-Glossary
Common-Changes
Delivery-Issues
Deployment-Template
Deployment-and-Operations
Development-Workflow
Home
Local-Development-and-Verification
OnePlus-Real-Device-Acceptance
PDD-Detail-Rule-Migration-Analysis
Product-Requirements-Overview
Project-Profile
SYB-ERP-Interface-Contract
Task 26 PDD spec traversal
Task 31 PDD product archive
Task 32 procurement closed loop prototype
Task 33 purchase task contract
Task 34 purchase task state machine
Task-35-Admin-采购任务与人工处理页面
Task-36-Android地址后缀不可逆门禁与创建订单
Task 40 Shopee product archive
Task 41 SYB product import
Task-42-Android-采购演练规则与持久执行基线
Task-43-升级-DevHarness-文档基线
Task-43-升级-GoAuto-DevHarness-文档基线
Task-44-Admin-SYB商品列表规格匹配入口与批量采购创建
Task-47-升级-DevHarness-文档基线至-bfdf648
Task-49-店铺管理与-SYB-同步店铺过滤
Task 50 SYB async sync
Task 51 SYB list layout
Task 52 SYB sync diagnostics
Task-53-补齐采购规则参数化动作契约
Task-54-统一采集与采购任务设备状态
Task-55-补齐采购任务-Admin-列表与详情查询接口
Task-56-采购-Admin-接口成功响应兼容
Task-57-优化采购管理筛选栏布局
Task-58-采购管理失败任务批量重试
Task-59-修复-PDD-规格入口误触商品评论页
Task-60-修复可选颜色切换后价格缺失
Task-61-修复采购规格探测未识别安全入口
Task-62-采购规格标准化匹配与-AI-Provider-设置
Task-63-采购列表刷新不得触发-AI-规格匹配
Task-64-修复正式采购规格滚动定位与重复探测卡死
Task 65 purchase address panel recovery
Task 66 Android payment chooser reconciliation
Task-67-SYB-与采购任务蝦皮订单号
Task-68-调整-SYB-商品页顶部工具栏与采购入口
Task-69-蝦皮与-PDD-规格匹配.-
Task-70-从-cmautobuy-线上库导入-PDD-与蝦皮商品
Task-71-Supervisor-GoAuto-services
Task-72-Fix-Supervisor-SYB-startup-race
Task-73-优化-SYB-商品列表加载与采购准备预检
Task-74-优化-SYB-商品筛选与列表列宽
Task-75-SYB-Hourly-Sync
Task-78-在-SYB-同步记录页增加管理员立即同步
Task-79-SYB-只读分页请求超时后有限重试
Task-81-修复-SYB-查看-PDD-商品跳转
Task-82-区分去关联-PDD-与去匹配动作
Task-83-PDD-商品单商品定位模式
Task-85-修复采购员账号登录并补齐最小权限
Task-Archive-Template
Troubleshooting
Clone
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.ktandroid/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseLiveAutomation.ktandroid/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseRehearsalExecutor.ktandroid/app/src/test/java/cn/ilapage/goauto/agent/PurchaseLiveAutomationTest.ktandroid/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 仓库先推送长期页面,再按 revision78583c8528b4157a90b1fe221fa39288480cb90a更新本地只读镜像。git diff --check:通过。- 未验证部分:地址恢复与修改链路已由 CG-12 真机通过。创建订单后停留在 Android 系统选择器,尚未人工确认 PDD 是否已生成待付款订单,也未取得订单号和下单时间;任务必须保持
order_result_unknown,禁止自动重试。系统选择器的安全返回与只读核单由独立缺陷处理。全程未支付。