Appearance
Vận chuyển trên Mobile
Hướng dẫn sử dụng chức năng vận chuyển hàng hóa trên ứng dụng di động — dành cho Tài xế (DRIVER), Quản kho (WAREHOUSE_MANAGER) và Đại lý (DEALER).
Quy trình xác nhận 3 bên (Three-Party Handshake)
Đây là tính năng cốt lõi của hệ thống TrustID — đảm bảo mỗi lô hàng được 3 bên xác nhận tại mỗi bước, tạo chuỗi bằng chứng không thể chối cãi.
Sơ đồ luồng xác nhận
┌──────────────────────────────────────────────────────────────────────┐
│ QUY TRÌNH VẬN CHUYỂN 3 BÊN │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ BÊN 1: QUẢN KHO BÊN 2: TÀI XẾ BÊN 3: ĐẠI LÝ │
│ (Sender) (Driver) (Receiver) │
│ │
│ ① Tạo phiếu xuất kho │
│ + chọn tài xế ───────► ② Nhận hàng │
│ WAITING_DRIVER + xác nhận GPS │
│ IN_TRANSIT ──────────► │
│ ③ Giao hàng │
│ + xác nhận GPS │
│ PENDING_DEALER ──────► ④ Nhận hàng │
│ + xác nhận │
│ DELIVERED │
│ │
│ ✅ Mỗi bước đều ghi: GPS + Thời gian + Người xác nhận │
└──────────────────────────────────────────────────────────────────────┘Các trạng thái phiếu vận chuyển
| Trạng thái | Ý nghĩa | Ai thao tác tiếp? |
|---|---|---|
🟡 WAITING_DRIVER | Quản kho đã tạo phiếu, chờ tài xế nhận | Tài xế |
🔵 IN_TRANSIT | Tài xế đã nhận hàng, đang vận chuyển | Tài xế |
🟠 PENDING_DEALER_CONFIRM | Tài xế đã giao, chờ đại lý xác nhận | Đại lý |
🟢 DELIVERED | Đại lý đã xác nhận nhận hàng → Hoàn thành | — |
⚫ READY_FOR_PICKUP | Sẵn sàng cho tài xế ngoài nhận | Tài xế ngoài |
1. Bên 1 — Quản kho tạo phiếu (SENDER_HANDOVER)
Quản kho tạo lệnh xuất kho trên Web hoặc Mobile:
- Vào Lệnh xuất kho → Nhấn "+ Tạo mới"
- Chọn kho xuất, sản phẩm, số lượng
- Chọn Tài xế và Đại lý nhận hàng
- Nhấn "Xuất kho"
Hệ thống tự động:
- ✅ Trừ tồn kho tại kho xuất
- ✅ Tạo phiếu vận chuyển với trạng thái
WAITING_DRIVER - ✅ Ghi log:
SENDER_HANDOVER(GPS + thời gian + người tạo)
2. Bên 2 — Tài xế nhận và giao hàng (DRIVER)
Dashboard Tài xế
Khi đăng nhập với vai trò DRIVER, ứng dụng hiển thị:
Thanh thống kê nhanh:
| Chỉ số | Mô tả |
|---|---|
| 🟡 Chờ nhận | Số phiếu đang chờ tài xế nhận hàng |
| 🔵 Đang giao | Số phiếu đang trên đường |
| 🟢 Đã giao | Số phiếu đã hoàn thành |
3 Tab chuyển đổi:
Tab "Chờ nhận"
Danh sách phiếu ở trạng thái WAITING_DRIVER:
Mỗi thẻ phiếu hiển thị:
| Thông tin | Chi tiết |
|---|---|
| Mã tracking | Mã phiếu (in xanh đậm) |
| Biển số xe | 🚛 Xe được chỉ định |
| Đại lý | 🏪 Tên đại lý nhận hàng |
| Kho xuất | 🏢 Kho xuất phát |
| Số sản phẩm | 📦 Số loại hàng cần giao |
| Nút "Gọi" | 📞 Gọi trực tiếp cho đại lý |
| Nút "Nhận hàng" | ✅ Xác nhận nhận hàng từ kho |
Bước 2a: Xác nhận Nhận hàng (DRIVER_RECEIVE)
- Đến kho → Nhấn nút "Nhận hàng" trên thẻ phiếu
- Popup xác nhận hiện ra:
- Hiển thị mã phiếu
- Thông báo: "Hệ thống sẽ lấy vị trí GPS"
- Nhấn "Xác nhận"
Hệ thống tự động:
- ✅ Ghi tọa độ GPS của tài xế tại thời điểm nhận
- ✅ Chuyển trạng thái →
IN_TRANSIT - ✅ Ghi log:
DRIVER_RECEIVE(GPS + thời gian + tài xế) - ✅ Phiếu chuyển sang tab "Đang giao"
⚠️ Bảo mật: Hệ thống kiểm tra xem tài xế đang thao tác có đúng là tài xế được chỉ định cho phiếu này không. Nếu không → từ chối.
Tab "Đang giao"
Danh sách phiếu trạng thái IN_TRANSIT — đang trên đường đến đại lý.
Bước 2b: Xác nhận Đã giao (DRIVER_DELIVER)
- Đến đại lý → Nhấn nút "Đã giao" trên thẻ phiếu
- Popup xác nhận:
- "Đã giao hàng phiếu [MÃ] cho [TÊN ĐẠI LÝ]?"
- Nhấn "Đã giao"
Hệ thống tự động:
- ✅ Ghi tọa độ GPS tại điểm giao
- ✅ Chuyển trạng thái →
PENDING_DEALER_CONFIRM - ✅ Ghi log:
DRIVER_DELIVER(GPS + thời gian + tài xế)
💡 Lưu ý: Phiếu chưa hoàn thành! Phải đợi Đại lý xác nhận (Bên 3) mới chuyển sang
DELIVERED.
Tab "Đã giao"
Hiển thị phiếu DELIVERED — đã hoàn thành đầy đủ 3 bên xác nhận.
Xem chi tiết phiếu
Nhấn vào bất kỳ thẻ phiếu nào → Bottom sheet mở ra:
| Thông tin | Mô tả |
|---|---|
| Mã tracking | Mã phiếu đầy đủ |
| Trạng thái | Badge màu theo trạng thái |
| Biển số xe | Xe vận chuyển |
| Kho xuất | Nơi xuất phát |
| Đại lý | Nơi nhận hàng |
| Bắt đầu | Thời gian bắt đầu vận chuyển |
| Hoàn thành | Thời gian hoàn thành (nếu có) |
| Hàng hóa | Danh sách sản phẩm + số lượng |
3. Bên 3 — Đại lý xác nhận nhận hàng (DEALER_CONFIRM)
Khi tài xế giao hàng và nhấn "Đã giao", phiếu chuyển sang PENDING_DEALER_CONFIRM.
Đại lý xác nhận trên Mobile
- Đăng nhập vai trò DEALER trên ứng dụng
- Mở tab "Chờ nhận hàng"
- Phiếu hiển thị ở trạng thái "Chờ xác nhận"
- Kiểm tra hàng hóa thực tế → Nhấn "Xác nhận nhận hàng"
Hệ thống tự động:
- ✅ Ghi tọa độ GPS đại lý
- ✅ Chuyển trạng thái →
DELIVERED(Hoàn thành!) - ✅ Nhập kho tự động tại kho đích (nếu có)
- ✅ Ghi log:
DEALER_CONFIRM(GPS + thời gian + đại lý)
4. Bằng chứng xác nhận (Handshake Log)
Mỗi bước xác nhận trong luồng 3 bên đều tạo một bản ghi không thể sửa:
| Bản ghi | Nội dung |
|---|---|
| Người thực hiện | ID người xác nhận |
| Hành động | SENDER_HANDOVER / DRIVER_RECEIVE / DRIVER_DELIVER / DEALER_CONFIRM |
| Tọa độ GPS | Vĩ độ, Kinh độ tại thời điểm xác nhận |
| Thời gian | Timestamp chính xác |
| Ảnh bằng chứng | Ảnh chụp (nếu có) |
| Chữ ký | URL chữ ký điện tử (nếu có) |
🔐 Tại sao quan trọng? Chuỗi xác nhận 3 bên đảm bảo:
- Không ai có thể phủ nhận đã giao/nhận hàng
- GPS chứng minh vị trí thực tế tại mỗi bước
- Dữ liệu phục vụ truy xuất nguồn gốc và tuân thủ EUDR
- Kho tự động cập nhật (xuất kho → nhập kho) khi đủ 3 xác nhận
5. Tính năng hỗ trợ tài xế
| Tính năng | Mô tả |
|---|---|
| 📞 Gọi đại lý | Nhấn nút "Gọi" → Gọi trực tiếp SĐT đại lý |
| 🔄 Làm mới | Nút refresh trên AppBar để tải lại danh sách |
| 📱 Pull to refresh | Kéo xuống để làm mới (gesture) |
| 🚪 Đăng xuất | Nút logout trên AppBar |
6. Xử lý ngoại lệ
| Tình huống | Xử lý |
|---|---|
| GPS chưa bật | App yêu cầu bật GPS trước khi xác nhận |
| Quyền GPS bị từ chối | Hiển thị lỗi, yêu cầu mở Cài đặt |
| Không phải tài xế được chỉ định | Hệ thống từ chối: "Bạn không phải tài xế được chỉ định" |
| Phiếu sai trạng thái | Hệ thống từ chối: "Phiếu không ở trạng thái phù hợp" |
| Mất mạng | Hiển thị lỗi, cho phép thử lại |
