Files
cmautobuy/docs/task/70-等待重试任务手动重新执行.md
T

3.4 KiB
Raw Blame History

70 允许等待重试的采集任务手动重新执行

  • 类型:缺陷
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 Client 可运行任务闭环(MVP)
  • 状态:已完成,用户验收通过
  • 日期:2026-08-09
  • Gitea 工单:#70

背景与目标

采集任务进入“等待重试”后没有倒计时,自动获取流程也已经停止。用户等待十多分钟 仍不会看到状态变化,同时“重新执行”又拒绝该状态。本任务允许符合安全条件的 等待重试任务人工重新采集,并明确提示任务当前不会自动倒计时。

最终方案

  • 采集任务处于 retry_wait 时,可以进入人工重新执行校验。
  • 上次结果 Outbox 已成功发送后,重新执行会创建新的执行记录;不重新领取任务。
  • 仍有未发送或永久提交失败的 Outbox 时继续阻止重采,避免本地状态和 Admin 状态分叉。
  • 永久提交失败时显示 Admin 返回的具体原因,方便判断应先处理什么。
  • 可恢复采集错误导致自动获取停止时,底部状态和持久警告显示“重试已暂停”,提示 用户选择该任务点击“重新执行”,或重新启动获取任务。
  • 本任务不增加倒计时和 next_retry_at,不修改数据库结构或 Admin 接口,也不允许 采购任务重新执行。

现场只读检查发现,当前两条等待重试任务的 task_failure Outbox 都被 Admin 以 “任务不存在”永久拒绝。这两条任务仍会被安全门禁阻止重采,因为重新采集后的结果 也没有 Admin 任务可以接收;应由 Admin 重新创建或派发任务后再执行。

改了哪些文件

  • client/src/task_repository.py:允许安全的等待重试采集任务重新执行,并细化 Outbox 错误。
  • client/src/pdd_ui_event.py:增加“重试已暂停”的稳定状态和持久提示。
  • client/test/test_task_repository.py:覆盖等待重试和永久失败 Outbox 的校验。
  • client/test/test_pdd_ui_event.py:覆盖暂停提示及普通失败任务分支。
  • docs/client/03-data-model.md:说明等待重试的人工恢复方式和无倒计时现状。
  • docs/client/05-ui-specification.md:更新重新执行范围和暂停反馈规则。

验收结果

验收标准 结果
等待重试的采集任务可进入人工重新执行 通过
未发送 Outbox 时继续阻止重新执行 通过
永久失败 Outbox 显示 Admin 的具体拒绝原因 通过
每次重新执行创建新的任务执行记录 通过
自动获取停止后明确显示“重试已暂停”和恢复方式 通过
普通失败任务不错误显示为等待重试 通过
采购任务和执行中的任务仍不可重新执行 通过

测试

  • 执行的命令:
    • C:/Python310/python.exe -m unittest discover -s test -q
    • C:/Python310/python.exe -m py_compile src/task_repository.py src/pdd_ui_event.py
    • 设置 QT_QPA_PLATFORM=offscreen 后创建并关闭 MainWindow
  • 结果:Client 全量 187 项测试通过;语法检查通过;离屏冒烟输出 MAIN_WINDOW_OK。
  • 未验证到的部分:尚未用真机制造新的等待重试任务,并在可见 Client 界面完成 一次人工重新采集;当前现场任务因 Admin 返回“任务不存在”不能用于该验收。

相关提交

  • a6c573a 允许等待重试任务手动重新执行