fix: 识别失效商品链接返回首页 (#111)
This commit is contained in:
@@ -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:
|
||||
# 采购没有手动“重新执行”入口。即使错误属于
|
||||
# 技术上可重试,也先留给人工判断,避免隐式重复采购。
|
||||
|
||||
Reference in New Issue
Block a user