feat: 实现受控真实下单安全边界 (#99)

This commit is contained in:
chengma
2026-08-10 16:35:38 +08:00
parent 7106f6b024
commit e960cab1fb
30 changed files with 1562 additions and 66 deletions
+39
View File
@@ -32,10 +32,12 @@ class TaskRepositoryTests(unittest.TestCase):
task_type: TaskType = TaskType.COLLECT,
title: str = "测试商品",
goods_id: str = "10001",
execution_mode: str = "dry_run",
) -> NewClaimedTask:
return NewClaimedTask(
remote_task_id=remote_task_id,
task_type=task_type,
execution_mode=execution_mode,
goods_id=goods_id,
goods_url=f"https://example.test/goods/{goods_id}",
title=title,
@@ -96,6 +98,43 @@ class TaskRepositoryTests(unittest.TestCase):
self.assertEqual(detail.admin_payload["task_id"], "TASK-001")
self.assertEqual(detail.pdd_data["schema_version"], 1)
def test_live_mode_and_irreversible_marker_are_persisted_once(self) -> None:
self.repository.add_claimed_task(
self._task(
"PURCHASE-LIVE",
TaskType.PURCHASE,
execution_mode="live",
)
)
detail = self.repository.get_task("PURCHASE-LIVE")
self.assertEqual(detail.execution_mode, "live")
started = self.repository.start_purchase_run(
"PURCHASE-LIVE", "192.168.0.173:5555"
)
marked_at = self.repository.mark_purchase_irreversible(
"PURCHASE-LIVE", started.attempt_id
)
run = self.repository.latest_task_run("PURCHASE-LIVE")
self.assertEqual(run.irreversible_action_at, marked_at)
with self.assertRaisesRegex(ValueError, "已经存在"):
self.repository.mark_purchase_irreversible(
"PURCHASE-LIVE", started.attempt_id
)
def test_dry_run_cannot_enter_irreversible_stage(self) -> None:
self.repository.add_claimed_task(
self._task("PURCHASE-DRY", TaskType.PURCHASE)
)
started = self.repository.start_purchase_run(
"PURCHASE-DRY", "USB-001"
)
with self.assertRaisesRegex(ValueError, "演练任务"):
self.repository.mark_purchase_irreversible(
"PURCHASE-DRY", started.attempt_id
)
def test_duplicate_remote_task_id_does_not_overwrite(self) -> None:
self.repository.add_claimed_task(self._task("TASK-001"))