fix: 允许等待重试任务手动重新执行 (#70)

This commit is contained in:
chengma
2026-08-09 22:47:44 +08:00
parent 5df5398f32
commit a6c573a76a
6 changed files with 151 additions and 12 deletions
+42
View File
@@ -267,6 +267,48 @@ class TaskRepositoryTests(unittest.TestCase):
with self.assertRaisesRegex(CollectRerunError, "未发送"):
self.repository.validate_collect_rerun("UNSENT-RERUN")
def test_retry_wait_can_rerun_only_after_failure_outbox_is_sent(self):
self.repository.add_claimed_task(self._task("RETRY-RERUN"))
first = self.repository.start_collect_run("RETRY-RERUN", "USB-001")
event = self.repository.save_collect_failure(
"RETRY-RERUN",
first.attempt_id,
TaskStatus.RETRY_WAIT,
"DEVICE_OFFLINE",
"设备离线",
True,
)
with self.assertRaisesRegex(CollectRerunError, "未发送"):
self.repository.validate_collect_rerun("RETRY-RERUN")
self.repository.mark_outbox_sent(event.id)
prepared = self.repository.prepare_collect_rerun("RETRY-RERUN")
second = self.repository.start_collect_run("RETRY-RERUN", "USB-001")
self.assertEqual(prepared.status, TaskStatus.CLAIMED)
self.assertEqual(second.attempt_no, 2)
def test_retry_wait_explains_permanently_failed_outbox(self):
self.repository.add_claimed_task(self._task("RETRY-REJECTED"))
started = self.repository.start_collect_run(
"RETRY-REJECTED", "USB-001"
)
event = self.repository.save_collect_failure(
"RETRY-REJECTED",
started.attempt_id,
TaskStatus.RETRY_WAIT,
"DEVICE_OFFLINE",
"设备离线",
True,
)
self.repository.mark_outbox_failed(event.id, "任务不存在")
with self.assertRaisesRegex(
CollectRerunError, "上次结果提交失败:任务不存在"
):
self.repository.validate_collect_rerun("RETRY-REJECTED")
def test_recovery_restores_sending_and_interrupted_running(self):
self.repository.add_claimed_task(self._task("TASK-RECOVER"))
started = self.repository.start_collect_run("TASK-RECOVER", "USB-001")