当前“获取任务”按钮每点击一次只创建一个 Worker,并只调用一次 execute_one()。完成后线程退出、按钮恢复,不会自动处理下一条任务,与页面已有的“开始自动获取 / 停止自动获取”状态设计不一致。
execute_one()
操作人员需要启动一次后持续处理任务;同一设备仍必须保持串行,不能同时执行多个 Worker。
pdd_data
time.sleep()
主要修改 client/src/pdd_ui_event.py:
client/src/pdd_ui_event.py
PDDTaskPageEvent
QTimer
cancel()
ClaimTaskWorker + QThread
set_auto_fetch_state()
set_engine_status()
预计修改:
client/test/test_pdd_ui_event.py
docs/client/01-requirements.md
docs/client/02-architecture.md
docs/client/05-ui-specification.md
不改数据库和接口。
从 client/ 目录执行:
client/
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"
手动验证:
风险主要是重复调度导致同一设备并发、停止时迟到信号访问销毁页面,以及错误分类不当造成无限重试。实现中只在线程 finished 后单次调度下一轮,启动前同时检查运行状态、关闭状态和忙状态;关闭时停止定时器并断开/取消 Worker。若真机发现异常,可回退本工单提交,恢复一次点击只处理一条的行为。
finished
已完成实现,当前状态:待用户真机验收。
5fd7198
7fb137f
docs/task/45-持续自动获取任务与安全停止.md
git diff --check
尚未验证:真实 Admin 连续下发多条任务;真实 Android 采集中点击停止的安全取消时机。未执行采购或真实下单。工单保持开启,等待用户验收。
后续性能工作已拆为 #109(先量化耗时并做低风险去重)和 #110(数据达标后才用持久设备工作线程复用 uiautomator2 会话)。二者属于 MVP 后续性能优化,不改变本工单的持续串行调度验收范围。
用户已于 2026-08-11 明确验收通过。
eca9289
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
当前“获取任务”按钮每点击一次只创建一个 Worker,并只调用一次
execute_one()。完成后线程退出、按钮恢复,不会自动处理下一条任务,与页面已有的“开始自动获取 / 停止自动获取”状态设计不一致。操作人员需要启动一次后持续处理任务;同一设备仍必须保持串行,不能同时执行多个 Worker。
做什么 / 不做什么
pdd_data和任务状态定义。time.sleep()等待下一轮。怎么做
主要修改
client/src/pdd_ui_event.py:PDDTaskPageEvent保存自动运行状态、停止请求、连续可恢复错误次数和待执行的单次QTimer。cancel()。ClaimTaskWorker + QThread。线程完成后,根据本轮结果在主线程使用单次QTimer安排下一轮,确保上一线程完全结束后才启动。set_auto_fetch_state()和set_engine_status()更新按钮及状态文字。预计修改:
client/src/pdd_ui_event.pyclient/test/test_pdd_ui_event.pydocs/client/01-requirements.md、docs/client/02-architecture.md和docs/client/05-ui-specification.md中稳定的自动运行行为。不改数据库和接口。
验收标准
怎么验证
从
client/目录执行:手动验证:
风险和回退
风险主要是重复调度导致同一设备并发、停止时迟到信号访问销毁页面,以及错误分类不当造成无限重试。实现中只在线程
finished后单次调度下一轮,启动前同时检查运行状态、关闭状态和忙状态;关闭时停止定时器并断开/取消 Worker。若真机发现异常,可回退本工单提交,恢复一次点击只处理一条的行为。实施记录(2026-08-09)
已完成实现,当前状态:待用户真机验收。
5fd7198(持续串行调度、安全停止、空队列轮询、Admin 退避)7fb137fdocs/task/45-持续自动获取任务与安全停止.mdgit diff --check:通过尚未验证:真实 Admin 连续下发多条任务;真实 Android 采集中点击停止的安全取消时机。未执行采购或真实下单。工单保持开启,等待用户验收。
后续性能工作已拆为 #109(先量化耗时并做低风险去重)和 #110(数据达标后才用持久设备工作线程复用 uiautomator2 会话)。二者属于 MVP 后续性能优化,不改变本工单的持续串行调度验收范围。
用户已于 2026-08-11 明确验收通过。
eca9289