🍱 ระบบจัดเส้นทางและแบ่งงานไรเดอร์อัจฉริยะ (ส่งด่วนมื้อเที่ยง)
ระบบเว็บแอปพลิเคชันสำหรับบริหารจัดการและวางแผนเส้นทางจัดส่งข้าวกล่องมื้อเที่ยงรอบมหาวิทยาลัยมหาสารคาม (มมส. ขามเรียง) รัศมี 3 กิโลเมตร พัฒนาด้วย Angular + Node.js (TypeScript) + PostgreSQL (Neon) + Leaflet Map
🚀 ลิงก์เข้าใช้งานระบบ
🎯 ตอบโจทย์ความต้องการธุรกิจ (Business Solution)
1. โมเดลไรเดอร์ประจำ Fixed 13 คน (คุ้มค่า & มีประสิทธิภาพสูงสุด)
- ออเดอร์มื้อเที่ยงคงที่ 25 - 35 รายการต่อวัน (แต่ละออเดอร์ไม่เกิน 3 กล่อง)
- ไรเดอร์ประจำ 13 คนรู้เส้นทางในโซน มมส. ขามเรียงเป็นอย่างดี
- กำหนดเงื่อนไข รับออเดอร์ไม่เกิน 3 จุดต่อคน
- คุมกำไรได้ 24 - 30% ดีกว่าการเรียกไรเดอร์ Dynamic 5 - 10%
- ส่งทันไม่เกิน 12:25 น. (ภายใน 55 นาที ก่อนหมดเวลาพักเที่ยง 12:30 น.)
2. โครงสร้างราคาและต้นทุน
- ข้าวกล่องราคาขาย: 65 บาท / กล่อง
- ต้นทุนอาหาร: 40 บาท / กล่อง
- ค่าจ้างไรเดอร์: ค่าเริ่มต้น 15 บาท + (2 บาท × ระยะทางกิโลเมตร × จำนวนกล่อง)
📱 ฟังก์ชันหน้าจอระบบทั้ง 4 หน้า
1. 🗺️ หน้าจัดเส้นทาง & แผนที่ขนาดใหญ่ (เจ้าของร้าน)
- URL:
/routes
- แผนที่ Leaflet (OpenStreetMap): แสดงจุดตั้งร้านค้า (หน้าป้าย มมส. ขามเรียง) พร้อมเส้นทางวิ่งของไรเดอร์แต่ละคนด้วยเส้นสีชัดเจน (13 สีประจำตัวไรเดอร์)
- แผงสรุปกำไร/ขาดทุน: แสดงกำไรสุทธิ, อัตรากำไร %, ยอดขายรวม, ต้นทุนค่าส่ง, ต้นทุนอาหาร และสถานะเวลาส่งมอบแบบ Real-time
- ปุ่ม "⚡ คำนวณเส้นทางใหม่": กดเพื่อให้ระบบสลับลำดับการจับกลุ่มและเสนอเส้นทางทางเลือกใหม่ได้ทันที
- ไฮไลต์เส้นทาง: คลิกที่ชื่อไรเดอร์หรือคลิกที่เส้นบนแผนที่เพื่อโฟกัสเส้นทางของไรเดอร์คนนั้น
2. 📦 หน้าจัดการออเดอร์มื้อเที่ยง (เจ้าของร้าน)
- URL:
/orders
- ปุ่มจำลองออเดอร์มื้อเที่ยง (28 รายการ): สุ่มออเดอร์ 1-3 กล่องในช่วง 10:00 - 10:45 น. เพื่อทดสอบระบบได้ทันที
- สร้าง / แก้ไข / ลบ รายการออเดอร์
- สรุปตัวเลขยอดสั่งซื้อ, จำนวนกล่อง, ยอดขาย และต้นทุนแบบสรุปย่อ
3. 👥 หน้าจัดการข้อมูลลูกค้า (เจ้าของร้าน)
- URL:
/customers
- รายชื่อลูกค้า, เบอร์โทรศัพท์, ที่อยู่/หอพัก
- แผนที่ระบุพิกัด (สามารถคลิกบนแผนที่เพื่อระบุ Latitude/Longitude ของบ้านลูกค้าได้ทันที)
- ปักหมุดพิกัดรอบ มมส. ขามเรียง
4. 📱 หน้าจอสำหรับไรเดอร์ (เปิดดูผ่านมือถือ)
- URL:
/rider
- กรอกรหัสใบงาน (เช่น
1, 2, TASK-01) หรือกดเลือกเบอร์ไรเดอร์แบบ Quick-select
- สรุปจำนวนข้าวกล่องที่ต้องหยิบออกจากร้าน (11:30 น.)
- สรุปรายชื่อจุดส่ง เรียงลำดับจากจุดที่ 1 ➔ จุดที่ 2 ➔ จุดที่ 3 เพื่อให้ใช้ระยะทางสั้นที่สุด
- ปุ่ม "🗺️ นำทางด้วย Google Maps" ในแต่ละจุดส่ง เพื่อเปิดแผนที่นำทางบนมือถือได้ทันที
- ปุ่ม "📞 โทรหาลูกค้า" สะดวกสำหรับไรเดอร์
🛠️ วิธีการรันระบบ (สำหรับผู้ดูแลระบบ)
รัน Backend (Node.js + Express + PostgreSQL/Neon)
ตั้งค่า DATABASE_URL ใน server/.env ก่อน (ดูตัวอย่างใน server/.env.example และรายละเอียดใน DATABASE_MIGRATION.md)
cd server
npm run migrate # สร้างตารางครั้งแรก (หรือปล่อยให้ init อัตโนมัติ)
npm run dev
# หรือ node dist/index.js
รัน Frontend (Angular 18)
cd client
npm start
ADVWEB