缺陷:订单提交后的空窗口过渡导致未识别微信并停留登录页 #163

Open
opened 2026-08-31 09:53:29 +08:00 by ila · 4 comments
Owner

关联与来源

  • 回归关联:#154(下单后多微信选择框或微信登录页安全返回 PDD 核单)。
  • 用户于 2026-08-31 在最新版 Agent 0.9.28(versionCode 41,提交 67f3a74)执行最新正式采购后,观察到订单提交完成但手机停留在微信登录界面。
  • 本工单只修复 #154 已确认行为的真机时序缺口,不扩大支付或下单能力。

当前会话未暴露 Gitea MCP 工具,按仓库规则回退项目根目录安全配置与 Gitea API 创建本工单。

已确认现场事实

真机:一加 PKG110,设备 ID 5。

服务端只读核对:

  • 最新采购任务为 #29,目标规格为 黑色 / XL【建议121-140斤】。
  • 任务于 2026-08-31 09:46:52 进入不可逆边界。
  • attempt 4 在约 1 秒内以 order_result_unknown 收敛;主任务也是 order_result_unknown。
  • 未取得 PDD 订单号或下单时间,因此系统事实不是 order_created,禁止直接重试下单。

Android Activity 日志时序:

  1. 09:46:52.782:PDD com.xunmeng.pinduoduo.app_pay.core.PayActivity。
  2. 09:46:52.835:微信 com.tencent.mm/.plugin.base.stub.WXPayEntryActivity。
  3. 09:46:52.980:微信 com.tencent.mm/.plugin.account.ui.SimpleLoginUI。
  4. 此后没有 PDD Activity 启动记录;现场前台仍为 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”的异步真机时序。

目标

  1. 订单提交后的只读核单增加有限、可证明的页面稳定阶段;短暂 packageName == null / 空无障碍树不得立即结束。
  2. 稳定识别 com.tencent.mm 后仍只允许一次无参数 PDD launch Intent,不点击、不输入、不登录、不支付、不 force-stop。
  3. PDD Intent 返回成功只能表示“已发起”,必须在有限超时内重新采样并确认 PDD 真实回到前台。
  4. 回到 PDD 已知支付 Activity 或明确支付动作页后最多返回一次,再只读寻找唯一订单号和下单时间。
  5. 超时、未知真实应用、恢复后第二次仍见微信、恢复动作重复或订单证据不唯一时继续保持 order_result_unknown,绝不再次创建订单。
  6. 新增真机时序等价自动化测试,防止再次由同步 Fake 掩盖过渡窗口。

非目标

  • 不修改、重置或重试任务 #29。
  • 不自动认定 #29 已创建订单;仍需人工在 PDD“我的订单”核对。
  • 不点击微信登录、微信候选或任何支付控件。
  • 不增加自动支付、登录、取消订单、修改订单或重复下单能力。
  • 不放宽多微信选择器的包名、Activity、标题和候选四证据白名单。
  • 不保存控件树、截图、地址、账号、微信或支付数据。
  • 不改 Server 状态机、数据库或 Admin UI,除非实施时出现独立、可证明的阻塞;相邻问题另建单。

实施方案

  • 将 readOrderResult 的提交后导航改为显式有限状态机/票据:
    • 空 root 或空包名仅作为短暂过渡信号,在固定超时和最大采样次数内等待;
    • 未知且稳定的真实第三方包仍立即结果未知;
    • 微信恢复、选择器返回、PDD 支付页返回各自最多一次。
  • PDD 拉起后增加前台确认等待:只接受无参数 launch Intent;循环重新采样,直至 PDD、第二次微信、未知稳定应用或超时。
  • 页面过渡等待不得执行通用滑动、点击或输入;仅 PDD 订单上下文允许既有只读滚动。
  • 为测试驱动增加按采样序列返回页面的能力,覆盖:
    • PDD 支付页 → null root → 微信登录 → 延迟 PDD 支付页 → 订单详情;
    • 连续空 root 后超时;
    • 拉起返回 true 但仍停微信;
    • 未知真实应用;
    • 多微信选择器既有路径回归;
    • 恢复/返回动作次数上限与零支付动作。
  • 复核中断恢复路径继续复用同一状态机。

