mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-30 04:08:11 +00:00
feat: enhance train scheduling and contract management features
- Added StationWorkControls to manage loading/unloading phases in TrainScheduleV2DetailPage. - Implemented API endpoints for recording station work and managing wagon detach requests. - Updated contract templates to include Ethiopian customs handling options. - Enhanced shipment forms to collect customs clearing agent details for without-customs bookings. - Introduced NUMBER_OF_WAGONS as a unit of measure for bulk cargo, allowing customers to specify wagon counts. - Improved validation for customs clearing agent information in shipment forms. - Updated various components and services to accommodate new features and ensure data integrity.
This commit is contained in:
@@ -21,6 +21,19 @@ export const TRAIN_SCHEDULE_STATUSES = [
|
||||
|
||||
export type TrainScheduleStatus = (typeof TRAIN_SCHEDULE_STATUSES)[number];
|
||||
|
||||
/** One clicked loading or unloading window at a yard (ISO timestamps). */
|
||||
export interface StationWorkPhaseLog {
|
||||
startedAt?: string | null;
|
||||
endedAt?: string | null;
|
||||
startedByUserId?: string | null;
|
||||
endedByUserId?: string | null;
|
||||
}
|
||||
|
||||
export interface StationWorkLog {
|
||||
loading?: StationWorkPhaseLog;
|
||||
unloading?: StationWorkPhaseLog;
|
||||
}
|
||||
|
||||
@Entity({ schema: 'freight', name: 'train_schedules' })
|
||||
@Index(['scheduledDepartureDate'])
|
||||
@Index(['status'])
|
||||
@@ -157,6 +170,15 @@ export class TrainSchedule extends BaseEntity {
|
||||
@Column({ name: 'planned_wagon_real_cuts', type: 'jsonb', nullable: true })
|
||||
plannedWagonRealCuts?: string[] | null;
|
||||
|
||||
/**
|
||||
* Per-station loading/unloading time windows, clicked by yard operators:
|
||||
* `{ [yardId]: { loading?: {...}, unloading?: {...} } }`. Booking load/unload
|
||||
* is gated on the matching window having been STARTED at that yard; end is
|
||||
* informational (elapsed time reporting). ISO strings, editable after the fact.
|
||||
*/
|
||||
@Column({ name: 'station_work_logs', type: 'jsonb', nullable: true })
|
||||
stationWorkLogs?: Record<string, StationWorkLog> | null;
|
||||
|
||||
/** OPEN = accepting/holding bookings; FULL = train filled; CLOSED = manually closed. Orthogonal to `status`. */
|
||||
@Column({ name: 'booking_window_status', type: 'varchar', length: 10, default: 'OPEN' })
|
||||
bookingWindowStatus!: string;
|
||||
|
||||
Reference in New Issue
Block a user