fix(agent): 手动重试采购按页面证据重新打开 PDD 商品链接 #226

Open
opened 2026-09-05 16:57:50 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:缺陷
  • 所属 Epic:#32
  • 所属 MVP / 版本:采购 Agent
  • 阶段:进行中

依赖与并行

  • 前置工单:关联 #219、#225;基于 #225 分支提交 b306f41
  • 是否允许与前置工单并行:是
  • 原因:#225 的同任务重试已经生效;本单修复重试 attempt 启动后的页面进入策略。

子项目影响

  • 仅影响:android、shared-docs
  • 是否跨子项目:是
  • 是否修改共享接口或契约:否;但修正 Wiki 中两阶段页面复用的长期行为说明
  • 验证:Android 定向单元测试、完整 Android 验证与 APK 构建;Wiki 在线回读、镜像同步和一致性检查

原始需求

  • 来源:用户对话
  • 提出时间:2026-09-05
  • 摘要:CG91 在 Agent 点击普通“重试采购”后仍停留在 Agent 界面,没有重新打开 PDD 商品页;用户确认按建议建单并实施。

要解决什么

  • 当前代码事实:#219 在 phase=purchase 时无条件跳过 OPEN_PRODUCT,只适用于 spec_probe 完成后立即衔接的第二阶段。#225 的同任务手动重试会在 Agent 前台启动新的 attempt,仍被该条件跳过打开链接,随后 VERIFY_PRODUCT 因无 PDD 商品页证据失败。CG91 已出现同任务多个失败 attempt,未创建新任务。
  • 目标契约:采购阶段仅在当前前台确为 PDD 且已经具备商品页或已识别规格面板的安全结构证据时复用页面;Agent、浏览器、其他应用或缺少强证据时,执行规则中的 OPEN_PRODUCT,重新打开该任务固化的商品 URL。
  • 假设:即时 spec_probe → purchase 仍保留 PDD 页面强证据;手动重试通常从 Agent 前台启动。

做什么 / 不做什么

  • 做:把 purchase 阶段的无条件跳过改为证据驱动;保留 #219 即时两阶段单次跳转;补充 Agent 前台重试重新打开、PDD 强证据复用及 PDD 无证据重开的回归测试;提升 Agent 构建版本。
  • 不做:不修改服务端重试状态机、任务/attempt 数据;不修改规格匹配;不自动触发 CG91;不修改地址、不创建订单、不付款。

已确认方案

  1. 到达 OPEN_PRODUCT 动作时,先读取当前页面。
  2. 仅当 phase=purchase 且当前包名为 PDD、页面无登录/风控等问题、并满足既有 hasPurchaseProductEvidence() 强证据时跳过打开链接。
  3. 其余情况走现有 openProduct 安全导航与等待逻辑;不以标题、goodsId 或页面指纹做严格同页校验。
  4. 后续 VERIFY_PRODUCT 和规格/下单门禁保持不变。

预计修改:

  • android/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseRehearsalExecutor.kt
  • android/app/src/test/java/cn/ilapage/goauto/agent/PurchaseRehearsalExecutorTest.kt
  • Android 版本配置
  • Gitea Wiki Business-Rules-and-Glossary、Android-Agent-API-Contract 及其只读镜像

设计与原型门禁

  • 修改类型:恢复既有行为的 Bug
  • 证据:CG91 复现、#219 代码条件和 #225 同任务 attempt 记录
  • 状态:已确认
  • 确认人/时间:用户,2026-09-05
  • 无需 UI 原型:不新增或修改界面,只修复自动化页面进入条件。

文档影响

  • 不影响长期文档
  • 更新业务规则与术语 Wiki
  • 更新 API 契约 Wiki

原因:#219 的“purchase 第二阶段永不重开”长期表述需要限定为连续两阶段仍有 PDD 强证据;手动重试/页面丢失时应重开任务 URL。

交付文档影响

  • 无交付文档影响,原因:操作入口与部署方式不变。

任务记录与可选快照

  • 单次任务事实来源:本工单正文与评论
  • 默认不创建任务快照

验收标准

  • Agent 前台对失败任务执行同任务重试时,采购 attempt 会重新打开该任务 PDD 商品链接。
  • 即时 spec_probe → purchase 且当前 PDD 页面强证据成立时,不重复打开浏览器。
  • PDD 前台但缺少商品/规格结构强证据时不得盲目复用,执行正常打开流程。
  • 仍不做 goodsId/标题严格核验;登录、风控、验证码和页面异常继续 fail-closed。
  • Android 定向与完整测试通过,Debug APK 可构建。
  • 不自动执行真机重试、创建订单或付款;真机 CG91 由用户后续验收。

风险和回退

  • 采购自动化属于高风险流程;本单仅修复可逆的商品页进入动作,不触碰不可逆下单门禁。用户于 2026-09-05 明确授权建单并实施。
  • 回退本单 Android 提交即可恢复旧行为;付款永久禁止。

工具说明

当前环境未提供 Gitea MCP 工单工具,按仓库规则回退项目已配置的 Gitea API;凭据只从已忽略的 gitea.env 读取,不写入工单或日志。

