mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 14:08:11 +00:00
Every customer notice about a train said "your train" or nothing at all — the customer had no way to tell which departure a dispatch, pay window, cancellation or reschedule referred to. Only secured() named one, and it quoted the schedule reference (S-YYYY-NNNNN) rather than the train number that yards and customs actually use. Adds trainNumber()/trainTag() beside the existing scheduleLabel(), reusing the TrainSchedulesRepository already injected, and threads the number through dispatched, arrived, payNow, payDeadlineApproaching, payNowPartial, remainderPlaced, expired, displaced, rescheduled, allocatedOtherDay, removedFromTrain, scheduleCancelled and maintenanceMoved. scheduleLabel now prefers train_number over the schedule reference. Falls back to the reference while a number is unassigned, and to the previous wording when the schedule cannot be loaded — never a UUID. Several of these fire after the booking has been detached from its schedule (cancel, remove, expire all clear train_schedule_id before the notice goes out), so each method takes an optional trailing scheduleId and those callers pass the schedule the booking was just pulled off. Sync signatures are preserved with the void-async wrapper secured() already used, so no call site changes beyond the extra argument. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A481tjLb6zEkLnk4c4wtVR