3.4 KiB
3.4 KiB
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 -qC:/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允许等待重试任务手动重新执行