feat: 执行并提交 PDD 采集任务 (#32)

This commit is contained in:
chengma
2026-08-07 17:38:29 +08:00
parent 34b4b54b63
commit 2d1fdbea3f
17 changed files with 2156 additions and 108 deletions
+47
View File
@@ -183,6 +183,53 @@ class TaskRepositoryTests(unittest.TestCase):
with self.assertRaisesRegex(ValueError, "offset"):
self.repository.list_tasks(offset=-1)
def test_result_and_outbox_are_saved_together_then_marked_succeeded(self):
self.repository.add_claimed_task(self._task("TASK-RUN"))
started = self.repository.start_collect_run("TASK-RUN", "USB-001")
event = self.repository.save_collect_result(
"TASK-RUN",
started.attempt_id,
{
"goods_id": "10001",
"title": "测试商品",
"price_granularity": "color",
"dimensions": [],
"skus": [{"price_cent": 990}],
},
)
self.assertEqual(
self.repository.get_task("TASK-RUN").status,
TaskStatus.RESULT_PENDING,
)
self.assertEqual(event.status, OutboxStatus.PENDING)
self.repository.mark_outbox_sent(event.id)
self.assertEqual(
self.repository.get_task("TASK-RUN").status,
TaskStatus.SUCCEEDED,
)
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")
self.repository.save_collect_failure(
"TASK-RECOVER",
started.attempt_id,
TaskStatus.RETRY_WAIT,
"DEVICE_OFFLINE",
"设备离线",
True,
)
event = self.repository.next_pending_outbox()
self.repository.mark_outbox_sending(event.id)
self.repository.recover_interrupted_work()
self.assertEqual(
self.repository.get_outbox_event(event.id).status,
OutboxStatus.PENDING,
)
if __name__ == "__main__":
unittest.main()