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
+11 -1
View File
@@ -105,6 +105,7 @@ class PurchaseTaskService:
)
adapter: PddPurchaseAdapter | None = None
step = "purchase_prepare"
business_failure_message = ""
try:
target = self._target_from_task(started.task)
adapter = self._factory(self._device_address, self._cancelled)
@@ -189,6 +190,8 @@ class PurchaseTaskService:
step,
exc.diagnostics,
)
if exc.code == "PDD_GOODS_UNAVAILABLE":
business_failure_message = exc.message
except Exception as exc:
event = self._save_failure(
remote_task_id,
@@ -202,7 +205,12 @@ class PurchaseTaskService:
finally:
if adapter is not None:
adapter.close()
return self._submit(event)
outcome = self._submit(event)
if business_failure_message and outcome.kind == "failed":
return PurchaseTaskOutcome(
"business_failed", business_failure_message, remote_task_id
)
return outcome
def _submit_live_once(
self,
@@ -483,6 +491,8 @@ class PurchaseTaskService:
) -> OutboxEventRecord:
if code == "PURCHASE_CANCELLED":
status = TaskStatus.CANCELLED
elif code == "PDD_GOODS_UNAVAILABLE":
status = TaskStatus.FAILED
else:
# 采购没有手动“重新执行”入口。即使错误属于
# 技术上可重试,也先留给人工判断,避免隐式重复采购。