fix: 优化重新采集取消交互 (#82)

This commit is contained in:
chengma
2026-08-10 09:08:54 +08:00
parent 8cc8574e8a
commit 39f4a8ee4f
6 changed files with 307 additions and 16 deletions
+25 -3
View File
@@ -126,12 +126,20 @@ class CollectTaskService:
def _execute_task(self, remote_task_id: str) -> CollectTaskOutcome:
"""执行一条已经保存在本地且处于待执行状态的采集任务。"""
if self._cancelled():
return CollectTaskOutcome("cancelled", "本次采集已取消", remote_task_id)
started = self._repository.start_collect_run(
remote_task_id, self._device_address
)
if self._cancelled():
event = self._repository.save_collect_failure(
remote_task_id,
started.attempt_id,
TaskStatus.CANCELLED,
"PDD_CANCELLED",
"采集任务已安全取消",
False,
{},
)
return self._submit_cancelled(event, remote_task_id)
collector = self._factory(
self._device_address, self._client.client_id, self._cancelled
)
@@ -152,8 +160,22 @@ class CollectTaskService:
retryable,
exc.diagnostics,
)
if exc.code == "PDD_CANCELLED":
return self._submit_cancelled(event, remote_task_id)
return self._submit(event)
def _submit_cancelled(
self, event: OutboxEventRecord, remote_task_id: str
) -> CollectTaskOutcome:
"""提交取消结果;Admin 接收后对界面返回明确的已取消。"""
outcome = self._submit(event)
if outcome.kind == "failed":
return CollectTaskOutcome(
"cancelled", f"任务 {remote_task_id} 已安全取消", remote_task_id
)
return outcome
def _submit(self, event: OutboxEventRecord) -> CollectTaskOutcome:
task_id = self._repository.outbox_task_id(event.id)
self._repository.mark_outbox_sending(event.id)