docs: 归档任务 #170
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# #170 Client:任务失败不自动重试并继续下一条
|
||||
|
||||
- 工单号:#170
|
||||
- 类型:需求
|
||||
- 父级:Epic #1、MVP #2
|
||||
- 版本:Client 可运行任务闭环
|
||||
- 状态:待验收
|
||||
- 日期:2026-08-11
|
||||
- Gitea:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/170>
|
||||
|
||||
## 背景与目标
|
||||
|
||||
旧流程把部分采集失败显示为“等待重试”,但实际上没有倒计时,还会停止整个自动
|
||||
任务队列。采购人员难以判断任务是否失败,Admin 指派的后续任务也会被阻塞。本任务
|
||||
改为每条任务自动执行一次,任务自身失败后记录原因并继续下一条。
|
||||
|
||||
## 最终方案
|
||||
|
||||
- 普通采集或采购错误保存为 `failed`,错误上报中的 `retryable` 固定为 `false`,
|
||||
自动流程不再重试当前任务。
|
||||
- 自动任务查询只选择 `claimed`,不再选择历史 `retry_wait`;旧记录保留并显示为
|
||||
“采集失败”或“采购失败”。
|
||||
- 服务结果明确区分 `task_failed` 和 `global_failed`。前者上报成功后安排下一轮;
|
||||
后者停止自动获取。
|
||||
- 设备断开、PDD 登录、验证码、风控、支付页、Admin/Outbox 阻塞和不可逆采购待
|
||||
核单仍作为全局阻塞,不继续批量制造失败任务。
|
||||
- 列表和详情根据任务类型显示“采集失败”或“采购失败”,详情继续展示错误码与
|
||||
失败原因。
|
||||
- 手动重新采集和重新采购入口保留;每次重新执行创建新的运行记录,采购仍永久
|
||||
拒绝任何有不可逆历史的任务重新下单。
|
||||
- 同步更新需求、数据模型和界面规范中的稳定行为说明。
|
||||
|
||||
## 改了哪些文件
|
||||
|
||||
- `client/src/collect_task_service.py`:普通采集错误改为单次失败,区分任务失败和
|
||||
全局阻塞。
|
||||
- `client/src/purchase_task_service.py`:普通采购错误保存为失败并继续队列,全局及
|
||||
不可逆安全规则保持停止。
|
||||
- `client/src/task_repository.py`:自动选择只读取 `claimed`,跳过失败和历史
|
||||
`retry_wait`。
|
||||
- `client/src/pdd_ui_event.py`、`client/src/task_detail_view.py`:显示任务类型对应的
|
||||
失败状态,并只对任务自身失败安排下一轮。
|
||||
- `client/test/` 相关测试:覆盖失败后下一条、禁止自动重试、全局阻塞、中文状态、
|
||||
失败原因和采购取消。
|
||||
- `docs/client/01-requirements.md`、`03-data-model.md`、`05-ui-specification.md`:同步
|
||||
单次执行与失败队列规则。
|
||||
|
||||
## 验收结果
|
||||
|
||||
- [x] 新采集失败不再进入“等待重试”,列表显示“采集失败”。
|
||||
- [x] 普通采购失败显示“采购失败”,详情保留具体错误原因。
|
||||
- [x] 第一条任务自身失败且上报成功后,第二条本地任务可以继续执行。
|
||||
- [x] 失败和历史 `retry_wait` 任务不会被自动选择。
|
||||
- [x] 用户手动重新执行仍使用现有入口和安全预检。
|
||||
- [x] 设备、登录、验证码、风控、Admin 和不可逆采购等全局问题仍停止队列。
|
||||
- [x] 未修改 Admin 接口、数据库表结构、`pdd_data` 和采购不可逆门禁。
|
||||
- [x] Client 全量测试和语法检查通过。
|
||||
- [ ] 用户使用多个真实任务确认一条失败后会继续下一条。
|
||||
|
||||
## 测试
|
||||
|
||||
在 `client/` 目录执行:
|
||||
|
||||
```powershell
|
||||
$env:QT_QPA_PLATFORM="offscreen"
|
||||
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
|
||||
C:/Python310/python.exe -m py_compile src/collect_task_service.py src/purchase_task_service.py src/task_repository.py src/pdd_ui_event.py src/task_detail_view.py
|
||||
Remove-Item Env:QT_QPA_PLATFORM
|
||||
```
|
||||
|
||||
结果:Client 完整 429 项测试通过,语法检查通过。
|
||||
|
||||
**没验证到的部分**:未连接真实 Admin 连续领取多条任务;未连接 Android 真机;未
|
||||
执行真实采购、下单或付款。
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `8b8a542` 任务失败后继续执行下一条。
|
||||
Reference in New Issue
Block a user