# Giới thiệu dự án Web Thuê Xe
## 1. Tổng quan
Dự án `Web_Thue_Xe` là một nền tảng cho thuê xe toàn diện, bao gồm cả backend API và frontend quản lý. Ứng dụng hỗ trợ thuê xe tự lái, thuê xe có tài xế, đặt chuyến đi theo tuyến và thanh toán QR nội bộ.
- Backend: Node.js + Express + MongoDB
- Frontend: Vue 3 + Vite + TailwindCSS
- Thanh toán QR: QR code cho chuyển khoản, MOMO, Zalo Pay, VNPay
- Hợp đồng tự động: tạo hợp đồng dạng văn bản cho từng loại booking
## 2. Mục tiêu chính
- Giúp người dùng dễ dàng tìm và đặt xe thuê.
- Quản lý booking, tài xế, hợp đồng và thanh toán.
- Cho phép chủ xe/đại lý theo dõi lịch trình, doanh thu và trạng thái xe.
- Tích hợp phương thức thanh toán QR hiện đại và bảo mật.
## 3. Các chức năng chính
### 3.1 Quản lý người dùng
- Đăng ký/đăng nhập người dùng với xác thực JWT.
- Quản lý hồ sơ người dùng, ảnh đại diện và thông tin liên hệ.
- Đăng ký trở thành chủ xe, cộng tác viên hoặc tài xế.
- Quản lý trạng thái tài khoản và xác minh người dùng.
### 3.2 Quản lý xe
- Thêm, sửa, xóa và duyệt xe cho thuê.
- Quản lý trang thái xe: hoạt động, bảo trì, không khả dụng.
- Kiểm tra lịch trình và tình trạng sẵn có của xe.
- Lưu trữ hình ảnh xe, giấy tờ và thông tin kỹ thuật.
### 3.3 Quản lý booking
- Tạo booking cho thuê xe tự lái và thuê xe có tài xế.
- Kiểm tra tính khả dụng xe và điều kiện ngày/giờ.
- Xem danh sách booking của người thuê và chủ xe.
- Hủy booking, xác nhận booking và theo dõi trạng thái.
- Tính phí giao nhận và các khoản chi phí phát sinh.
### 3.4 Thanh toán và QR Code
- Hỗ trợ các phương thức thanh toán:
- Chuyển khoản ngân hàng
- MOMO
- Zalo Pay
- VNPay
- Tiền mặt
- Tạo QR code thanh toán tự động theo booking.
- Lưu trữ thông tin giao dịch và trạng thái thanh toán.
- Xác nhận thanh toán và cập nhật trạng thái booking.
### 3.5 Hợp đồng và giấy tờ
- Tạo hợp đồng tự động theo từng loại booking:
- Self-drive (tự lái)
- With-driver (có tài xế)
- Trip driver (chuyến đi)
- Lưu hợp đồng dưới dạng file văn bản trong thư mục `uploads/contracts`.
- Quản lý hồ sơ hợp đồng và ký duyệt.
### 3.6 Quản lý tài xế và lịch trình
- Quản lý thông tin tài xế và trạng thái trực tuyến.
- Quản lý lịch trình tài xế: ca làm việc, lịch trình online/offline.
- Theo dõi chuyến đi của tài xế và cập nhật trạng thái hoàn thành.
- Xem thu nhập và báo cáo công việc của tài xế.
### 3.7 Đánh giá và thông báo
- Người dùng có thể đánh giá và bình luận về xe và dịch vụ.
- Quản lý phản hồi, báo cáo đánh giá và trả lời.
- Hệ thống thông báo nội bộ gửi trạng thái booking, thanh toán, duyệt xe.
### 3.8 Bảng điều khiển admin
- Thống kê tổng quan: số người dùng, số booking, doanh thu, xe.
- Quản lý người dùng, xe, booking và hợp tác viên.
- Kiểm duyệt và phê duyệt listing, tài xế, cộng tác viên.
- Xem báo cáo và phân tích hoạt động.
## 4. Dành cho người dùng
- Tìm kiếm và lọc xe theo loại, khu vực, giá, chất lượng, số chỗ.
- Xem chi tiết xe, hình ảnh, giấy tờ, mô tả, review và thông tin chủ xe.
- Đặt xe tự lái, thuê xe có tài xế hoặc đặt chuyến đi theo lịch trình.
- Chọn điểm nhận/tra xe, thời gian thuê, dịch vụ cộng thêm và phí giao nhận.
- Thanh toán linh hoạt bằng QR code, chuyển khoản, MOMO, ZaloPay, VNPay hoặc tiền mặt.
- Nhận mã giao dịch, mã QR và xác nhận thanh toán ngay trong hệ thống.
- Xem lịch sử booking, trạng thái booking, chi tiết hợp đồng và biên lai thanh toán.
- Đánh giá xe, tài xế và trải nghiệm sau mỗi chuyến đi.
- Quản lý hồ sơ, cập nhật thông tin cá nhân và hồ sơ xác minh.
## 5. Dành cho tài xế
- Đăng ký và cập nhật hồ sơ tài xế với thông tin cá nhân, giấy tờ và ảnh thẻ.
- Kích hoạt/ẩn trạng thái online để nhận chuyến và quản lý ca làm việc.
- Xem bảng điều khiển tài xế với các chuyến sắp tới, lịch trình và nhiệm vụ.
- Nhận booking, bắt đầu chuyến đi, hoàn thành chuyến và cập nhật trạng thái trong thời gian thực.
- Xem chi tiết địa điểm đón/trả khách, thời gian, yêu cầu dịch vụ và thông tin liên lạc của khách.
- Theo dõi thu nhập, lịch sử chuyến đi và báo cáo doanh thu cá nhân.
- Nhận thông báo khi có booking mới, khi booking được xác nhận hoặc khi thanh toán hoàn tất.
## 6. Dành cho admin
- Xem dashboard tổng quan với thống kê người dùng, booking, xe, doanh thu và hoạt động hệ thống.
- Quản lý người dùng: xem danh sách, thay đổi trạng thái, xác minh tài khoản, khoá/mở khóa.
- Quản lý xe: duyệt xe mới, phê duyệt hình ảnh/giấy tờ, đổi trạng thái hoạt động/bảo trì.
- Quản lý booking: theo dõi booking, xác nhận hoặc huỷ booking, phân công tài xế và xử lý khiếu nại.
- Quản lý cộng tác viên: duyệt hồ sơ cộng tác viên, theo dõi thu nhập và chiết khấu.
- Quản lý tài xế: duyệt hồ sơ tài xế, kiểm soát tài liệu, theo dõi hoạt động và hiệu suất.
- Kiểm soát thanh toán: xem giao dịch, trạng thái QR, xác nhận thanh toán và xử lý sai sót.
- Thiết lập cài đặt hệ thống, cấu hình trip và quy tắc phê duyệt.
## 7. Kiến trúc kỹ thuật
- `backend/`: server API, routes, models, middleware, helper QR code, hợp đồng.
- `frontend/`: giao diện Vue 3, router, store Pinia, component UI và trang quản lý.
- `uploads/`: lưu contract, file giấy tờ, ảnh người dùng.
- `tmp/`: tập tin hỗ trợ chạy script, migration.
## 5. Các module chính
- `backend/routes/auth.js`: đăng ký, đăng nhập, profile, quản lý tài khoản.
- `backend/routes/cars.js`: quản lý xe, availability, document, operational status.
- `backend/routes/bookings.js`: flow booking, kiểm tra xe, confirm/cancel, tính phí giao nhận.
- `backend/routes/payments.js`: tạo QR code, gửi thông tin thanh toán, confirm, webhook.
- `backend/routes/contracts.js`: tạo, lấy, xoá hợp đồng theo booking.
- `backend/routes/driver.js`: dashboard tài xế, lịch trình, chuyến đi, thu nhập.
- `backend/routes/admin.js`: admin analytics, quản lý users/cars/bookings/drivers/collaborators.
- `backend/routes/reviews.js`: review, rating, báo cáo, phản hồi.
- `backend/routes/addresses.js`: quản lý địa chỉ người dùng.
- `backend/routes/tripSettings.js`: cấu hình trip và cài đặt chung.
## 6. Công nghệ sử dụng
- Node.js + Express
- MongoDB + Mongoose
- Vue 3 + Vite + TailwindCSS
- Pinia
- Axios
- JWT
- Multer, QRCode, Express Validator, Helmet, CORS
## 7. Ưu điểm của dự án
- Hệ thống cho thuê xe tích hợp đầy đủ từ đặt xe đến thanh toán.
- Tự động tạo hợp đồng và quản lý giấy tờ.
- Hỗ trợ đa dạng phương thức thanh toán QR.
- Phân quyền rõ ràng cho user, owner, driver và admin.
- Giao diện responsive, dễ mở rộng.
## 8. Hướng phát triển tiếp theo
- Tích hợp thực tế với MOMO/ZaloPay/VNPay API chính thức.
- Thêm báo cáo KPI và dashboard doanh thu chi tiết.
- Hệ thống chat hoặc tin nhắn giữa khách hàng và chủ xe/tài xế.
- Tự động gửi email/SMS thông báo booking và thanh toán.
- Mobile app hoặc PWA cho trải nghiệm người dùng tốt hơn.