Class: SpeedeeTrackingWorker
- Inherits:
-
Object
- Object
- SpeedeeTrackingWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/speedee_tracking_worker.rb
Overview
Hourly poll of Spee-Dee (Dispatch Science) order status for every recent
Spee-Dee delivery that has a DS orderId and hasn't fully delivered yet. Each
poll projects pickedUpDate/deliveredDate into ShipmentEvent rows keyed by
each shipment's carrier barcode — the SAME table parcel/LTL tracking write —
so the existing status icon and Tracking Events tab render with no new UI.
Scheduled in config/sidekiq_production_schedule.yml (+ staging), mirroring
ShipengineLtlTrackingWorker.
Order status, not per-item scans: Spee-Dee's drivers don't item-scan through
Dispatch Science, so trackeditemslog is permanently empty (verified against
three delivered production orders, 2026-08-03) — see Shipping::SpeedeeTracker.
Instance Method Summary collapse
-
#perform ⇒ Object
Runs the job.
Instance Method Details
#perform ⇒ Object
Runs the job.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/workers/speedee_tracking_worker.rb', line 22 def perform polled = 0 inserted = 0 Shipping::SpeedeeTracker.candidates.find_each do |delivery| tracker = Shipping::SpeedeeTracker.new(delivery) next unless tracker.pollable? polled += 1 inserted += tracker.poll! rescue StandardError => e Rails.logger.error("[SpeedeeTrackingWorker] delivery=#{delivery.id} error: #{e.class}: #{e.}") ErrorReporting.warning('SpeedeeTrackingWorker per-delivery failure', error: e., delivery_id: delivery.id) end Rails.logger.info("[SpeedeeTrackingWorker] polled=#{polled} new_events=#{inserted}") end |