fix: 识别失效商品链接返回首页 (#111)

This commit is contained in:
chengma
2026-08-10 18:20:34 +08:00
parent 3b659eba0a
commit 8c9dbfed44
15 changed files with 802 additions and 62 deletions
+23
View File
@@ -108,6 +108,17 @@ class RecordingLiveAdapter(RecordingDryRunAdapter, PddLivePurchaseAdapter):
)
class UnavailableGoodsAdapter(RecordingDryRunAdapter):
def open_goods(self, goods_url: str) -> None:
self.calls.append(("open_goods", goods_url))
raise PddPurchaseError(
"PDD_GOODS_UNAVAILABLE",
"商品链接已失效,PDD 无法打开商品详情页并返回了首页",
step="purchase_open_goods",
retryable=False,
)
class PurchaseTaskServiceTest(unittest.TestCase):
def setUp(self) -> None:
self.temp_dir = tempfile.TemporaryDirectory()
@@ -219,6 +230,18 @@ class PurchaseTaskServiceTest(unittest.TestCase):
self.assertEqual(detail.status, TaskStatus.MANUAL_REVIEW)
self.assertEqual(detail.last_error_code, "PURCHASE_PRICE_EXCEEDED")
def test_unavailable_goods_stops_before_specs_and_is_not_retryable(self):
self._prepare_task()
adapter = UnavailableGoodsAdapter()
outcome = self._service(adapter).execute_one_local()
self.assertEqual("business_failed", outcome.kind)
self.assertNotIn(("select_options", OPTIONS), adapter.calls)
detail = self.repository.get_task("PUR-001")
self.assertEqual(TaskStatus.FAILED, detail.status)
self.assertEqual("PDD_GOODS_UNAVAILABLE", detail.last_error_code)
def test_result_submit_timeout_does_not_run_adapter_twice(self):
self._prepare_task()
adapter = RecordingDryRunAdapter()