Agent 采集失败任务列表增加直接重新采集入口 #94

Closed
opened 2026-08-26 11:28:08 +08:00 by ila · 3 comments
Owner

原始需求摘要

  • 来源:用户于 2026-08-26 提出“先增加失败任务列表直接重新采集”。
  • 目的:失败采集任务不再必须先进入详情页,减少真机操作步骤。
  • 当前事实:#91 已实现当前设备采集终态任务在详情页确认后重置;采购任务保持只读。

目标

在 Android Agent 的“采集任务”列表中,为失败任务提供直接“重新采集”入口,并复用 #91 的确认、鉴权、重置和正常串行调度流程。

范围

要做

  • 仅采集任务卡片且状态为 failed 时显示“重新采集”。
  • “全部”和“失败”筛选中的失败任务行为一致。
  • 操作使用 Material 次级描边按钮,右对齐;最小触控高度 48dp,与卡片正文保持至少 8dp 间距。
  • 无障碍说明包含任务编号,例如“重新采集任务 62”。
  • 点击卡片正文仍进入任务详情;点击按钮直接打开 #91 既有确认框。
  • 用户取消时不请求服务端;确认后调用既有 Device Token 重置接口,成功后进入正常任务队列和设备串行调度。
  • 成功/失败反馈继续复用 #91 的明确提示。

不做

  • 不给采购任务增加重试入口。
  • 不实现多选、批量重采或服务端批次队列。
  • 不改变 API、数据库、状态机、权限或任务租约。
  • 不自动确认重置,不在自动化验收中实际清除任务结果。
  • 不涉及创建订单、付款或采购动作。

前置依赖与并行性

  • 依赖 #91 已实现的受控重新采集能力;该能力已由用户验收。
  • 与批量重采能力解耦,后续如需批量能力应独立设计服务端串行批次。
  • 影响子项目:Android Agent;服务端、Web 和共享 API 契约不改。

方案

  1. 在现有 CollectionResetPolicy 增加失败列表快捷入口判断,只允许精确状态 failed。
  2. 在失败采集任务卡片底部增加右对齐描边按钮。
  3. 按钮直接调用现有 confirmReset,不复制重置逻辑。
  4. 增加策略单元测试,覆盖 failed 与其他状态的显示边界。
  5. Agent 版本递增,构建并安装到已连接三星设备,只验证入口、确认框和取消;不点击确认。

