feat: 任务失败后继续执行下一条 (#170)
This commit is contained in:
@@ -1128,6 +1128,37 @@ class PDDTaskPageEventTest(unittest.TestCase):
|
||||
self.assertEqual(collect.status, "采集中")
|
||||
self.assertEqual(purchase.status, "采购中")
|
||||
|
||||
def test_summary_to_row_uses_task_specific_failure_text(self):
|
||||
common = dict(
|
||||
id=1,
|
||||
goods_id=None,
|
||||
title=None,
|
||||
target_color=None,
|
||||
target_size=None,
|
||||
price_cent=None,
|
||||
quantity=None,
|
||||
updated_at="2026-08-11T08:00:00Z",
|
||||
)
|
||||
collect = summary_to_row(
|
||||
TaskSummary(
|
||||
remote_task_id="COL-FAILED",
|
||||
task_type=TaskType.COLLECT,
|
||||
status=TaskStatus.RETRY_WAIT,
|
||||
**common,
|
||||
)
|
||||
)
|
||||
purchase = summary_to_row(
|
||||
TaskSummary(
|
||||
remote_task_id="PUR-FAILED",
|
||||
task_type=TaskType.PURCHASE,
|
||||
status=TaskStatus.FAILED,
|
||||
**common,
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(collect.status, "采集失败")
|
||||
self.assertEqual(purchase.status, "采购失败")
|
||||
|
||||
def test_main_window_keeps_event_object_alive(self):
|
||||
window = MainWindow(
|
||||
task_repository=self.repository,
|
||||
@@ -1534,7 +1565,7 @@ class PDDTaskPageEventTest(unittest.TestCase):
|
||||
events.shutdown()
|
||||
page.deleteLater()
|
||||
|
||||
def test_retry_wait_failure_shows_paused_recovery_actions(self):
|
||||
def test_historical_retry_wait_no_longer_promises_automatic_retry(self):
|
||||
self._add_task(1)
|
||||
started = self.repository.start_collect_run("PDD-001", "USB-001")
|
||||
event = self.repository.save_collect_failure(
|
||||
@@ -1560,13 +1591,12 @@ class PDDTaskPageEventTest(unittest.TestCase):
|
||||
"PDD-001",
|
||||
)
|
||||
|
||||
self.assertIn("重试已暂停", events._stop_status)
|
||||
self.assertIn("重新执行", events._stop_status)
|
||||
self.assertIn("重新启动获取任务", events._stop_status)
|
||||
self.assertEqual(events._stop_status, "任务 PDD-001 采集未完成")
|
||||
self.assertNotIn("重试", events._stop_status)
|
||||
events.shutdown()
|
||||
page.deleteLater()
|
||||
|
||||
def test_failed_task_does_not_show_retry_paused_status(self):
|
||||
def test_task_failure_continues_auto_fetch_after_current_task(self):
|
||||
self._add_task(1)
|
||||
started = self.repository.start_collect_run("PDD-001", "USB-001")
|
||||
event = self.repository.save_collect_failure(
|
||||
@@ -1586,10 +1616,33 @@ class PDDTaskPageEventTest(unittest.TestCase):
|
||||
settings_repository=self._saved_settings(),
|
||||
)
|
||||
|
||||
events._on_collect_outcome("failed", "商品已下架", "PDD-001")
|
||||
events._auto_fetch_running = True
|
||||
events._on_collect_outcome("task_failed", "采集失败:商品已下架", "PDD-001")
|
||||
|
||||
self.assertEqual(events._stop_status, "商品已下架")
|
||||
self.assertNotIn("重试已暂停", events._stop_status)
|
||||
self.assertTrue(events._auto_fetch_running)
|
||||
self.assertFalse(events._stop_requested)
|
||||
self.assertEqual(events._next_task_delay_ms, events._cycle_next_delay_ms)
|
||||
self.assertIn("采集失败:商品已下架", page.statusLabel.text())
|
||||
events.shutdown()
|
||||
page.deleteLater()
|
||||
|
||||
def test_global_failure_stops_auto_fetch(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(
|
||||
"global_failed", "PDD 登录失效,需要人工登录", "COL-001"
|
||||
)
|
||||
|
||||
self.assertFalse(events._auto_fetch_running)
|
||||
self.assertTrue(events._stop_requested)
|
||||
self.assertIn("PDD 登录失效", events._stop_status)
|
||||
events.shutdown()
|
||||
page.deleteLater()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user