设计证据

恢复 #154 已确认的后台只读核单行为,无新增页面、组件或用户交互,不需要原型。

验收标准

  • 空 root/空包名的短暂过渡不会在约 1 秒内提前结束,且等待有固定上限。
  • 真机等价序列能稳定识别随后出现的微信登录页,并仅发起一次无参数 PDD Intent。
  • PDD 拉起后必须确认真实前台包;不能只相信 startActivity() 返回。
  • 回到 PDD 支付页最多返回一次,最终只有取得唯一订单号与下单时间才提交 order_created。
  • 第二次仍见微信、未知真实应用、过渡超时或证据不唯一时提交 order_result_unknown。
  • 全路径不点击微信、不登录、不支付、不 force-stop、不重复点击创建订单。
  • #154 现有自动化测试全部回归通过,新时序测试通过。
  • Android 定向测试、全量单测、Debug/Release 构建通过。
  • 提交推送并回写证据,保持待人工验收。
  • 若安装 APK,只覆盖安装并回读版本;不得自动启动正式采购。
  • 真机 live 验收必须另行取得用户明确授权。

风险与门禁

该逻辑发生在订单已进入不可逆边界之后,安全优先级高于自动成功率。实施可以完成代码与自动化验证;任何真机 live 采购、任务重试、订单操作仍必须再次等待人工授权。所有不确定状态继续收敛为 order_result_unknown。

依赖与并行

  • 依赖 #154 已完成的微信/多微信/PDD 支付页安全边界;本工单是其缺陷回归修复。
  • 不依赖 #160 的规格规范化行为,可独立实施。
  • 不与其他修改 PurchaseLiveAutomation.readOrderResult、PurchaseUiDriver 或相关测试的工单并行,避免状态机冲突。

文档影响

无新的长期文档事实:#154 已把微信、选择器、PDD 支付页、一次性恢复和结果未知边界写入 Business-Rules-and-Glossary 与 Android-Agent-API-Contract。本工单只修复实现未满足既有契约的时序缺口,完成时在工单注明并跳过 Wiki 更新与同步。

状态

待验收(CG-36 回归竞态已修复并完成自动化验证;未执行 live 真机验收)。

