fix: 下单后自动进入只读核单 (#119)

This commit is contained in:
chengma
2026-08-10 19:18:26 +08:00
parent 4c722558ad
commit b789b50a16
6 changed files with 69 additions and 4 deletions
+51
View File
@@ -24,6 +24,7 @@ from src.pdd_ui_event import (
ERROR_FEEDBACK_DURATION_MS,
ERROR_FEEDBACK_MIN_HEIGHT,
ERROR_FEEDBACK_MIN_WIDTH,
PURCHASE_RECONCILE_DELAY_MS,
PDDTaskPageEvent,
admin_task_to_new_claimed_task,
summary_to_row,
@@ -1474,6 +1475,56 @@ class PDDTaskPageEventTest(unittest.TestCase):
events.shutdown()
page.deleteLater()
def test_live_submit_schedules_read_only_reconcile_after_five_seconds(self):
page = PDDTaskPage()
events = PDDTaskPageEvent(
page,
self.repository,
claim_gateway=RecordingClaimGateway(None),
settings_repository=self._saved_settings(),
)
events._auto_fetch_running = True
events._on_collect_outcome(
"reconcile_pending",
"任务 PUR-001 订单提交点击已执行,结果待只读核对",
"PUR-001",
)
self.assertEqual(
events._cycle_next_delay_ms, PURCHASE_RECONCILE_DELAY_MS
)
self.assertTrue(events._auto_fetch_running)
self.assertFalse(events._stop_requested)
self.assertIn("5 秒后自动核对订单", page.statusLabel.text())
events.shutdown()
page.deleteLater()
def test_stop_during_reconcile_wait_cancels_next_cycle(self):
page = PDDTaskPage()
events = PDDTaskPageEvent(
page,
self.repository,
claim_gateway=RecordingClaimGateway(None),
settings_repository=self._saved_settings(),
)
events._auto_fetch_running = True
events._on_collect_outcome(
"reconcile_pending", "等待只读核对", "PUR-001"
)
events._on_claim_thread_finished()
self.assertTrue(events._next_cycle_timer.isActive())
self.assertEqual(
events._next_cycle_timer.interval(), PURCHASE_RECONCILE_DELAY_MS
)
events._request_stop_auto_fetch()
self.assertFalse(events._next_cycle_timer.isActive())
self.assertFalse(events._auto_fetch_running)
events.shutdown()
page.deleteLater()
def test_duplicate_task_is_normal_status(self):
task = collect_admin_task()
self.repository.add_claimed_task(admin_task_to_new_claimed_task(task))
+2 -2
View File
@@ -304,7 +304,7 @@ class PurchaseTaskServiceTest(unittest.TestCase):
outcome = self._service(adapter).execute_one_local()
self.assertEqual(outcome.kind, "manual_review")
self.assertEqual(outcome.kind, "reconcile_pending")
self.assertEqual(adapter.submit_count, 1)
detail = self.repository.get_task("PUR-001")
run = self.repository.latest_task_run("PUR-001")
@@ -332,7 +332,7 @@ class PurchaseTaskServiceTest(unittest.TestCase):
outcome = self._service(adapter).execute_one_local()
self.assertEqual(outcome.kind, "manual_review")
self.assertEqual(outcome.kind, "reconcile_pending")
self.assertEqual(adapter.submit_count, 1)
run = self.repository.latest_task_run("PUR-001")
self.assertIsNotNone(run.irreversible_action_at)
+1 -1
View File
@@ -249,7 +249,7 @@ class TaskDispatcherTest(unittest.TestCase):
).execute_one()
self.assertEqual(dry_outcome.kind, "no_task")
self.assertEqual(live_outcome.kind, "manual_review")
self.assertEqual(live_outcome.kind, "reconcile_pending")
self.assertEqual(
self.repository.get_task(task.task_id).execution_mode,
"live",