Lập kế hoạch vận chuyển
Đây là tính năng cốt lõi của hệ thống — tự động phân đơn hàng vào các xe có sẵn, tối ưu tuyến đường để giảm chi phí vận tải.

Khi nào dùng
Sử dụng tính năng này khi:
- Bạn đã có danh sách đơn hàng đã duyệt trong ngày
- Cần phân đơn vào xe sao cho tối ưu (ít xe nhất, ít km nhất)
- Cần chốt kế hoạch để chuyển sang Dispatcher giao xe
Quy trình tổng thể
1. Chọn kho & ngày chạy
↓
2. Hệ thống lấy đơn chưa phân
↓
3. Tạo kế hoạch mới (chạy tối ưu CVRP)
↓
4. Kiểm tra tuyến trên bản đồ
↓
5. Gán tài xế cho từng xe
↓
6. Chốt kế hoạch → khóa, chuyển sang giao việc
Bước 1 — Chọn kho và ngày chạy
Ở đầu trang, chọn:
- Kho lập kế hoạch: là tổ chức con loại "kho", nơi xuất hàng
- Ngày chạy: ngày dự kiến giao hàng
Chỉ những kho thuộc phạm vi quyền của bạn mới xuất hiện. Nếu thiếu kho, liên hệ Admin để mở quyền.
Bước 2 — Xem đơn chưa phân
Cột bên phải hiển thị danh sách đơn hàng đã duyệt cho ngày đó nhưng chưa thuộc kế hoạch nào.
Mỗi đơn cho biết:
- Mã đơn + tên khách hàng
- Tổng khối lượng (kg), thể tích (m³)
- Khung giờ giao hàng (nếu có)
Bước 3 — Tạo kế hoạch mới
Bấm nút "+ Tạo kế hoạch mới" màu xanh để bắt đầu.
Hệ thống sẽ:
- Lấy toàn bộ đơn chưa phân của ngày
- Lấy danh sách xe sẵn sàng của kho
- Gọi HGS-CVRP (Hybrid Genetic Search — Vidal 2022) để giải bài toán định tuyến, kèm baseline LNS-SA và NN+2opt để so sánh
- Tạo các tuyến tối ưu (mỗi tuyến = 1 xe)
Quá trình mất khoảng 3-10 giây tuỳ số lượng đơn.
Kết quả tối ưu
Sau khi chạy xong, hệ thống hiển thị:
Mỗi tuyến hiển thị:
- Mã xe đảm nhiệm
- Số điểm dừng + tổng km
- Tải trọng sử dụng / max (vd: 1800/2000 kg = 90%)
- Thời gian dự kiến đi + về
Bước 4 — Xem bản đồ tuyến
Phần bản đồ ở giữa hiển thị toàn bộ tuyến đường với màu khác nhau:
- 🟢 Xanh lá = Tuyến đầu tiên
- 🔵 Xanh dương = Tuyến thứ hai
- 🟠 Cam = Tuyến thứ ba
- ... (mỗi tuyến 1 màu)
Bấm vào điểm dừng trên bản đồ để xem chi tiết đơn hàng tại đó.
Bấm nút "Phóng to" ở góc trên bản đồ để mở chế độ xem toàn màn hình — dễ kiểm tra tuyến phức tạp hơn.
Bước 5 — Gán tài xế
Trong mỗi card tuyến, bấm dropdown "Chọn tài xế" để gán người chạy.
Danh sách chỉ hiện những tài xế:
- Thuộc phạm vi quyền của bạn
- Trạng thái Active
- Chưa được gán chuyến nào trong ngày
Điều chỉnh thủ công
Bạn có thể:
- Kéo đơn từ tuyến này sang tuyến khác
- Xoá đơn khỏi tuyến (đơn quay lại danh sách "chưa ph ân")
- Đổi thứ tự điểm dừng trong tuyến
Bước 6 — Chốt kế hoạch
Khi đã ưng ý, bấm nút "Chốt lộ trình" màu đỏ ở cuối trang.
Điều gì xảy ra sau khi chốt?
- ✅ Kế hoạch chuyển sang trạng thái LOCKED — không sửa được nữa
- ✅ Mỗi tuyến tự động tạo Trip trong hệ thống
- ✅ Tài xế được gán nhận thông báo realtime trên app mobile
- ✅ Đơn hàng chuyển sang trạng thái "Đã lập kế hoạch"
- ✅ Dispatcher có thể bắt đầu theo dõi trên trang Giám sát
Sau khi chốt, để sửa kế hoạch bạn phải mở khóa (cần quyền Admin) — hành động này sẽ ghi vào Audit Log.
AI Agent — Lập kế hoạch bằng câu lệnh
Bạn có thể bỏ qua các bước trên bằng cách ra lệnh cho AI Agent:
Tham khảo agent-panel.png để biết giao diện AI Agent.
Ví dụ các lệnh:
- "Lập kế hoạch ngày mai"
- "Tối ưu lộ trình ngày 20/5"
- "Tạo kế hoạch hôm nay cho kho Đống Đa"
AI Agent sẽ tự mở trang, set ngày, chạy tối ưu thay bạn.
Câu hỏi thường gặp
Q: Tại sao có đơn không được phân? A: Có thể do (1) tải trọng tất cả xe đã đầy, (2) đơn nằm quá xa kho, (3) đơn thiếu toạ độ. Kiểm tra cảnh báo màu đỏ ở dưới mỗi đơn.
Q: Có thể chạy tối ưu nhiều lần không? A: Có. Mỗi lần bấm "Tạo kế hoạch mới" sẽ xoá kế hoạch cũ chưa chốt và chạy lại t ừ đầu.
Q: Tôi muốn ưu tiên giao đơn này trước? A: Sau khi tối ưu, bạn có thể kéo đơn lên đầu tuyến để giao sớm.
Q: Hệ thống tính chi phí thế nào?
A: Dựa vào cấu hình của xe trong Master Data: FixedCost (cố định/ngày) + CostPerKm × km. Tổng các tuyến cho ra chi phí kế hoạch.
Tiếp theo
- Giám sát hành trình thực tế — Theo dõi xe sau khi chốt
- Xử lý sự cố — Khi xe gặp vấn đề trên đường