Files
cmautobuy/docs/task/63-采集任务重新执行入口.md
T
2026-08-09 21:45:28 +08:00

61 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 63 为选中的采集任务增加重新执行入口
- 类型:需求
- 父级大工单:#1
- 所属 MVP / 版本:#2 Client 可运行任务闭环(MVP)
- 状态:已完成,待用户验收
- 日期:2026-08-09
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/63
## 背景与目标
任务列表原来只能查看和刷新。采集结果需要复核或补全时,操作人员没有安全、
可追踪的重新采集入口。本任务增加单条采集任务重新执行能力,同时禁止从该入口
重新执行采购任务。
## 最终方案
- 在刷新按钮右侧增加“重新执行”,没有选中行时禁用。
- 点击后校验任务类型、任务状态、Outbox、自动获取状态和设备设置,再显示明确的
“重新采集”确认弹窗。
- 只允许重新采集已结束的采集任务;采购、活动状态和未发送结果均拦截。
- 后台线程按 `remote_task_id` 执行指定任务,不领取新任务,也不先处理其他任务。
- 新采集生成新的 `attempt_id` 和幂等键。`pdd_tasks.pdd_data` 保存最新结果并按
原接口提交 Admin;新增 `task_runs.result_data` 保存每次成功结果,避免历史丢失。
- SQLite 使用 v2 追加迁移,旧数据库原有任务和执行记录不变。
## 改了哪些
- `client/src/pdd_ui.py`:增加重新执行按钮、信号、选择状态和运行中禁用状态。
- `client/src/pdd_ui_event.py`:增加确认、校验、指定任务 Worker 和中文结果提示。
- `client/src/collect_task_service.py`:增加只执行指定本地任务的入口。
- `client/src/task_repository.py`:增加重新采集事务校验和状态准备,并保存每次结果。
- `client/src/db_schema.py`、`client/src/task_models.py`:增加数据库 v2 和执行结果字段。
- `client/test/`:补充迁移、Repository、服务和界面事件测试。
- `docs/client/03-data-model.md`、`docs/client/05-ui-specification.md`:同步稳定规则。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 刷新右侧显示重新执行,没有选中项时不可用 | 通过 |
| 明确确认后只重新采集选中的终态采集任务 | 通过 |
| 采购、活动状态、未发送 Outbox 和忙碌状态被拦截 | 通过 |
| 新执行使用新的尝试编号和幂等键 | 通过 |
| 当前结果更新,旧成功结果保存在执行记录 | 通过 |
| 手机自动化与网络提交不阻塞 Qt 主线程 | 通过 |
| 不触发采购和真实下单 | 通过 |
## 测试
- 执行的命令:
- `C:/Python310/python.exe -m unittest discover -s test -v`
- `C:/Python310/python.exe -m py_compile src/pdd_ui.py src/pdd_ui_event.py src/task_repository.py src/collect_task_service.py src/db_schema.py`
- 设置 `QT_QPA_PLATFORM=offscreen` 后创建并关闭 `MainWindow`
- 结果:182 项单元测试全部通过;语法检查通过;离屏冒烟输出 `OK`。
- **没验证到的部分**:没有连接真机执行重新采集,也没有在真实 Admin 数据上验证当前结果覆盖;采购任务未做真机测试,避免触发采购行为。
## 相关提交
- `eda3661` 增加采集任务重新执行入口