Hệ thống điều vận đội xe tải
Nền tảng web quản lý và điều vận cho một nhà xe tải, thay thế quy trình vận hành thủ công qua chat và bảng tính bằng theo dõi vị trí thời gian thực, bóc tách đơn hàng bằng AI, và gợi ý xe theo thuật toán chấm điểm cho 4 vai trò người dùng.
- Năm
- 2026
- Timeline
- Khoảng 3 tuần
- Tech stack
- 14 công nghệ
Xem qua sản phẩm
Desktop Preview

Mobile Mockup

Phạm vi & vai trò của mình
Fullstack Developer (Solo / End-to-End)
Phạm vi sản phẩm
Toàn bộ backend API (Fastify + TypeScript) phục vụ nghiệp vụ điều vận.
Lược đồ CSDL quan hệ tự thiết kế, quản lý bằng migration có phiên bản.
Viết script di chuyển và chuẩn hóa dữ liệu đơn hàng, chi phí cũ từ bảng tính sang CSDL mới.
Giao diện React cho 4 vai trò: quản trị, điều phối, tài xế, khách hàng.
Theo dõi vị trí đội xe gần thời gian thực trên bản đồ.
Bóc tách đơn hàng bằng AI từ tin nhắn đặt xe.
Xuất báo cáo định kỳ, tính lương, duyệt chi phí theo chuyến.
Đường ống CI/CD tự động triển khai hai môi trường (thử nghiệm và chính thức).
Luồng chính
Điều phối hoặc khách tạo đơn → hệ thống chấm điểm gợi ý xe → gán chuyến hoặc ghép chung chuyến nhiều đơn → tài xế cập nhật từng chặng trên điện thoại → điều phối duyệt chi phí → vào bảng lương.
Tin nhắn đặt xe dán từ ứng dụng chat → AI bóc tách thành đơn nháp → người dùng xác nhận/sửa → vào luồng xử lý chính ở trên.
Tài xế chụp ảnh giao nhận tại điểm → hệ thống tự đóng dấu vị trí và thời gian → ảnh gắn đúng vào dòng đơn tương ứng trong chuyến ghép, không gắn nhầm sang đơn khác cùng chuyến.
Công nghệ
- Node.js
- TypeScript
- Fastify
- PostgreSQL
- Drizzle ORM
- React
- Vite
- Tailwind CSS
- TanStack Query
- Zod
- Leaflet
- Groq
- GitHub Actions
- Vitest
Cách mình giải quyết
Bài toán cần giải quyết
Vận hành trước đó dựa hoàn toàn vào nhắn tin và một bảng tính cập nhật tay, không có nơi tập trung để theo dõi đơn hàng, vị trí xe hay chi phí từng chuyến — một phần dữ liệu chi phí không được ghi nhận đầy đủ nên khó biết lợi nhuận thực tế theo từng chuyến.
Quyết định kỹ thuật
Chấm điểm gợi ý xe viết thành hàm thuần, tách khỏi CSDL — ưu tiên dễ kiểm thử, dễ chỉnh trọng số, và dễ giải thích với người dùng vì sao xe A được xếp trên xe B.
AI là nguồn chính khi bóc tách tin nhắn, luật cứng lùi thành lưới dự phòng — vì luật chỉ khớp đúng một số mẫu tin cố định, trong khi tin thực tế biến thiên nhiều và có thể sai âm thầm.
Đóng dấu ảnh ở máy chủ thay vì trình duyệt, vì ảnh là bằng chứng giao nhận cần chống sửa toạ độ/giờ qua công cụ phát triển.
Tự thiết kế lại toàn bộ lược đồ CSDL thay vì dùng thẳng SQL khách cung cấp, để siết ràng buộc ở tầng dữ liệu và giữ khả năng mở rộng.
Bài toán phức tạp
Một xe có thể chở nhiều đơn cùng lúc theo thứ tự ghé khác nhau — mô hình dữ liệu phải tách qua bảng nối riêng thay vì đơn trỏ thẳng vào chuyến, mỗi đơn trên chuyến có trạng thái và mốc thời gian giao riêng.
Dữ liệu từ dịch vụ định vị GPS bên thứ ba có nhiều điểm lệch so với tài liệu nhà cung cấp (định dạng không khớp giữa các nguồn, lệch múi giờ, lỗi xác thực không trả mã lỗi rõ ràng) — phải tự đo bằng lời gọi thật và xử lý từng trường hợp thay vì tin tài liệu.
Thuật toán gợi ý xe phải cân bằng nhiều tiêu chí cùng lúc (khoảng cách, hướng đi, sức chứa còn lại, giờ hẹn) mà vẫn đủ nhanh để dùng được ở luồng điều phối thời gian thực.
Kết quả đạt được
Xây một nền tảng web (PWA) Node.js/TypeScript + PostgreSQL với 4 vai trò riêng biệt (quản trị, điều phối, tài xế, khách hàng). Đơn hàng có thể nhập tay, do khách tự đặt, hoặc bóc tách tự động từ tin nhắn đặt xe viết tay bằng AI. Xe được gợi ý theo thuật toán chấm điểm nhiều tiêu chí thay vì chỉ lọc xe rảnh, vị trí đội xe đồng bộ gần thời gian thực từ một dịch vụ định vị GPS bên thứ ba, và mọi chuyển trạng thái đơn/chuyến đều đi qua một tầng nghiệp vụ tập trung để đảm bảo đúng luật nghiệp vụ thay vì client tự ý cập nhật. Lược đồ CSDL được tự thiết kế lại từ đầu, ràng buộc chặt ở tầng dữ liệu, quản lý qua migration có phiên bản. Triển khai production có HTTPS, dựng CI/CD tự động cho hai môi trường tách biệt.
Luồng nghiệp vụ chính (tạo đơn → gợi ý xe → gán chuyến/ghép chuyến → tài xế cập nhật → duyệt chi phí → vào lương) đã chạy đầu-cuối trên dữ liệu thật.
Toàn bộ dữ liệu đơn hàng và chi phí cũ được chuẩn hóa và chuyển sang hệ thống mới, không còn phụ thuộc bảng tính thủ công.
Điểm nổi bật
Thuật toán gợi ý xe chấm điểm sáu tiêu chí (khoảng cách rỗng, lộ trình, giờ hẹn, độ lấp đầy, sức chứa còn lại, khung giờ giao) viết thành hàm thuần tách khỏi CSDL — dễ viết test và điều chỉnh trọng số, và cố ý không loại xe đang chạy khỏi danh sách gợi ý, chỉ dựa vào sức chứa còn trống.
Bóc tách đơn hàng bằng AI từ tin nhắn viết tay, với lớp validate riêng cho từng trường và không cho phép mô hình tự suy đoán số tiền khi tin không ghi rõ; luật cứng bằng biểu thức cố định làm lưới dự phòng khi thiếu khoá hoặc AI gọi lỗi.
Máy trạng thái tập trung cho ba lớp thực thể (đơn hàng, chuyến chạy, dòng ghép trong chuyến) — mọi chuyển trạng thái đi qua một tầng nghiệp vụ duy nhất, chặn cập nhật thẳng từ phía client.
Ảnh giao nhận được đóng dấu vị trí/thời gian và resize/nén ở phía máy chủ (không phải trình duyệt) để không thể bị chỉnh sửa qua công cụ dev, kèm suy địa chỉ chữ từ toạ độ có xếp hàng và cache để tôn trọng giới hạn của dịch vụ bản đồ miễn phí.
Kết nối với mình
Cảm ơn bạn đã ghé thăm góc nhỏ của mình. Rất mong chúng ta sẽ có dịp trò chuyện và hợp tác!
Mình luôn cởi mở với những cuộc trò chuyện về phát triển sản phẩm, ứng dụng AI hay các ý tưởng khởi nghiệp. Cứ thoải mái ném thẳng một tin nhắn cho mình nhé!
Nhận hợp tác chọn lọc · trả lời trong ngày
- GitHubgithub.com/Finnng1104
- LinkedInlinkedin.com/in/finnng1104
- ResumeResume (PDF)