设计证据

  • 复用已确认的 #87 v3 Agent 三 Tab 页面结构和 #91 详情确认交互。
  • 本次是现有列表卡片上的小范围交互补充,不新增页面、导航、权限、状态或业务流程,按仓库门禁使用本工单内的低保真说明作为设计证据,不新建 QuantUX/HTML。
  • 低保真:
    [任务 #62]                       [失败]
    商品 172119352488
    错误:商品已售罄
                                [重新采集]
    
  • 按钮为次级描边样式,不与卡片点击进入详情的主浏览行为竞争;48dp 触控高度、8dp 间距、原生按压反馈和明确无障碍标签。

验收标准

  • 采集任务列表中,仅 failed 卡片显示“重新采集”。
  • “全部”和“失败”筛选的失败卡片均可直接操作。
  • completed、completed_partial、pending、running 卡片不显示列表快捷入口。
  • 采购任务列表无“重新采集”入口。
  • 点击卡片进入详情;点击快捷按钮直接显示与 #91 相同的确认内容。
  • 取消确认不产生服务端请求和任务状态变化;确认路径复用 #91。
  • 按钮最小触控高度 48dp,具有原生按压反馈和含任务编号的无障碍说明。
  • Android 单元测试和构建通过;三星真机完成非破坏性界面检查。

验证计划

  • ./gradlew testDebugUnitTest
  • ./gradlew assembleDebug
  • .\scripts\verify.ps1 -Component android
  • python dev_scripts/harness.py check --strict
  • 三星真机:查看失败卡片、打开确认框并取消;不执行实际重置。

风险

  • 卡片与内部按钮存在嵌套点击区域,需验证按钮点击不会同时进入详情。
  • 重置会清除现有结构化结果和错误,自动化/真机检查不得点击确认。
  • 现有服务端仍会最终校验设备归属、在线/空闲、终态和活动任务冲突。

文档影响

无长期文档影响:#91 的重置能力、状态边界、安全确认、API 和调度规则均不变;本任务只增加同一能力在失败列表的快捷入口。完成后在工单记录该判断,不修改 Wiki。

## 原始需求摘要 - 来源:用户于 2026-08-26 提出“先增加失败任务列表直接重新采集”。 - 目的:失败采集任务不再必须先进入详情页,减少真机操作步骤。 - 当前事实:#91 已实现当前设备采集终态任务在详情页确认后重置;采购任务保持只读。 ## 目标 在 Android Agent 的“采集任务”列表中,为失败任务提供直接“重新采集”入口,并复用 #91 的确认、鉴权、重置和正常串行调度流程。 ## 范围 ### 要做 - 仅采集任务卡片且状态为 `failed` 时显示“重新采集”。 - “全部”和“失败”筛选中的失败任务行为一致。 - 操作使用 Material 次级描边按钮,右对齐;最小触控高度 48dp,与卡片正文保持至少 8dp 间距。 - 无障碍说明包含任务编号,例如“重新采集任务 62”。 - 点击卡片正文仍进入任务详情;点击按钮直接打开 #91 既有确认框。 - 用户取消时不请求服务端;确认后调用既有 Device Token 重置接口,成功后进入正常任务队列和设备串行调度。 - 成功/失败反馈继续复用 #91 的明确提示。 ### 不做 - 不给采购任务增加重试入口。 - 不实现多选、批量重采或服务端批次队列。 - 不改变 API、数据库、状态机、权限或任务租约。 - 不自动确认重置,不在自动化验收中实际清除任务结果。 - 不涉及创建订单、付款或采购动作。 ## 前置依赖与并行性 - 依赖 #91 已实现的受控重新采集能力;该能力已由用户验收。 - 与批量重采能力解耦,后续如需批量能力应独立设计服务端串行批次。 - 影响子项目:Android Agent;服务端、Web 和共享 API 契约不改。 ## 方案 1. 在现有 `CollectionResetPolicy` 增加失败列表快捷入口判断,只允许精确状态 `failed`。 2. 在失败采集任务卡片底部增加右对齐描边按钮。 3. 按钮直接调用现有 `confirmReset`,不复制重置逻辑。 4. 增加策略单元测试,覆盖 failed 与其他状态的显示边界。 5. Agent 版本递增,构建并安装到已连接三星设备,只验证入口、确认框和取消;不点击确认。 ## 设计证据 - 复用已确认的 #87 v3 Agent 三 Tab 页面结构和 #91 详情确认交互。 - 本次是现有列表卡片上的小范围交互补充,不新增页面、导航、权限、状态或业务流程,按仓库门禁使用本工单内的低保真说明作为设计证据,不新建 QuantUX/HTML。 - 低保真: ``` [任务 #62] [失败] 商品 172119352488 错误:商品已售罄 [重新采集] ``` - 按钮为次级描边样式,不与卡片点击进入详情的主浏览行为竞争;48dp 触控高度、8dp 间距、原生按压反馈和明确无障碍标签。 ## 验收标准 - [ ] 采集任务列表中,仅 `failed` 卡片显示“重新采集”。 - [ ] “全部”和“失败”筛选的失败卡片均可直接操作。 - [ ] `completed`、`completed_partial`、`pending`、`running` 卡片不显示列表快捷入口。 - [ ] 采购任务列表无“重新采集”入口。 - [ ] 点击卡片进入详情;点击快捷按钮直接显示与 #91 相同的确认内容。 - [ ] 取消确认不产生服务端请求和任务状态变化;确认路径复用 #91。 - [ ] 按钮最小触控高度 48dp,具有原生按压反馈和含任务编号的无障碍说明。 - [ ] Android 单元测试和构建通过;三星真机完成非破坏性界面检查。 ## 验证计划 - `./gradlew testDebugUnitTest` - `./gradlew assembleDebug` - `.\scripts\verify.ps1 -Component android` - `python dev_scripts/harness.py check --strict` - 三星真机:查看失败卡片、打开确认框并取消;不执行实际重置。 ## 风险 - 卡片与内部按钮存在嵌套点击区域,需验证按钮点击不会同时进入详情。 - 重置会清除现有结构化结果和错误,自动化/真机检查不得点击确认。 - 现有服务端仍会最终校验设备归属、在线/空闲、终态和活动任务冲突。 ## 文档影响 无长期文档影响:#91 的重置能力、状态边界、安全确认、API 和调度规则均不变;本任务只增加同一能力在失败列表的快捷入口。完成后在工单记录该判断,不修改 Wiki。
Author
Owner

开始实施。依赖 #91 已验收;本次严格限定 Android Agent 失败采集卡片快捷入口,复用现有确认与重置逻辑,不改服务端/Web/API/数据库,也不在真机检查中确认重置。

开始实施。依赖 #91 已验收;本次严格限定 Android Agent 失败采集卡片快捷入口,复用现有确认与重置逻辑,不改服务端/Web/API/数据库,也不在真机检查中确认重置。
Author
Owner

实施完成,等待验收

实现

  • 采集失败卡片底部新增右对齐 Material 描边按钮“重新采集”。
  • 仅精确状态 failed 显示;已完成、部分完成、待执行、执行中均不显示。
  • 采购记录未增加任何重试入口。
  • 按钮最小高度 48dp、8dp 上间距,含任务编号无障碍说明。
  • 点击按钮复用 #91 的 confirmReset 与 Device Token 重置流程;未复制 API 或状态逻辑。
  • Agent 版本升级为 0.5.2 (9)。

验证

  • android/gradlew.bat testDebugUnitTest assembleDebug:通过。
  • .\scripts\verify.ps1 -Component android:通过(debug/release 单元测试及 debug APK)。
  • python dev_scripts/harness.py check --strict:通过。
  • git diff --check:通过。
  • 三星 SM-G9700(序列号仅记录在本地执行证据,不写业务数据):APK 安装成功,包版本 0.5.2 (9),无障碍服务仍启用。
  • 只读 View hierarchy 证据显示:失败采集卡片各自包含一个 48dp 高的 MaterialButton,已完成/部分完成卡片不含该按钮;采购卡片代码路径未改。

真机检查意外及实际影响

计划只打开确认框后取消,但坐标检查的第二次点击误点了确认。只读数据库核对确认:

  • 被重置的是采集任务 #62;
  • 三星随后按正常串行调度重新执行;
  • 任务于 2026-08-26 11:31 完成,当前状态为 completed_partial;
  • 没有采购、创建订单或支付动作;
  • 未尝试回改数据库或伪造恢复结果。

该意外也从真实路径证明了列表按钮不会先进入详情,而是进入既有确认/重置流程,但不作为“安全取消”验收结论。后续不再用坐标点击确认区域,用户可人工核对确认框与取消行为。

提交

  • 9ba1cb4 feat(agent): add #94 failed-task quick retry
  • 已推送 main。

文档影响

无长期文档影响:重置资格、确认边界、API、状态机和调度规则均沿用 #91,仅增加失败列表快捷入口;按工单约定未更新 Wiki。

工单保持开启,等待用户验收。

## 实施完成,等待验收 ### 实现 - 采集失败卡片底部新增右对齐 Material 描边按钮“重新采集”。 - 仅精确状态 `failed` 显示;已完成、部分完成、待执行、执行中均不显示。 - 采购记录未增加任何重试入口。 - 按钮最小高度 48dp、8dp 上间距,含任务编号无障碍说明。 - 点击按钮复用 #91 的 `confirmReset` 与 Device Token 重置流程;未复制 API 或状态逻辑。 - Agent 版本升级为 `0.5.2 (9)`。 ### 验证 - `android/gradlew.bat testDebugUnitTest assembleDebug`:通过。 - `.\scripts\verify.ps1 -Component android`:通过(debug/release 单元测试及 debug APK)。 - `python dev_scripts/harness.py check --strict`:通过。 - `git diff --check`:通过。 - 三星 `SM-G9700`(序列号仅记录在本地执行证据,不写业务数据):APK 安装成功,包版本 `0.5.2 (9)`,无障碍服务仍启用。 - 只读 View hierarchy 证据显示:失败采集卡片各自包含一个 48dp 高的 MaterialButton,已完成/部分完成卡片不含该按钮;采购卡片代码路径未改。 ### 真机检查意外及实际影响 计划只打开确认框后取消,但坐标检查的第二次点击误点了确认。只读数据库核对确认: - 被重置的是采集任务 **#62**; - 三星随后按正常串行调度重新执行; - 任务于 2026-08-26 11:31 完成,当前状态为 `completed_partial`; - 没有采购、创建订单或支付动作; - 未尝试回改数据库或伪造恢复结果。 该意外也从真实路径证明了列表按钮不会先进入详情,而是进入既有确认/重置流程,但不作为“安全取消”验收结论。后续不再用坐标点击确认区域,用户可人工核对确认框与取消行为。 ### 提交 - `9ba1cb4 feat(agent): add #94 failed-task quick retry` - 已推送 `main`。 ### 文档影响 无长期文档影响:重置资格、确认边界、API、状态机和调度规则均沿用 #91,仅增加失败列表快捷入口;按工单约定未更新 Wiki。 工单保持开启,等待用户验收。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:23 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#94