feat: 完善采购任务安全恢复 (#73)
This commit is contained in:
@@ -18,6 +18,10 @@ from .purchase_task_service import (
|
||||
PurchaseAdapterFactory,
|
||||
PurchaseTaskService,
|
||||
)
|
||||
from .purchase_reconcile_service import (
|
||||
PurchaseReconcileFactory,
|
||||
PurchaseReconcileService,
|
||||
)
|
||||
from .task_models import (
|
||||
NewClaimedTask,
|
||||
OutboxEventRecord,
|
||||
@@ -120,6 +124,7 @@ class TaskDispatcher:
|
||||
*,
|
||||
collect_service_factory: Optional[CollectServiceFactory] = None,
|
||||
purchase_adapter_factory: Optional[PurchaseAdapterFactory] = None,
|
||||
purchase_reconcile_factory: Optional[PurchaseReconcileFactory] = None,
|
||||
cancelled: Callable[[], bool] = lambda: False,
|
||||
) -> None:
|
||||
self._gateway = gateway
|
||||
@@ -128,6 +133,7 @@ class TaskDispatcher:
|
||||
self._device_address = str(device_address or "").strip()
|
||||
self._collect_factory = collect_service_factory
|
||||
self._purchase_factory = purchase_adapter_factory
|
||||
self._reconcile_factory = purchase_reconcile_factory
|
||||
self._cancelled = cancelled
|
||||
|
||||
@property
|
||||
@@ -165,6 +171,23 @@ class TaskDispatcher:
|
||||
if not self._device_address:
|
||||
raise ValueError("请先在设置页选择并保存 Android 设备")
|
||||
|
||||
reconcile_task = self._repository.next_purchase_reconcile_task()
|
||||
if reconcile_task is not None:
|
||||
if self._reconcile_factory is None:
|
||||
raise RuntimeError(
|
||||
f"任务 {reconcile_task.remote_task_id} 只允许核对订单,"
|
||||
"但只读核对执行器未就绪;不会重新下单"
|
||||
)
|
||||
outcome = PurchaseReconcileService(
|
||||
self._repository,
|
||||
self._device_address,
|
||||
self._reconcile_factory,
|
||||
cancelled=self._cancelled,
|
||||
).execute_selected(reconcile_task.remote_task_id)
|
||||
return TaskDispatchOutcome(
|
||||
outcome.kind, outcome.message, outcome.task_id
|
||||
)
|
||||
|
||||
if not self.purchase_ready:
|
||||
pending_purchase = self._repository.next_purchase_task()
|
||||
if pending_purchase is not None:
|
||||
|
||||
Reference in New Issue
Block a user