## 关联与来源 - 回归关联:#154(下单后多微信选择框或微信登录页安全返回 PDD 核单)。 - 用户于 2026-08-31 在最新版 Agent 0.9.28(versionCode 41,提交 `67f3a74`)执行最新正式采购后,观察到订单提交完成但手机停留在微信登录界面。 - 本工单只修复 #154 已确认行为的真机时序缺口,不扩大支付或下单能力。 当前会话未暴露 Gitea MCP 工具,按仓库规则回退项目根目录安全配置与 Gitea API 创建本工单。 ## 已确认现场事实 真机:一加 PKG110,设备 ID 5。 服务端只读核对: - 最新采购任务为 #29,目标规格为 `黑色 / XL【建议121-140斤】`。 - 任务于 2026-08-31 09:46:52 进入不可逆边界。 - attempt 4 在约 1 秒内以 `order_result_unknown` 收敛;主任务也是 `order_result_unknown`。 - 未取得 PDD 订单号或下单时间,因此系统事实不是 `order_created`,禁止直接重试下单。 Android Activity 日志时序: 1. 09:46:52.782:PDD `com.xunmeng.pinduoduo.app_pay.core.PayActivity`。 2. 09:46:52.835:微信 `com.tencent.mm/.plugin.base.stub.WXPayEntryActivity`。 3. 09:46:52.980:微信 `com.tencent.mm/.plugin.account.ui.SimpleLoginUI`。 4. 此后没有 PDD Activity 启动记录;现场前台仍为 `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”的异步真机时序。 ## 目标 1. 订单提交后的只读核单增加有限、可证明的页面稳定阶段;短暂 `packageName == null` / 空无障碍树不得立即结束。 2. 稳定识别 `com.tencent.mm` 后仍只允许一次无参数 PDD launch Intent,不点击、不输入、不登录、不支付、不 force-stop。 3. PDD Intent 返回成功只能表示“已发起”,必须在有限超时内重新采样并确认 PDD 真实回到前台。 4. 回到 PDD 已知支付 Activity 或明确支付动作页后最多返回一次,再只读寻找唯一订单号和下单时间。 5. 超时、未知真实应用、恢复后第二次仍见微信、恢复动作重复或订单证据不唯一时继续保持 `order_result_unknown`,绝不再次创建订单。 6. 新增真机时序等价自动化测试,防止再次由同步 Fake 掩盖过渡窗口。 ## 非目标 - 不修改、重置或重试任务 #29。 - 不自动认定 #29 已创建订单;仍需人工在 PDD“我的订单”核对。 - 不点击微信登录、微信候选或任何支付控件。 - 不增加自动支付、登录、取消订单、修改订单或重复下单能力。 - 不放宽多微信选择器的包名、Activity、标题和候选四证据白名单。 - 不保存控件树、截图、地址、账号、微信或支付数据。 - 不改 Server 状态机、数据库或 Admin UI,除非实施时出现独立、可证明的阻塞;相邻问题另建单。 ## 实施方案 - 将 `readOrderResult` 的提交后导航改为显式有限状态机/票据: - 空 root 或空包名仅作为短暂过渡信号,在固定超时和最大采样次数内等待; - 未知且稳定的真实第三方包仍立即结果未知; - 微信恢复、选择器返回、PDD 支付页返回各自最多一次。 - PDD 拉起后增加前台确认等待:只接受无参数 launch Intent;循环重新采样,直至 PDD、第二次微信、未知稳定应用或超时。 - 页面过渡等待不得执行通用滑动、点击或输入;仅 PDD 订单上下文允许既有只读滚动。 - 为测试驱动增加按采样序列返回页面的能力,覆盖: - PDD 支付页 → null root → 微信登录 → 延迟 PDD 支付页 → 订单详情; - 连续空 root 后超时; - 拉起返回 true 但仍停微信; - 未知真实应用; - 多微信选择器既有路径回归; - 恢复/返回动作次数上限与零支付动作。 - 复核中断恢复路径继续复用同一状态机。 ## 设计证据 恢复 #154 已确认的后台只读核单行为,无新增页面、组件或用户交互,不需要原型。 ## 验收标准 - [ ] 空 root/空包名的短暂过渡不会在约 1 秒内提前结束,且等待有固定上限。 - [ ] 真机等价序列能稳定识别随后出现的微信登录页,并仅发起一次无参数 PDD Intent。 - [ ] PDD 拉起后必须确认真实前台包;不能只相信 `startActivity()` 返回。 - [ ] 回到 PDD 支付页最多返回一次,最终只有取得唯一订单号与下单时间才提交 `order_created`。 - [ ] 第二次仍见微信、未知真实应用、过渡超时或证据不唯一时提交 `order_result_unknown`。 - [ ] 全路径不点击微信、不登录、不支付、不 force-stop、不重复点击创建订单。 - [ ] #154 现有自动化测试全部回归通过,新时序测试通过。 - [ ] Android 定向测试、全量单测、Debug/Release 构建通过。 - [ ] 提交推送并回写证据,保持待人工验收。 - [ ] 若安装 APK,只覆盖安装并回读版本;不得自动启动正式采购。 - [ ] 真机 live 验收必须另行取得用户明确授权。 ## 风险与门禁 该逻辑发生在订单已进入不可逆边界之后,安全优先级高于自动成功率。实施可以完成代码与自动化验证;任何真机 live 采购、任务重试、订单操作仍必须再次等待人工授权。所有不确定状态继续收敛为 `order_result_unknown`。 ## 依赖与并行 - 依赖 #154 已完成的微信/多微信/PDD 支付页安全边界;本工单是其缺陷回归修复。 - 不依赖 #160 的规格规范化行为,可独立实施。 - 不与其他修改 `PurchaseLiveAutomation.readOrderResult`、`PurchaseUiDriver` 或相关测试的工单并行,避免状态机冲突。 ## 文档影响 无新的长期文档事实:#154 已把微信、选择器、PDD 支付页、一次性恢复和结果未知边界写入 `Business-Rules-and-Glossary` 与 `Android-Agent-API-Contract`。本工单只修复实现未满足既有契约的时序缺口,完成时在工单注明并跳过 Wiki 更新与同步。 ## 状态 待验收(CG-36 回归竞态已修复并完成自动化验证;未执行 live 真机验收)。
Author
Owner

