Giao diện
Booking container
Quản lý booking với hãng tàu — xác nhận slot, theo dõi trạng thái, gắn với lô hàng. Route: /bookings.
Tổng quan
Booking là xác nhận slot container với hãng tàu cho một lô hàng. Mỗi booking:
- Thuộc về một Lô hàng (Shipment)
- Chứa một hoặc nhiều Container
- Có cut-off date (hạn chót cắt máng)
- Theo dõi trạng thái từ PENDING đến COMPLETED
Vòng đời booking:
| Trạng thái | Mô tả |
|---|---|
| PENDING | Đã gửi yêu cầu, chờ hãng tàu xác nhận |
| CONFIRMED | Hãng tàu xác nhận — có số booking |
| AMENDED | Đã sửa đổi (thay đổi container, ngày tàu) |
| CANCELLED | Đã hủy booking |
| COMPLETED | Hàng đã lên tàu, booking hoàn tất |

Tạo booking
Cách tạo booking:
- Từ chi tiết Shipment → tab Container → nút + Tạo Booking
- Điền thông tin:
- Hãng tàu (carrier) — chọn từ partner list
- Số booking — do hãng tàu cấp (điền sau khi có xác nhận)
- Tàu / Voyage — tên tàu và chuyến
- ETD — ngày tàu rời cảng
- Cut-off date — hạn cắt máng (thường ETD - 1 ngày)
- Số container — số lượng và loại (20DC, 40HC, 40RF...)
- Upload Booking confirmation PDF từ hãng tàu
- Lưu → AI extract thông tin từ PDF tự động điền các trường còn thiếu
Upload booking confirmation trước
Upload file PDF xác nhận booking từ hãng tàu → AI tự điền số booking, tàu, ETD, cut-off — tiết kiệm nhập tay.

Chi tiết booking
Thông tin trong trang chi tiết booking:
| Trường | Mô tả |
|---|---|
| Số booking | Mã xác nhận từ hãng tàu |
| Hãng tàu | Carrier partner |
| Tàu / Voyage | Tên tàu và số chuyến |
| Cảng đi | Port of loading |
| Cảng đến | Port of discharge |
| ETD | Estimated time of departure |
| ETA | Estimated time of arrival |
| Cut-off | Hạn chót cắt máng |
| Container | Số lượng và loại |
Lịch sử thay đổi:
Mọi thay đổi booking (amend) được ghi audit log — người thay đổi, thời gian, trường thay đổi, giá trị cũ/mới.
Gắn container
Sau khi booking CONFIRMED, gắn số container thực tế vào booking:
- Từ chi tiết Booking → tab Container → + Thêm container
- Nhập số container (format: ABCD1234567)
- Chọn loại: 20DC / 40DC / 40HC / 40RF / 20OT...
- Upload EIR (Equipment Interchange Receipt) để AI extract số lệnh, tình trạng container
- Hệ thống validate format số container theo ISO 6346
Khi upload EIR
EIR chứa số lệnh (seal number) và tình trạng container tại gate-out. AI trích xuất và điền tự động vào Container record — không cần nhập tay.
Trạng thái chi tiết (18 state lifecycle)
Ngoài 5 trạng thái chính hiển thị trên UI, booking có 18 trạng thái nội bộ theo đầy đủ vòng đời logistics:
| Trạng thái | Mô tả |
|---|---|
| DRAFT | Booking mới tạo, chưa gửi hãng tàu |
| CONFIRMED | Hãng tàu xác nhận, có số booking |
| SI_SUBMITTED | Shipping Instruction đã nộp cho hãng tàu |
| SI_ACCEPTED | Hãng tàu chấp nhận SI |
| CONTAINERS_RELEASED | Hãng tàu release vỏ container |
| GATE_IN | Container vào cảng (cho xuất khẩu) |
| LOADED | Container lên tàu |
| ON_VESSEL | Tàu đang hành trình |
| ARRIVED | Tàu đến cảng đích |
| DISCHARGED | Container dỡ xuống cảng đích |
| AMENDMENT_REQUESTED | Đang yêu cầu sửa đổi |
| AMENDED | Sửa đổi được chấp nhận |
| ROLLED | Booking bị đổi tàu (roll) sang chuyến khác |
| CANCELLED | Đã hủy |
| COMPLETED | Hoàn tất |
Booking không có Shipment (orphan booking)
Trong một số workflow, bạn có thể tạo booking trước khi có lô hàng — ví dụ khi forwarder book slot tàu cho nhiều khách hàng cùng lúc:
- Vào
/bookings→ + Tạo Booking (không chọn Shipment) - Điền thông tin tàu, container, carrier
- Booking được tạo ở trạng thái
DRAFTvớishipmentId = null - Sau khi có lô hàng: từ chi tiết Shipment → Gắn Booking → chọn booking đã tạo
Booking direction validation
Khi gắn booking vào Shipment, hệ thống kiểm tra bookingType của booking phải khớp với type của Shipment (IMP/EXP/TRANSIT). Không thể gắn booking xuất vào lô hàng nhập.
Số booking — định dạng và unique
Mỗi booking có bookingNumber duy nhất trong workspace, tự sinh theo format:
BKG-{YEAR}-{SEQUENCE}
Ví dụ: BKG-2026-0042Số này khác với số booking hãng tàu (trường carrierBookingNo) — ví dụ COSU1234567890 từ COSCO. Cả 2 trường đều được lưu và có thể tìm kiếm.
Shipping Instruction (SI)
Sau khi booking CONFIRMED, cần nộp Shipping Instruction cho hãng tàu trước SI cutoff:
- Từ chi tiết Booking → Nộp SI
- Upload file SI hoặc điền online form
- AI trích xuất và điền thông tin từ file SI (nếu upload PDF)
- Xác nhận → booking chuyển sang
SI_SUBMITTED
SI cutoff là deadline cứng
Nộp SI trễ hơn SI cutoff → hãng tàu có thể từ chối. SLA Engine theo dõi deadline này và cảnh báo trước 24h.