feat: 增加采集任务重新执行入口 (#63)

This commit is contained in:
chengma
2026-08-09 21:44:29 +08:00
parent 72821eaaef
commit eda3661604
12 changed files with 509 additions and 27 deletions
+19 -4
View File
@@ -111,11 +111,26 @@ class CollectTaskService:
if task is None:
raise RuntimeError(f"任务 {remote.task_id} 未能保存到本地")
return self._execute_task(task.remote_task_id)
def execute_selected(self, remote_task_id: str) -> CollectTaskOutcome:
"""只执行指定的本地采集任务,不领取任务或补交其他结果。"""
if not self._device_address.strip():
raise ValueError("请先在设置页选择并保存 Android 设备")
task = self._repository.get_task(remote_task_id)
if task is None:
raise ValueError(f"任务 {remote_task_id} 不存在")
return self._execute_task(task.remote_task_id)
def _execute_task(self, remote_task_id: str) -> CollectTaskOutcome:
"""执行一条已经保存在本地且处于待执行状态的采集任务。"""
if self._cancelled():
return CollectTaskOutcome("cancelled", "本次采集已取消", task.remote_task_id)
return CollectTaskOutcome("cancelled", "本次采集已取消", remote_task_id)
started = self._repository.start_collect_run(
task.remote_task_id, self._device_address
remote_task_id, self._device_address
)
collector = self._factory(
self._device_address, self._client.client_id, self._cancelled
@@ -123,13 +138,13 @@ class CollectTaskService:
try:
result = collector.collect(started.task)
event = self._repository.save_collect_result(
task.remote_task_id, started.attempt_id, result.to_pdd_data()
remote_task_id, started.attempt_id, result.to_pdd_data()
)
except PddCollectError as exc:
status, retryable = self._classify_error(exc.code)
report_code = self._report_error_code(exc.code)
event = self._repository.save_collect_failure(
task.remote_task_id,
remote_task_id,
started.attempt_id,
status,
report_code,