- Rename 1790000000000/1 (collided with CreateWarehouseModule / WarehouseBatch2)
to 1791000000000/1 so they sort after the existing warehouse migrations
- Make Batch 5 migration idempotent (createTable ifNotExists + ADD COLUMN IF NOT EXISTS)
so it is safe whether or not it already ran
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Refactor CheckPaymentPage and PaymentFailurePage to use Mantine UI components with modern card-based layouts
- Add gradient headers, themed icons, and improved visual hierarchy for payment status states
- Implement PaymentCard wrapper component for consistent styling across payment pages
- Update route direction logic to trim country values and simplify Djibouti import/export detection
- Replace shadcn/ui components with M
- Added `unplaced` method in `BookingNotifierService` to log warnings for bookings that cannot be placed on any train.
- Introduced `getAvailableDays` method in `TrainSchedulingService` to retrieve distinct days with open departures for a given route.
- Created `AvailableDaysQueryDto` for querying available days based on origin and destination yards.
- Updated `TrainSchedulingController` to expose an endpoint for available days.
- Modified frontend components to support day-level booking, allowing customers to select only a day without pinning to a specific train.
- Removed references to train schedules in booking forms and review steps, emphasizing day selection.
- Added a database migration to create an index for efficient querying of bookings by route and day.
- Implemented tracking functionality for bookings, allowing users to track their shipments in real-time.
- Added new API endpoints for fetching tracking data.
- Created a ShipmentTrackingModal component to display tracking information, including current status, checkpoints, and estimated arrival times.
- Enhanced the booking detail view to include tracking options for eligible bookings.
- Updated the train scheduling service to include scheduled departure and arrival times in the response.
- Introduced utility functions for managing tracking stages and statuses.
- Introduced `DemoFreightDataSeeder` to seed demo freight data including wagons, approval rules, and staff users.
- Added `seed:freight-demo` script to `package.json` for easy execution.
- Updated permissions for operations officer and added permission checks in various components.
- Enhanced sidebar and booking actions to respect user permissions.