实现付款后订单监控:真实探测 order.my.rakuten.co.jp 配送阶段
用真实订单号 306087-20260813-0863947697 探测 order.my.rakuten.co.jp(订单列表/ 详情页),拿到真实 DOM 结构后实现 SiteInteractor.check_order_status: - 详情页 URL 可直接从 site_order_id 构造(shop_id 是订单号第一段) - 配送阶段用「进度条」组件的 4 个固定阶段(ショップ/出荷/配達店/配達完了), 当前阶段的 class 带 -active-- 中缀,映射到 OrderState.SHIPPED/DELIVERED - 查不到订单号、进度条解析不出新阶段都不算错误,交给轮询循环继续重试 runner.WorkerRunner 新增 _monitor_order 后台轮询:付款成功上报后以 asyncio.create_task 起后台任务(不阻塞主循环领下一单,因为 SiteInteractor 的 Playwright 操作全程持锁串行化),状态变化时用 terminal=False 追加 report; 新增 cancel_monitors() 在服务关闭时于 SiteInteractor.close() 之前收尾。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -111,6 +111,13 @@ class Settings(BaseSettings):
|
||||
# 自动下单时在支付方式页选择的选项文案(按可见文案匹配,非 value/id)。
|
||||
# 2026-08-11 未经真实确认页验证:见 site_interact.py::_select_payment_method。
|
||||
order_payment_method: str = "クレジットカード"
|
||||
# 付款后监控(订单列表页轮询):间隔与最大轮询次数。2026-08-13 用真实订单号
|
||||
# 实测过 order.my.rakuten.co.jp 的结构,见 site_interact.py::check_order_status。
|
||||
# 间隔不宜太短——同一账号频繁访问订单页有被风控盯上的风险;默认 3 小时一次,
|
||||
# 最多轮询 80 次(约 10 天,覆盖绝大多数国内配送时长),到期仍未到「配達完了」
|
||||
# 就停止(不是失败,只是不再继续追踪,详见 runner.py::_monitor_order)。
|
||||
order_monitor_poll_interval_seconds: int = 3 * 3600
|
||||
order_monitor_max_checks: int = 80
|
||||
|
||||
# ---- 自动重登(仅交易服务,需要 account.yaml)----
|
||||
# 检测到登录态失效时,是否在 require_logged_in 内自动触发重登。需要项目根
|
||||
|
||||
Reference in New Issue
Block a user