- Eager-load dumpsiteReleases.dumpsite + dumpsiteReleases.releasedByDriver
in AdminTripController::show()
- Add releases[] array to TripResource via whenLoaded('dumpsiteReleases')
- Fields: weight_kg, released_at, dumpsite_name, driver_name,
gate_pass_number, dumpsite_attendant, notes
- Admin Trips detail panel now shows a 'Dumpsite Releases' section
below the timeline with per-release cards
- Load row updated to show release count e.g. '450 kg (2 releases)'
trips, trip_stops, trip_timeline_events. Admin: schedule/show/cancel.
Driver: start, arrive/depart/skip stops, report incident, arrive at
dumpsite, release load (creates dumpsite_release row + tallies trip
load), complete. Every action writes a typed timeline event with GPS.
Trip number auto-generated TRIP-YYYYMMDD-NNN. Promotes
dumpsite_releases.trip_id to a real FK now that trips exists.
148 feature tests passing.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>