From 7fb137f685517746bc0552951201728ee1b84b9f Mon Sep 17 00:00:00 2001 From: chengma Date: Sun, 9 Aug 2026 11:12:51 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/45-持续自动获取任务与安全停止.md | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 docs/task/45-持续自动获取任务与安全停止.md diff --git a/docs/task/45-持续自动获取任务与安全停止.md b/docs/task/45-持续自动获取任务与安全停止.md new file mode 100644 index 0000000..2f097bd --- /dev/null +++ b/docs/task/45-持续自动获取任务与安全停止.md @@ -0,0 +1,56 @@ +# 45 让获取任务按钮支持持续自动运行和安全停止 + +- 类型:需求 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 / MVP +- 状态:已实现,待验收 +- 日期:2026-08-09 +- Gitea 工单: + +## 背景与目标 + +原来的“获取任务”按钮每次只处理一轮,用户需要反复点击。此次把原按钮改成“开始自动获取 / 停止自动获取”开关:启动后持续按顺序处理任务,停止时取消下一轮并等待当前任务安全结束。 + +## 最终方案 + +- 每轮仍然只创建一个 `ClaimTaskWorker`,处理待提交结果、本地未完成任务或领取一条新任务。 +- 上一轮线程完全结束后,主线程使用单次 `QTimer` 安排下一轮,确保同一设备不会并发执行两条任务。 +- 成功后短暂等待再继续;暂无任务时等待 5 秒;Admin 临时错误按 5、10、20、30 秒退避,之后保持 30 秒。 +- 缺少配置、设备错误、需要人工处理和不可重试错误会停止自动获取,并保留明确的中文状态提示。 +- 再次点击按钮或关闭程序时停止定时器,并请求当前任务在安全点取消。 +- 未修改 Admin 接口、SQLite 表结构、`pdd_data` 结构和采购下单逻辑。 + +实际实现与建单方案一致。 + +## 改了哪些 + +- `client/src/pdd_ui_event.py`:增加连续调度、退避重试、启动/停止状态和关闭清理。 +- `client/test/test_pdd_ui_event.py`:覆盖连续串行执行、手动停止、退避、配置错误和关闭清理。 +- `docs/client/02-architecture.md`:更新自动获取的线程与调度说明。 +- `docs/client/05-ui-specification.md`:更新按钮状态及持续运行规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 点击一次后持续处理多条任务,且同一时刻最多执行一轮 | 自动测试通过 | +| 再次点击后不再启动下一轮,当前轮安全结束 | 自动测试通过 | +| 暂无任务时等待 5 秒后继续 | 自动测试通过 | +| Admin 可重试错误按 5/10/20/30 秒退避,成功后重置 | 自动测试通过 | +| 配置、人工处理等不可自动恢复的问题会停止并恢复按钮 | 自动测试通过 | +| 关闭程序后定时器不会再次领取任务 | 自动测试通过 | +| 不改变 Admin、数据库和采购安全边界 | 代码检查通过 | + +## 测试 + +- 执行的命令: + - `C:/Python310/python.exe -m py_compile src/pdd_ui_event.py test/test_pdd_ui_event.py` + - `C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_ui_event.py"` + - `C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"` + - `git diff --check -- client/src/pdd_ui_event.py client/test/test_pdd_ui_event.py docs/client/02-architecture.md docs/client/05-ui-specification.md` +- 结果:语法检查通过;定向测试 19 项通过;Client 完整测试 176 项通过;差异格式检查通过。测试环境存在 Qt 字体目录警告,不影响测试结果。 +- **没验证到的部分**:尚未连接真实 Admin 和 Android 设备连续执行多条采集任务;尚未通过真机验证采集中点击停止时的安全取消时机。未执行真实采购和下单。 + +## 相关提交 + +- `5fd7198` feat: 支持持续自动获取任务 (#45)