开始实施 #163(2026-08-31)。

  • 基线:main@67f3a74,与 origin/main 一致。
  • 范围:仅 Android PurchaseLiveAutomation.readOrderResult、必要的 driver 前台确认语义及相关测试。
  • 安全边界:不修改/重试 #29,不启动 live 采购,不点击微信、支付或创建订单。
  • 文档:按工单确认属于恢复 #154 既有契约,若实现不改变长期事实则跳过 Wiki 更新与同步。
  • 当前会话无 Gitea MCP 工具,按规则回退项目安全配置与 Gitea API。
开始实施 #163(2026-08-31)。 - 基线:main@67f3a74,与 origin/main 一致。 - 范围:仅 Android `PurchaseLiveAutomation.readOrderResult`、必要的 driver 前台确认语义及相关测试。 - 安全边界:不修改/重试 #29,不启动 live 采购,不点击微信、支付或创建订单。 - 文档:按工单确认属于恢复 #154 既有契约,若实现不改变长期事实则跳过 Wiki 更新与同步。 - 当前会话无 Gitea MCP 工具,按规则回退项目安全配置与 Gitea API。
Author
Owner

实施完成,等待人工验收(2026-08-31)

当前会话未暴露 Gitea MCP 工具,本次按仓库规则回退项目根目录安全配置与 Gitea API 回写证据。

实现结果

