"""站点交互:加购 / 校验购物车 / 进入下单确认页 / 金额守卫 / 提交 / 付款 / 监控 **全部未实现**。规格 docs/order-gateway.md §10 明确说明:加购 → 下单 → 付款的 实际站点交互没有实测过,未实测前调用直接抛「未实现」,不要写猜测的提交逻辑。 签名刻意保留:runner 把这一层当接口缝用,等真实账号 + 真实站点把每个动作 实现填进来后,主循环逻辑不需要改动。 实现方需要补齐的实测点(规格 §10): 1. 自动付款是否触发 3D Secure / 短信验证。触发则这条路走不通,付款环节改为 「下单到 awaiting_payment + 上报 needs_human 交人工」。 2. 下单确认页的实际应付金额、付款方式、付款期限、站点订单号各自在哪个字段。 3. 订单列表页能否按商品 + 时间窗口可靠地反查「这单下没下」。 4. ラクマ 侧尚无加购契约(README 已注明未实现)。 """ from __future__ import annotations from dataclasses import dataclass from app.trading.worker.models import LeaseTask _NOT_IMPLEMENTED_MSG = ( "站点交互未实现:见 docs/order-gateway.md §10。" "未实测前不写猜测的提交逻辑——需要真实账号 + 真实站点把这一步实现填进来。" ) @dataclass(slots=True) class CheckoutSummary: """下单确认页解析结果(待实测确认字段位置) payable_yen 用于金额守卫;其他字段在实测确认后补全。 """ payable_yen: int site_order_id: str | None = None pay_deadline: str | None = None async def add_to_cart(task: LeaseTask) -> None: """加购。需要 auth_session 的登录 cookie + intent 里的 purchase 标识""" raise NotImplementedError(_NOT_IMPLEMENTED_MSG) async def verify_cart(task: LeaseTask) -> None: """校验购物车:加购后购物车里有没有这件商品""" raise NotImplementedError(_NOT_IMPLEMENTED_MSG) async def enter_checkout(task: LeaseTask) -> str: """进入下单确认页,返回页面 HTML(供解析金额守卫所需字段)""" raise NotImplementedError(_NOT_IMPLEMENTED_MSG) async def parse_checkout(html: str) -> CheckoutSummary: """从下单确认页解析实际应付金额、付款期限、站点订单号""" raise NotImplementedError(_NOT_IMPLEMENTED_MSG) async def submit_order(task: LeaseTask) -> str: """提交下单。返回站点订单号(site_order_id)""" raise NotImplementedError(_NOT_IMPLEMENTED_MSG) async def pay(task: LeaseTask, site_order_id: str) -> None: """付款。检测到 3DS / 短信验证等人工环节时抛 OrderGuardError""" raise NotImplementedError(_NOT_IMPLEMENTED_MSG) async def monitor(task: LeaseTask, site_order_id: str) -> None: """付款后监控:常驻轮询订单状态与付款期限,状态变化时继续 report""" raise NotImplementedError(_NOT_IMPLEMENTED_MSG)