## 基本信息 - 类型:缺陷 - 所属 Epic:#32 - 所属 MVP / 版本:采购 Agent - 阶段:进行中 ## 依赖与并行 - 前置工单:关联 #219、#225;基于 #225 分支提交 `b306f41` - 是否允许与前置工单并行:是 - 原因:#225 的同任务重试已经生效;本单修复重试 attempt 启动后的页面进入策略。 ## 子项目影响 - 仅影响:android、shared-docs - 是否跨子项目:是 - 是否修改共享接口或契约:否;但修正 Wiki 中两阶段页面复用的长期行为说明 - 验证:Android 定向单元测试、完整 Android 验证与 APK 构建;Wiki 在线回读、镜像同步和一致性检查 ## 原始需求 - 来源:用户对话 - 提出时间:2026-09-05 - 摘要:CG91 在 Agent 点击普通“重试采购”后仍停留在 Agent 界面,没有重新打开 PDD 商品页;用户确认按建议建单并实施。 ## 要解决什么 - 当前代码事实:#219 在 `phase=purchase` 时无条件跳过 `OPEN_PRODUCT`,只适用于 `spec_probe` 完成后立即衔接的第二阶段。#225 的同任务手动重试会在 Agent 前台启动新的 attempt,仍被该条件跳过打开链接,随后 `VERIFY_PRODUCT` 因无 PDD 商品页证据失败。CG91 已出现同任务多个失败 attempt,未创建新任务。 - 目标契约:采购阶段仅在当前前台确为 PDD 且已经具备商品页或已识别规格面板的安全结构证据时复用页面;Agent、浏览器、其他应用或缺少强证据时,执行规则中的 `OPEN_PRODUCT`,重新打开该任务固化的商品 URL。 - 假设:即时 `spec_probe → purchase` 仍保留 PDD 页面强证据;手动重试通常从 Agent 前台启动。 ## 做什么 / 不做什么 - 做:把 purchase 阶段的无条件跳过改为证据驱动;保留 #219 即时两阶段单次跳转;补充 Agent 前台重试重新打开、PDD 强证据复用及 PDD 无证据重开的回归测试;提升 Agent 构建版本。 - 不做:不修改服务端重试状态机、任务/attempt 数据;不修改规格匹配;不自动触发 CG91;不修改地址、不创建订单、不付款。 ## 已确认方案 1. 到达 `OPEN_PRODUCT` 动作时,先读取当前页面。 2. 仅当 `phase=purchase` 且当前包名为 PDD、页面无登录/风控等问题、并满足既有 `hasPurchaseProductEvidence()` 强证据时跳过打开链接。 3. 其余情况走现有 `openProduct` 安全导航与等待逻辑;不以标题、goodsId 或页面指纹做严格同页校验。 4. 后续 `VERIFY_PRODUCT` 和规格/下单门禁保持不变。 预计修改: - `android/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseRehearsalExecutor.kt` - `android/app/src/test/java/cn/ilapage/goauto/agent/PurchaseRehearsalExecutorTest.kt` - Android 版本配置 - Gitea Wiki `Business-Rules-and-Glossary`、`Android-Agent-API-Contract` 及其只读镜像 ## 设计与原型门禁 - 修改类型:恢复既有行为的 Bug - 证据:CG91 复现、#219 代码条件和 #225 同任务 attempt 记录 - 状态:已确认 - 确认人/时间:用户,2026-09-05 - 无需 UI 原型:不新增或修改界面,只修复自动化页面进入条件。 ## 文档影响 - [ ] 不影响长期文档 - [x] 更新业务规则与术语 Wiki - [x] 更新 API 契约 Wiki 原因:#219 的“purchase 第二阶段永不重开”长期表述需要限定为连续两阶段仍有 PDD 强证据;手动重试/页面丢失时应重开任务 URL。 ## 交付文档影响 - [x] 无交付文档影响,原因:操作入口与部署方式不变。 ## 任务记录与可选快照 - 单次任务事实来源:本工单正文与评论 - [x] 默认不创建任务快照 ## 验收标准 - [ ] Agent 前台对失败任务执行同任务重试时,采购 attempt 会重新打开该任务 PDD 商品链接。 - [ ] 即时 `spec_probe → purchase` 且当前 PDD 页面强证据成立时,不重复打开浏览器。 - [ ] PDD 前台但缺少商品/规格结构强证据时不得盲目复用,执行正常打开流程。 - [ ] 仍不做 goodsId/标题严格核验;登录、风控、验证码和页面异常继续 fail-closed。 - [ ] Android 定向与完整测试通过,Debug APK 可构建。 - [ ] 不自动执行真机重试、创建订单或付款;真机 CG91 由用户后续验收。 ## 风险和回退 - 采购自动化属于高风险流程;本单仅修复可逆的商品页进入动作,不触碰不可逆下单门禁。用户于 2026-09-05 明确授权建单并实施。 - 回退本单 Android 提交即可恢复旧行为;付款永久禁止。 ## 工具说明 当前环境未提供 Gitea MCP 工单工具,按仓库规则回退项目已配置的 Gitea API;凭据只从已忽略的 `gitea.env` 读取,不写入工单或日志。
Author
Owner

