request_id: {raw.request_id}
}{meta?.label} batch {raw.date && · {raw.date}} {win.from && win.to && ( · {win.from} – {win.to} )}
Fetched at {fetchedAt} · Input deliveries: {raw.input_delivery_count ?? '—'}
{utilSafe != null ? `${utilSafe.toFixed(0)}%` : '—'}
Avg utilisation
{fleet.load_balance_stdev != null ? Number.parseFloat(fleet.load_balance_stdev).toFixed(2) : '—'}
Load balance σ
{fleet.load_balance_stdev != null ? Number.parseFloat(fleet.load_balance_stdev) > 1.0 ? 'Uneven workload' : 'Balanced' : 'Stdev of orders/rider'}
{fleet.finish_time_spread_minutes != null ? `${fleet.finish_time_spread_minutes} min` : '—'}
Finish spread
{fleet.finish_time_stdev_minutes != null ? `σ ${Number.parseFloat(fleet.finish_time_stdev_minutes).toFixed(1)} min` : 'First → last finish'}
{fleet.avg_active_minutes != null ? `${Number.parseFloat(fleet.avg_active_minutes).toFixed(0)} min` : '—'}
Avg active
Per rider, this batch
{resolveRiderName(riders, rec.idle_rider_id, rec.idle_rider_name)} {rec.primary_kitchen && ( <> {' '} · primary kitchen {rec.primary_kitchen} > )} {rec.second_kitchen && ( <> {' '} → also serve {rec.second_kitchen} after {rec.second_kitchen_dispatch_after || '—'} > )}
{rec.fleet_improvement_minutes != null && (Fleet improves by {rec.fleet_improvement_minutes} min if this substitution runs.
)} {rec.description &&{rec.description}
} {rec.fleet_balance_assessment &&{rec.fleet_balance_assessment}
}{severity === 'warning' ? 'Fleet imbalance detected — no feasible substitution' : severity === 'success' ? 'Fleet ran balanced — no reassignment needed' : 'No action recommended'}
{rec?.reason &&{rec.reason}
} {rec?.fleet_balance_assessment &&{rec.fleet_balance_assessment}
}{resolveRiderName(riders, idle.userid, idle.name)} covers{' '} {s.target_kitchen}
{s.travel_to_kitchen_km} km · {s.travel_to_kitchen_minutes} min travel · arrives {s.arrive_at_kitchen} ·{' '} {s.total_orders_transferred} orders transferred · +{s.extra_km_for_idle_rider} km for idle rider
{(relieved.name || relieved.userid != null) && (Most relieved: {resolveRiderName(riders, relieved.userid, relieved.name)} ( {relieved.original_finish} → {relieved.new_finish}, saves {relieved.time_saved_minutes} min)
)}