提交并已推送:d8e13da fix(agent): stabilize post-order WeChat recovery (#163)

  • readOrderResult 对短暂空 root / 空包名增加连续 15 次、每次 200ms 的有限等待;达到上限立即结果未知,整体仍受 60 次采样上限约束。
  • 空窗口等待不点击、不返回、不滑动,也不改变不可逆边界。
  • 稳定识别微信后仍只发起一次无参数 PDD launch Intent;startActivity() 成功仅表示恢复请求已发起,后续必须重新采样并实际观察到 PDD 包。
  • 恢复后第二次仍见微信、稳定未知第三方应用或空窗口超时,立即/有限收敛为 order_result_unknown。
  • 多微信选择器返回、微信拉回 PDD、PDD 支付页返回继续使用三张独立一次性票据,动作不会循环。
  • 只有 PDD 支付上下文或出现订单号/下单时间等订单上下文证据时才进入既有只读解析/滚动;PDD 首页不会被当成订单页滑动。
  • Agent 版本提升为 0.9.29 (42)。

自动化验证

  • 定向 PurchaseLiveAutomationTest:17 项通过,0 失败。
  • 新增覆盖:
    • PDD → 空 root → 微信登录 → 空 root → 延迟 PDD 支付页 → 订单详情;
    • 连续 15 次空 root 有限终止;
    • 稳定未知应用立即终止;
    • 微信拉回后落在 PDD 首页时不滑动、不误认订单上下文。
  • #154 既有多微信选择器、微信登录、拉回仍停微信、支付页一次返回与零支付点击用例全部回归通过。
  • .\scripts\verify.ps1 -Component android:Debug/Release 单元测试及 Debug APK 构建通过。
  • 最终 .\gradlew.bat test assembleDebug assembleRelease:BUILD SUCCESSFUL。
  • 最终测试结果:Debug + Release 共 416 项,0 failures / 0 errors / 0 skipped。
  • python dev_scripts/harness.py check --strict:通过。
  • git diff --check:通过。

APK:

  • Debug:6,502,299 bytes,SHA-256 8B14ACA131A86B24E1CE642ECD22DB8DD7CA1F2D4FF04E0C0C9730EBDD84EF71
  • Release unsigned:4,939,058 bytes,SHA-256 2F953BD5F1A28D17172FE2432D31896550DB241B9D9135CCCE3F603710045DFA

安全与边界

  • 未修改、重置或重试任务 #29。
  • 未启动 PDD、微信或正式采购;未创建订单、未支付、未做真机 live 验收。
  • 本轮未安装 APK;若需要安装,可在单独指令下覆盖安装并回读 0.9.29 (42)。
  • 真机 live 验收仍必须再次取得用户明确授权;任何不确定继续保持 order_result_unknown。
  • 无 Server、数据库、Admin UI 或迁移变化。

文档影响

无新的长期事实。#154 已记录微信、选择器、PDD 支付页、一次性恢复及结果未知安全契约;本次仅修复实现未满足既有契约的真机时序缺口,因此按工单约定跳过 Wiki 更新与同步。

状态:保持打开,等待用户验收。

## 实施完成,等待人工验收(2026-08-31) 当前会话未暴露 Gitea MCP 工具,本次按仓库规则回退项目根目录安全配置与 Gitea API 回写证据。 ### 实现结果 提交并已推送:`d8e13da fix(agent): stabilize post-order WeChat recovery (#163)` - `readOrderResult` 对短暂空 root / 空包名增加连续 15 次、每次 200ms 的有限等待;达到上限立即结果未知,整体仍受 60 次采样上限约束。 - 空窗口等待不点击、不返回、不滑动,也不改变不可逆边界。 - 稳定识别微信后仍只发起一次无参数 PDD launch Intent;`startActivity()` 成功仅表示恢复请求已发起,后续必须重新采样并实际观察到 PDD 包。 - 恢复后第二次仍见微信、稳定未知第三方应用或空窗口超时,立即/有限收敛为 `order_result_unknown`。 - 多微信选择器返回、微信拉回 PDD、PDD 支付页返回继续使用三张独立一次性票据,动作不会循环。 - 只有 PDD 支付上下文或出现订单号/下单时间等订单上下文证据时才进入既有只读解析/滚动;PDD 首页不会被当成订单页滑动。 - Agent 版本提升为 `0.9.29 (42)`。 ### 自动化验证 - 定向 `PurchaseLiveAutomationTest`:17 项通过,0 失败。 - 新增覆盖: - PDD → 空 root → 微信登录 → 空 root → 延迟 PDD 支付页 → 订单详情; - 连续 15 次空 root 有限终止; - 稳定未知应用立即终止; - 微信拉回后落在 PDD 首页时不滑动、不误认订单上下文。 - #154 既有多微信选择器、微信登录、拉回仍停微信、支付页一次返回与零支付点击用例全部回归通过。 - `.\scripts\verify.ps1 -Component android`:Debug/Release 单元测试及 Debug APK 构建通过。 - 最终 `.\gradlew.bat test assembleDebug assembleRelease`:BUILD SUCCESSFUL。 - 最终测试结果:Debug + Release 共 416 项,0 failures / 0 errors / 0 skipped。 - `python dev_scripts/harness.py check --strict`:通过。 - `git diff --check`:通过。 APK: - Debug:6,502,299 bytes,SHA-256 `8B14ACA131A86B24E1CE642ECD22DB8DD7CA1F2D4FF04E0C0C9730EBDD84EF71` - Release unsigned:4,939,058 bytes,SHA-256 `2F953BD5F1A28D17172FE2432D31896550DB241B9D9135CCCE3F603710045DFA` ### 安全与边界 - 未修改、重置或重试任务 #29。 - 未启动 PDD、微信或正式采购;未创建订单、未支付、未做真机 live 验收。 - 本轮未安装 APK;若需要安装,可在单独指令下覆盖安装并回读 `0.9.29 (42)`。 - 真机 live 验收仍必须再次取得用户明确授权;任何不确定继续保持 `order_result_unknown`。 - 无 Server、数据库、Admin UI 或迁移变化。 ### 文档影响 无新的长期事实。#154 已记录微信、选择器、PDD 支付页、一次性恢复及结果未知安全契约;本次仅修复实现未满足既有契约的真机时序缺口,因此按工单约定跳过 Wiki 更新与同步。 状态:保持打开,等待用户验收。
Author
Owner

CG-36 真机回归与方案修订(2026-08-31)

用户确认按分析建议继续处理。只读证据表明 #163 的固定等待仍存在更窄的异步竞态:

  • CG-36 于 11:54:58.520 进入不可逆边界;11:54:58.770 进入微信登录页;11:54:58.935 Agent 发起无参数 PDD launcher Intent。
  • Agent 于 11:55:00.943 已提交 order_result_unknown;PDD 订单详情 NewPageActivity 于 11:55:01.181 才打开,仅晚约 238ms。
  • readOrderResult 在第一次微信恢复后只固定等待 500ms;下一采样若仍是微信即立即结束,没有给已发起的 PDD Activity 异步切换留下有限宽限期。
  • CG-36 已有 orderSubmitRequestId 和 irreversibleAt,禁止自动重试或再次创建订单。

修订范围仍仅限 #163 的 Android 核单状态机:

  1. 发起一次 PDD 恢复后,在固定最大采样次数/超时内允许微信或空窗口短暂残留,等待真实 PDD 前台;不能把 startActivity() 返回当作恢复完成。
  2. 宽限期内不点击、不输入、不返回、不滑动;观察到 PDD 后结束宽限。观察到稳定未知第三方包、宽限超时,或已观察到 PDD 后再次进入微信,均安全返回未知结果。
  3. PDD 首页/主框架只能作为恢复过渡,不能作为订单成功;继续在全局有限预算内等待支付或订单上下文。
  4. 新增真机等价测试:微信持续超过 500ms、PDD launcher 已发起、订单详情在约 2.2s 后出现并成功读取;同时覆盖超时和恢复后微信再次出现。

本次不重试 CG-36、不修改地址、不创建订单、不支付、不保存控件树或截图。实际单价与稳定失败阶段的保留会按 #163 原非目标另建单元工单,不混入本提交。#163 从待验收退回进行中,完成代码与自动化验证后重新转待验收;live 真机仍需独立授权。

## CG-36 真机回归与方案修订(2026-08-31) 用户确认按分析建议继续处理。只读证据表明 #163 的固定等待仍存在更窄的异步竞态: - CG-36 于 11:54:58.520 进入不可逆边界;11:54:58.770 进入微信登录页;11:54:58.935 Agent 发起无参数 PDD launcher Intent。 - Agent 于 11:55:00.943 已提交 `order_result_unknown`;PDD 订单详情 `NewPageActivity` 于 11:55:01.181 才打开,仅晚约 238ms。 - `readOrderResult` 在第一次微信恢复后只固定等待 500ms;下一采样若仍是微信即立即结束,没有给已发起的 PDD Activity 异步切换留下有限宽限期。 - CG-36 已有 `orderSubmitRequestId` 和 `irreversibleAt`,禁止自动重试或再次创建订单。 修订范围仍仅限 #163 的 Android 核单状态机: 1. 发起一次 PDD 恢复后,在固定最大采样次数/超时内允许微信或空窗口短暂残留,等待真实 PDD 前台;不能把 `startActivity()` 返回当作恢复完成。 2. 宽限期内不点击、不输入、不返回、不滑动;观察到 PDD 后结束宽限。观察到稳定未知第三方包、宽限超时,或已观察到 PDD 后再次进入微信,均安全返回未知结果。 3. PDD 首页/主框架只能作为恢复过渡,不能作为订单成功;继续在全局有限预算内等待支付或订单上下文。 4. 新增真机等价测试:微信持续超过 500ms、PDD launcher 已发起、订单详情在约 2.2s 后出现并成功读取;同时覆盖超时和恢复后微信再次出现。 本次不重试 CG-36、不修改地址、不创建订单、不支付、不保存控件树或截图。实际单价与稳定失败阶段的保留会按 #163 原非目标另建单元工单,不混入本提交。#163 从待验收退回进行中,完成代码与自动化验证后重新转待验收;live 真机仍需独立授权。
Author
Owner

回归修复完成,重新转待验收(2026-08-31)

已提交并推送 ceeab19 fix(agent): wait for delayed PDD order detail (#163):

  • 微信恢复请求发出后,不再因下一次采样仍短暂显示微信而立即结束;增加最多 15 次、每次 200ms 的有界宽限期。
  • 宽限期内不点击、不输入、不返回、不滑动;只等待真实 PDD 前台。观察到 PDD 后结束宽限,之后再次进入微信、稳定未知应用或超时仍安全返回未知结果。
  • 新增 CG-36 等价自动化序列:微信持续 12 个采样、PDD 订单详情延迟约 2.2 秒出现,最终成功读取唯一订单号和下单时间;PDD 恢复只请求一次,零微信/支付点击。
  • 定向 PurchaseLiveAutomationTest 通过;最终 Android test assembleDebug assembleRelease --rerun-tasks 通过(90 tasks)。
  • 后续 #167 将最终 Agent 版本提升至 0.9.33,并未削弱本单行为。

修订后的恢复宽限契约随 #167 一并更新线上 Wiki Android-Agent-API-Contract,revision 6990b1a92006572069d13bdffba1ffc5bfc0f13d,镜像同步与一致性检查通过。

未修改或重试 CG-36,未安装 APK,未修改地址、未创建新订单、未支付。工单重新转待验收;真机 live 验收仍需独立人工授权。

## 回归修复完成,重新转待验收(2026-08-31) 已提交并推送 `ceeab19 fix(agent): wait for delayed PDD order detail (#163)`: - 微信恢复请求发出后,不再因下一次采样仍短暂显示微信而立即结束;增加最多 15 次、每次 200ms 的有界宽限期。 - 宽限期内不点击、不输入、不返回、不滑动;只等待真实 PDD 前台。观察到 PDD 后结束宽限,之后再次进入微信、稳定未知应用或超时仍安全返回未知结果。 - 新增 CG-36 等价自动化序列:微信持续 12 个采样、PDD 订单详情延迟约 2.2 秒出现,最终成功读取唯一订单号和下单时间;PDD 恢复只请求一次,零微信/支付点击。 - 定向 `PurchaseLiveAutomationTest` 通过;最终 Android `test assembleDebug assembleRelease --rerun-tasks` 通过(90 tasks)。 - 后续 #167 将最终 Agent 版本提升至 `0.9.33`,并未削弱本单行为。 修订后的恢复宽限契约随 #167 一并更新线上 Wiki `Android-Agent-API-Contract`,revision `6990b1a92006572069d13bdffba1ffc5bfc0f13d`,镜像同步与一致性检查通过。 未修改或重试 CG-36,未安装 APK,未修改地址、未创建新订单、未支付。工单重新转待验收;真机 live 验收仍需独立人工授权。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#163