实施完成,待验收

已在分支 fix/226-reopen-pdd-on-manual-retry 完成并推送:

  • 41fe461:把 purchase 阶段 OPEN_PRODUCT 从无条件跳过改为证据驱动。仅当前快照无页面问题且具备既有 PDD 商品页/规格面板强证据时复用;Agent、其他应用、PDD 加载空页或缺少强证据时走原有安全打开链接流程。登录/风控等页面继续 fail-closed。
  • 补充 Agent 前台手动重试、PDD 无商品证据重开、PDD 登录页不复用三组回归;保留即时两阶段 PDD 强证据成立时零次重复打开的既有用例。
  • Agent 版本提升为 0.9.48 (61)。
  • 9320e55:同步长期业务规则和 Android Agent API 契约。

验证结果

  • 定向 PurchaseRehearsalExecutorTest:64 项通过。
  • scripts/verify.ps1 -Component android:Debug/Release 全部单元测试通过,Debug APK 构建成功。
  • git diff --check、python dev_scripts/harness.py check --strict:通过。
  • Wiki 在线回读:Business-Rules-and-Glossary@240e8fb9e365d534bbf0c7b2cd8ff1438bc8857b;Android-Agent-API-Contract@f3242938de4ac55c47f5c6eebd69184024e6a0ea。
  • 在独立干净 worktree 执行一次 sync 和一次 sync --check:通过;仅同步两份对应镜像,未覆盖主工作区既有 docs/12 修改。
  • 分支远端 HEAD 与本地一致:9320e5528c82e80e3b7775565989740ce6ddfebc。

真机安装与安全边界

  • Debug APK:6,281,485 bytes;SHA-256 6be38f45fa216e7789e217e4fcde9d25a724e4533213fca7854b58aa2776ed1f。
  • 已安装到 192.168.0.173:41751,设备回读 versionCode=61、versionName=0.9.48;GoAuto 无障碍服务仍启用。
  • 安装前设备前台为 Agent;本次未自动触发 CG91、未修改地址、未创建订单、未付款。

请由用户在 Agent 对 CG91 点击一次“重试采购”验收:预期仍为 CG91、新增 attempt,并从 Agent 前台重新打开任务固化的 PDD 商品链接。后续会进入正式采购流程,是否继续至创建待付款订单由用户现场控制;付款永久禁止。

工作区原有配置、文档和未跟踪文件未纳入提交。当前 Gitea MCP 不可用,工单/Wiki 通过项目配置 API 回退完成。

## 实施完成,待验收 已在分支 `fix/226-reopen-pdd-on-manual-retry` 完成并推送: - `41fe461`:把 purchase 阶段 `OPEN_PRODUCT` 从无条件跳过改为证据驱动。仅当前快照无页面问题且具备既有 PDD 商品页/规格面板强证据时复用;Agent、其他应用、PDD 加载空页或缺少强证据时走原有安全打开链接流程。登录/风控等页面继续 fail-closed。 - 补充 Agent 前台手动重试、PDD 无商品证据重开、PDD 登录页不复用三组回归;保留即时两阶段 PDD 强证据成立时零次重复打开的既有用例。 - Agent 版本提升为 `0.9.48 (61)`。 - `9320e55`:同步长期业务规则和 Android Agent API 契约。 ### 验证结果 - 定向 `PurchaseRehearsalExecutorTest`:64 项通过。 - `scripts/verify.ps1 -Component android`:Debug/Release 全部单元测试通过,Debug APK 构建成功。 - `git diff --check`、`python dev_scripts/harness.py check --strict`:通过。 - Wiki 在线回读:`Business-Rules-and-Glossary@240e8fb9e365d534bbf0c7b2cd8ff1438bc8857b`;`Android-Agent-API-Contract@f3242938de4ac55c47f5c6eebd69184024e6a0ea`。 - 在独立干净 worktree 执行一次 `sync` 和一次 `sync --check`:通过;仅同步两份对应镜像,未覆盖主工作区既有 `docs/12` 修改。 - 分支远端 HEAD 与本地一致:`9320e5528c82e80e3b7775565989740ce6ddfebc`。 ### 真机安装与安全边界 - Debug APK:6,281,485 bytes;SHA-256 `6be38f45fa216e7789e217e4fcde9d25a724e4533213fca7854b58aa2776ed1f`。 - 已安装到 `192.168.0.173:41751`,设备回读 `versionCode=61`、`versionName=0.9.48`;GoAuto 无障碍服务仍启用。 - 安装前设备前台为 Agent;本次未自动触发 CG91、未修改地址、未创建订单、未付款。 请由用户在 Agent 对 CG91 点击一次“重试采购”验收:预期仍为 CG91、新增 attempt,并从 Agent 前台重新打开任务固化的 PDD 商品链接。后续会进入正式采购流程,是否继续至创建待付款订单由用户现场控制;付款永久禁止。 工作区原有配置、文档和未跟踪文件未纳入提交。当前 Gitea MCP 不可用,工单/Wiki 通过项目配置 API 回退完成。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#226