67f3a74
当前会话未暴露 Gitea MCP 工具,按仓库规则回退项目根目录安全配置与 Gitea API 创建本工单。
真机:一加 PKG110,设备 ID 5。
服务端只读核对:
黑色 / XL【建议121-140斤】
order_result_unknown
order_created
Android Activity 日志时序:
com.xunmeng.pinduoduo.app_pay.core.PayActivity
com.tencent.mm/.plugin.base.stub.WXPayEntryActivity
com.tencent.mm/.plugin.account.ui.SimpleLoginUI
SimpleLoginUI
未保存原始控件树、整屏截图、地址、账号或支付数据。
PurchaseLiveAutomation.readOrderResult 已能处理稳定的多微信选择器和稳定的 com.tencent.mm 页面,但订单提交后 PDD → 微信切换期间,GoAutoAccessibilityService.capture() 可能短暂无 rootInActiveWindow,从而返回 UiSnapshot(null, null, emptyList())。
PurchaseLiveAutomation.readOrderResult
com.tencent.mm
GoAutoAccessibilityService.capture()
rootInActiveWindow
UiSnapshot(null, null, emptyList())
现逻辑对任何非 PDD、非已识别微信/选择器包立即 return null。因此在真机空窗口过渡阶段提前结束核单,尚未来得及看到随后稳定的微信登录页,也就没有调用一次性无参数 PDD 恢复 Intent。结果被安全收敛为 order_result_unknown,而任务结束后的通用返回机制按安全策略不会从微信强行切走,手机最终停留微信登录页。
return null
#154 的同步 Fake Driver 测试没有覆盖“PDD 支付页 → 空 root/过渡窗口 → 微信登录页 → 延迟恢复 PDD”的异步真机时序。
packageName == null
readOrderResult
恢复 #154 已确认的后台只读核单行为,无新增页面、组件或用户交互,不需要原型。
startActivity()
该逻辑发生在订单已进入不可逆边界之后,安全优先级高于自动成功率。实施可以完成代码与自动化验证;任何真机 live 采购、任务重试、订单操作仍必须再次等待人工授权。所有不确定状态继续收敛为 order_result_unknown。
PurchaseUiDriver
无新的长期文档事实:#154 已把微信、选择器、PDD 支付页、一次性恢复和结果未知边界写入 Business-Rules-and-Glossary 与 Android-Agent-API-Contract。本工单只修复实现未满足既有契约的时序缺口,完成时在工单注明并跳过 Wiki 更新与同步。
Business-Rules-and-Glossary
Android-Agent-API-Contract
待验收(CG-36 回归竞态已修复并完成自动化验证;未执行 live 真机验收)。
开始实施 #163(2026-08-31)。
当前会话未暴露 Gitea MCP 工具,本次按仓库规则回退项目根目录安全配置与 Gitea API 回写证据。
提交并已推送:d8e13da fix(agent): stabilize post-order WeChat recovery (#163)
d8e13da fix(agent): stabilize post-order WeChat recovery (#163)
0.9.29 (42)
PurchaseLiveAutomationTest
.\scripts\verify.ps1 -Component android
.\gradlew.bat test assembleDebug assembleRelease
python dev_scripts/harness.py check --strict
git diff --check
APK:
8B14ACA131A86B24E1CE642ECD22DB8DD7CA1F2D4FF04E0C0C9730EBDD84EF71
2F953BD5F1A28D17172FE2432D31896550DB241B9D9135CCCE3F603710045DFA
无新的长期事实。#154 已记录微信、选择器、PDD 支付页、一次性恢复及结果未知安全契约;本次仅修复实现未满足既有契约的真机时序缺口,因此按工单约定跳过 Wiki 更新与同步。
状态:保持打开,等待用户验收。
用户确认按分析建议继续处理。只读证据表明 #163 的固定等待仍存在更窄的异步竞态:
NewPageActivity
orderSubmitRequestId
irreversibleAt
修订范围仍仅限 #163 的 Android 核单状态机:
本次不重试 CG-36、不修改地址、不创建订单、不支付、不保存控件树或截图。实际单价与稳定失败阶段的保留会按 #163 原非目标另建单元工单,不混入本提交。#163 从待验收退回进行中,完成代码与自动化验证后重新转待验收;live 真机仍需独立授权。
已提交并推送 ceeab19 fix(agent): wait for delayed PDD order detail (#163):
ceeab19 fix(agent): wait for delayed PDD order detail (#163)
test assembleDebug assembleRelease --rerun-tasks
0.9.33
修订后的恢复宽限契约随 #167 一并更新线上 Wiki Android-Agent-API-Contract,revision 6990b1a92006572069d13bdffba1ffc5bfc0f13d,镜像同步与一致性检查通过。
6990b1a92006572069d13bdffba1ffc5bfc0f13d
未修改或重试 CG-36,未安装 APK,未修改地址、未创建新订单、未支付。工单重新转待验收;真机 live 验收仍需独立人工授权。
No dependencies set.
The note is not visible to the blocked user.
关联与来源
67f3a74)执行最新正式采购后,观察到订单提交完成但手机停留在微信登录界面。当前会话未暴露 Gitea MCP 工具,按仓库规则回退项目根目录安全配置与 Gitea API 创建本工单。
已确认现场事实
真机:一加 PKG110,设备 ID 5。
服务端只读核对:
黑色 / XL【建议121-140斤】。order_result_unknown收敛;主任务也是order_result_unknown。order_created,禁止直接重试下单。Android Activity 日志时序:
com.xunmeng.pinduoduo.app_pay.core.PayActivity。com.tencent.mm/.plugin.base.stub.WXPayEntryActivity。com.tencent.mm/.plugin.account.ui.SimpleLoginUI。SimpleLoginUI。未保存原始控件树、整屏截图、地址、账号或支付数据。
根因
PurchaseLiveAutomation.readOrderResult已能处理稳定的多微信选择器和稳定的com.tencent.mm页面,但订单提交后 PDD → 微信切换期间,GoAutoAccessibilityService.capture()可能短暂无rootInActiveWindow,从而返回UiSnapshot(null, null, emptyList())。现逻辑对任何非 PDD、非已识别微信/选择器包立即
return null。因此在真机空窗口过渡阶段提前结束核单,尚未来得及看到随后稳定的微信登录页,也就没有调用一次性无参数 PDD 恢复 Intent。结果被安全收敛为order_result_unknown,而任务结束后的通用返回机制按安全策略不会从微信强行切走,手机最终停留微信登录页。#154 的同步 Fake Driver 测试没有覆盖“PDD 支付页 → 空 root/过渡窗口 → 微信登录页 → 延迟恢复 PDD”的异步真机时序。
目标
packageName == null/ 空无障碍树不得立即结束。com.tencent.mm后仍只允许一次无参数 PDD launch Intent,不点击、不输入、不登录、不支付、不 force-stop。order_result_unknown,绝不再次创建订单。非目标
实施方案
readOrderResult的提交后导航改为显式有限状态机/票据:设计证据
恢复 #154 已确认的后台只读核单行为,无新增页面、组件或用户交互,不需要原型。
验收标准
startActivity()返回。order_created。order_result_unknown。风险与门禁
该逻辑发生在订单已进入不可逆边界之后,安全优先级高于自动成功率。实施可以完成代码与自动化验证;任何真机 live 采购、任务重试、订单操作仍必须再次等待人工授权。所有不确定状态继续收敛为
order_result_unknown。依赖与并行
PurchaseLiveAutomation.readOrderResult、PurchaseUiDriver或相关测试的工单并行,避免状态机冲突。文档影响
无新的长期文档事实:#154 已把微信、选择器、PDD 支付页、一次性恢复和结果未知边界写入
Business-Rules-and-Glossary与Android-Agent-API-Contract。本工单只修复实现未满足既有契约的时序缺口,完成时在工单注明并跳过 Wiki 更新与同步。状态
待验收(CG-36 回归竞态已修复并完成自动化验证;未执行 live 真机验收)。
开始实施 #163(2026-08-31)。
PurchaseLiveAutomation.readOrderResult、必要的 driver 前台确认语义及相关测试。实施完成,等待人工验收(2026-08-31)
当前会话未暴露 Gitea MCP 工具,本次按仓库规则回退项目根目录安全配置与 Gitea API 回写证据。
实现结果
提交并已推送:
d8e13da fix(agent): stabilize post-order WeChat recovery (#163)readOrderResult对短暂空 root / 空包名增加连续 15 次、每次 200ms 的有限等待;达到上限立即结果未知,整体仍受 60 次采样上限约束。startActivity()成功仅表示恢复请求已发起,后续必须重新采样并实际观察到 PDD 包。order_result_unknown。0.9.29 (42)。自动化验证
PurchaseLiveAutomationTest:17 项通过,0 失败。.\scripts\verify.ps1 -Component android:Debug/Release 单元测试及 Debug APK 构建通过。.\gradlew.bat test assembleDebug assembleRelease:BUILD SUCCESSFUL。python dev_scripts/harness.py check --strict:通过。git diff --check:通过。APK:
8B14ACA131A86B24E1CE642ECD22DB8DD7CA1F2D4FF04E0C0C9730EBDD84EF712F953BD5F1A28D17172FE2432D31896550DB241B9D9135CCCE3F603710045DFA安全与边界
0.9.29 (42)。order_result_unknown。文档影响
无新的长期事实。#154 已记录微信、选择器、PDD 支付页、一次性恢复及结果未知安全契约;本次仅修复实现未满足既有契约的真机时序缺口,因此按工单约定跳过 Wiki 更新与同步。
状态:保持打开,等待用户验收。
CG-36 真机回归与方案修订(2026-08-31)
用户确认按分析建议继续处理。只读证据表明 #163 的固定等待仍存在更窄的异步竞态:
order_result_unknown;PDD 订单详情NewPageActivity于 11:55:01.181 才打开,仅晚约 238ms。readOrderResult在第一次微信恢复后只固定等待 500ms;下一采样若仍是微信即立即结束,没有给已发起的 PDD Activity 异步切换留下有限宽限期。orderSubmitRequestId和irreversibleAt,禁止自动重试或再次创建订单。修订范围仍仅限 #163 的 Android 核单状态机:
startActivity()返回当作恢复完成。本次不重试 CG-36、不修改地址、不创建订单、不支付、不保存控件树或截图。实际单价与稳定失败阶段的保留会按 #163 原非目标另建单元工单,不混入本提交。#163 从待验收退回进行中,完成代码与自动化验证后重新转待验收;live 真机仍需独立授权。
回归修复完成,重新转待验收(2026-08-31)
已提交并推送
ceeab19 fix(agent): wait for delayed PDD order detail (#163):PurchaseLiveAutomationTest通过;最终 Androidtest assembleDebug assembleRelease --rerun-tasks通过(90 tasks)。0.9.33,并未削弱本单行为。修订后的恢复宽限契约随 #167 一并更新线上 Wiki
Android-Agent-API-Contract,revision6990b1a92006572069d13bdffba1ffc5bfc0f13d,镜像同步与一致性检查通过。未修改或重试 CG-36,未安装 APK,未修改地址、未创建新订单、未支付。工单重新转待验收;真机 live 验收仍需独立人工授权。