"""恢复核对:lease_count > 1 时,worker 必须先查站点订单列表确认是否已下单 规格 §5:租约过期 → stale → reclaim 后 worker 领回的任务 lease_count 必然 > 1。 此时 worker 不能盲目重新提交(可能上次已经下单成功,只是回报断网),必须先查 站点订单列表比对。 订单列表反查的实现需要实测(规格 §10 第 3 条:订单列表页能否按商品 + 时间窗口 可靠地反查出「这单下没下」)。当前为桩:恒返回 `unknown`,让 runner 走 needs_human 分支。**绝不**默认按「没下单」处理——那是猜,可能变成重复下单。 """ from __future__ import annotations from dataclasses import dataclass from enum import StrEnum from app.trading.worker.models import LeaseTask class VerifyVerdict(StrEnum): """核对结论""" ALREADY_ORDERED = "already_ordered" # 确认已下单,补报状态即可 NOT_ORDERED = "not_ordered" # 确认未下单,可重新执行 UNKNOWN = "unknown" # 核对不出结论,交人工 @dataclass(slots=True) class VerifyResult: verdict: VerifyVerdict site_order_id: str | None = None detail: str = "" async def verify_on_site(task: LeaseTask) -> VerifyResult: """核对一笔任务是否已在站点上下过单 桩实现:永远返回 UNKNOWN。**绝不返回 NOT_ORDERED**——除非真实订单列表反查 能可靠证明这一点,否则视为「无法判断」交人工,宁可卡住等人看一眼。 实现方需要补的实测:用 intent 里的商品 + 时间窗口(created_at 到 stale 之间) 比对订单列表,能拿到 site_order_id 最好。 """ return VerifyResult( verdict=VerifyVerdict.UNKNOWN, detail="订单列表反查未实现:见 docs/order-gateway.md §10 第 3 条", )