fix: 任务执行前检查 Android 设备连接 (#84)

This commit is contained in:
chengma
2026-08-10 09:35:46 +08:00
parent dee9f34035
commit e7fb06d7aa
11 changed files with 360 additions and 25 deletions
+13 -1
View File
@@ -14,6 +14,10 @@ from .admin_gateway import (
ClientInfo,
)
from .collect_task_service import CollectServiceFactory, CollectTaskService
from .android_device_service import (
AndroidDeviceSearchError,
AndroidDeviceService,
)
from .purchase_task_service import (
PurchaseAdapterFactory,
PurchaseTaskService,
@@ -126,6 +130,7 @@ class TaskDispatcher:
purchase_adapter_factory: Optional[PurchaseAdapterFactory] = None,
purchase_reconcile_factory: Optional[PurchaseReconcileFactory] = None,
cancelled: Callable[[], bool] = lambda: False,
device_connection_checker: Optional[Callable[[str], None]] = None,
) -> None:
self._gateway = gateway
self._repository = repository
@@ -135,6 +140,10 @@ class TaskDispatcher:
self._purchase_factory = purchase_adapter_factory
self._reconcile_factory = purchase_reconcile_factory
self._cancelled = cancelled
self._device_connection_checker = (
device_connection_checker
or AndroidDeviceService().require_connected
)
@property
def purchase_ready(self) -> bool:
@@ -169,7 +178,10 @@ class TaskDispatcher:
if pending is not None:
return self._submit_pending(pending)
if not self._device_address:
raise ValueError("请先在设置页选择并保存 Android 设备")
raise AndroidDeviceSearchError(
"请先在设置页选择并保存 Android 设备"
)
self._device_connection_checker(self._device_address)
reconcile_task = self._repository.next_purchase_reconcile_task()
if reconcile_task is not None: