feat(train-scheduling): auto-place intercity cargo on wagons freed mid-corridor

Intercity bookings ride the wagons freed by earlier unloads (e.g. import
containers uncoupled at Dire Dawa). loadBooking now auto-allocates a
DOMESTIC booking onto on-train slots whose cargo has all departed —
greedy in consist order by capacity, container numbers copied for the
marshalling tally. Falls back to unallocated load when nothing is free.
This commit is contained in:
Hagernesh
2026-08-02 23:07:32 +00:00
parent 035369af43
commit 6a62ece814
9 changed files with 593 additions and 20 deletions

View File

@@ -711,6 +711,20 @@ export class TrainSchedulingController {
return res.send(buffer);
}
@Get("schedules/:id/intercity/marshalling/document")
@TrainSchedulingView()
@ApiOperation({ summary: "Download current on-board intercity marshalling (Marshalling 2) PDF" })
async intercityMarshallingDocument(
@Param("id", ParseUUIDPipe) id: string,
@Res() res: Response,
) {
const { filename, buffer } = await this.trainSchedulingService.intercityMarshallingDocument(id);
res.setHeader("Content-Type", "application/pdf");
res.setHeader("Content-Disposition", `inline; filename="${filename}"`);
res.setHeader("Content-Length", buffer.length);
return res.send(buffer);
}
// ---- batch / booking-window staff actions ----
@Post("schedules/:id/run-batch")