66 lines
3.4 KiB
Markdown
66 lines
3.4 KiB
Markdown
# 70 允许等待重试的采集任务手动重新执行
|
||||
|
|
|
|||
|
|
- 类型:缺陷
|
|||
|
|
- 父级大工单:#1
|
|||
|
|
- 所属 MVP / 版本:#2 Client 可运行任务闭环(MVP)
|
|||
|
|
- 状态:已完成,待用户验收
|
|||
|
|
- 日期:2026-08-09
|
|||
|
|
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/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` 允许等待重试任务手动重新执行
|