🚛 SML Fleet

ระบบควบคุมรถขนส่งครบวงจรสำหรับ SME ไทย — บริหารจัดการรถ คนขับ เที่ยววิ่ง ซ่อมบำรุง ต้นทุน ทั้งหมดในที่เดียว

🏗️ Go Backend 📱 Flutter Mobile 🌐 Web Dashboard 💬 LINE OA Bot 🤖 AI Agent (Claude) 🗺️ Longdo Map 🔗 46 MCP Tools
6
แอปพลิเคชัน
46
MCP Tools
60+
API Endpoints
10
MongoDB Collections
8
PostgreSQL Tables
10
Kafka Topics

สถาปัตยกรรมข้อมูล

Event-driven architecture — MongoDB เป็น Source of Truth, PostgreSQL เป็น Query Layer

Data Flow

📱 Flutter/Web/LINE
⚙️ Go API (Gin)
🍃 MongoDB
📡 Kafka
🐘 PostgreSQL

Write: API → MongoDB (source of truth) → Kafka event → PostgreSQL upsert
Read: API → PostgreSQL (เร็ว, JOIN ได้)
Rebuild: PostgreSQL สามารถ DROP แล้ว rebuild จาก MongoDB ได้ทุกเมื่อ

ตัวอย่าง: สร้างรถใหม่ (Write Path)

// 1. เขียนลง MongoDB (source of truth) result, err := mongoCollection.InsertOne(ctx, vehicle) // 2. บันทึก Event Log (audit trail) eventLogger.Log(ctx, "vehicle.created", vehicle) // 3. Produce event → Kafka producer.Produce("fleet.vehicles", KafkaEvent{ Type: "vehicle.created", Payload: vehicle, }) // 4. Kafka Consumer อ่าน event → upsert ลง PostgreSQL // INSERT INTO fleet_vehicles (...) ON CONFLICT (id) DO UPDATE SET ...

ตัวอย่าง: ค้นหารถ (Read Path)

// อ่านจาก PostgreSQL เสมอ (เร็วกว่า, JOIN ได้) SELECT v.*, d.name as driver_name FROM fleet_vehicles v LEFT JOIN fleet_drivers d ON v.current_driver_id = d.id WHERE v.shop_id = $1 AND v.status = 'active' ORDER BY v.updated_at DESC LIMIT 20 OFFSET 0

6 แอปพลิเคชัน

ระบบนิเวศครบวงจร — ทุกส่วนเชื่อมกัน real-time

⚙️

App 1: Go Backend API

REST API + MCP Server + Kafka Producer/Consumer — หัวใจของระบบ รองรับ multi-tenant ผ่าน shop_id

Go 1.22+ (Gin) 60+ endpoints 46 MCP tools
📱

App 2: Driver App

แอปสำหรับคนขับรถ — รับงาน, นำทาง, เช็คลิสต์, ถ่ายรูป POD, บันทึกน้ำมัน, แจ้งซ่อม, GPS tracking

Flutter iOS + Android Offline Support
👔

App 3: Boss App

แอปสำหรับเจ้าของ/ผู้จัดการ — Dashboard, แผนที่ real-time, จัดเที่ยว, อนุมัติซ่อม, ติดตามต้นทุน

Flutter iOS + Android Push Notifications
🖥️

App 4: Web Dashboard

แดชบอร์ดสำหรับแอดมิน/บัญชี — Drag & drop จัดเที่ยว, Work Order, Parts Inventory, P&L, Export Excel/PDF

Flutter Web Responsive DataTable
💬

App 5: LINE OA Chatbot

AI Agent ผ่าน LINE — ลูกค้าถามรถว่าง จองเที่ยว ติดตามงาน ดูต้นทุน ทั้งหมดผ่านแชท

LINE Messaging API Claude AI MCP Tools
🔗

App 6: UCP + A2A Gateway

Universal Commerce Protocol — ให้ AI agents ภายนอก จองรถ ติดตามงาน ชำระเงิน ผ่าน API มาตรฐาน

UCP Protocol A2A Agent Card PromptPay/Stripe

ฟีเจอร์หลัก — ทำอะไรได้บ้าง

ทุกฟีเจอร์ออกแบบสำหรับ SME ขนส่งไทย — ภาษาไทย, พ.ศ., บาท, กม.

🚛 ทะเบียนรถ (Vehicle Management)

ลงทะเบียนรถทุกประเภท — 4ล้อ, 6ล้อ, 10ล้อ, หัวลาก, กระบะ — ข้อมูลครบทั้งประกัน ภาษี พ.ร.บ.

POST /api/v1/fleet/vehicles { "plate": "กท-1234", "brand": "ISUZU", "model": "FRR 210", "type": "6ล้อ", "year": 2023, "fuel_type": "ดีเซล", "max_weight_kg": 6000 }

🔴🟡🟢 สุขภาพรถ (Vehicle Health)

ระบบให้คะแนนสุขภาพรถอัตโนมัติ — เขียว=พร้อมใช้, เหลือง=ควรดูแล, แดง=ห้ามออกวิ่ง

GET /api/v1/fleet/vehicles/:id/health → { "health_status": "yellow", "issues": [ "ประกันหมดอายุในอีก 15 วัน", "ครบรอบเปลี่ยนน้ำมันเครื่อง" ] }

👤 KPI คนขับ (Driver Score)

คะแนน 0-100 จาก: ตรงเวลา (30%), ประหยัดน้ำมัน (25%), Rating ลูกค้า (20%), ไม่มีอุบัติเหตุ (15%), ไม่ฝ่าฝืน (10%)

GET /api/v1/fleet/drivers/:id/score → { "score": 92, "on_time_rate": 0.95, "fuel_efficiency": 5.2, // km/L "customer_rating": 4.8, "accident_count": 1, "total_trips": 450 }

💰 คำนวณเงินเดือน

คำนวณอัตโนมัติ: เงินเดือนฐาน + เบี้ยเลี้ยง × วัน + โบนัสเที่ยว × เที่ยว + OT

GET /api/v1/fleet/drivers/:id/salary → { "base_salary": 15000, "daily_allowance": 6000, // 300×20 วัน "trip_bonus": 4000, // 200×20 เที่ยว "overtime": 1200, "total": 26200 }

📋 เที่ยววิ่ง (Trip Management)

จัดเที่ยว — มอบหมายรถ+คนขับ — ติดตาม GPS — ส่งมอบ POD — คำนวณต้นทุน/กำไร

Trip Status Flow: draft → pending → accepted → started → arrived → delivering → completed ↓ POD + ลายเซ็น

📍 GPS Tracking Real-time

ติดตามรถทุกคันแบบ real-time — คนขับส่ง GPS ทุก 30 วินาที — ดู speed, heading, battery

POST /api/v1/fleet/gps/location { "trip_id": "trip_001", "lat": 18.7883, "lng": 98.9853, "speed": 65.5, "heading": 180, "battery": 85 } // → ส่งทุก 30 วินาทีจาก Driver App

🔧 ซ่อมบำรุง (Maintenance)

ใบสั่งซ่อม — อนุมัติ — ติดตามงาน — คิดค่าอะไหล่+แรง — เชื่อม BC Account บัญชี

Work Order Types: • preventive — ซ่อมตามรอบ (น้ำมัน, เบรค, ยาง) • corrective — ซ่อมตามอาการ • emergency — ซ่อมฉุกเฉิน Approval Flow: draft → pending_approval → approved → in_progress → completed

⚠️ แจ้งเตือนอัตโนมัติ

Cron job ตรวจทุกชั่วโมง — ประกัน/ภาษี/พ.ร.บ./ใบขับขี่ หมดอายุ, ซ่อมครบรอบ, ขับเร็ว, ออกนอก geofence

Alert Types: 📋 insurance_expiry — ประกันใกล้หมดอายุ 💵 tax_due — ภาษีรถใกล้กำหนด 📄 act_due — พ.ร.บ. ใกล้กำหนด 🪪 license_expiry — ใบขับขี่หมดอายุ 🔧 maintenance_due — ซ่อมบำรุงครบกำหนด 🚨 speeding — ขับเร็วเกินกำหนด 📍 geofence_alert — ออกนอกเขตพื้นที่

🤝 รถร่วม (Partners)

ลงทะเบียนรถร่วม — ค้นหารถว่าง — จอง — จ่ายเงิน — หัก ณ ที่จ่าย — AI จับคู่อัตโนมัติ

AI Matching Score (100 คะแนน): • Zone coverage — 30 คะแนน • Vehicle type — 25 คะแนน • Rating — 20 คะแนน • Price — 15 คะแนน • Availability — 10 คะแนน

📊 ต้นทุนขนส่ง (Cost Analysis)

P&L ต่อคัน/เดือน — ค่าน้ำมัน, ทางด่วน, ซ่อม, เบี้ยเลี้ยง vs รายได้ — รู้กำไรทุกเที่ยว

GET /api/v1/fleet/expenses/pl/:vehicle_id → { "vehicle": "กท-1234", "month": "2024-12", "revenue": 75000, "costs": { "fuel": 24000, "toll": 1800, "maintenance": 4040, "driver": 18000, "other": 500 }, "total_cost": 48340, "profit": 26660, "margin": "35.5%" }

🤖 AI Agent (LINE Bot + MCP)

ลูกค้าทัก LINE → AI ตอบทันที ใช้ MCP tools ค้นหารถว่าง คำนวณราคา จองเที่ยว — ไม่ต้องมีคนรับ

ลูกค้า: "มีรถ 6 ล้อว่างพรุ่งนี้ไหม ส่งไปลำพูน" ↓ AI → MCP: list_vehicles(type="6ล้อ") AI → MCP: check_driver_schedule(tomorrow) AI → MCP: calculate_route_cost("เชียงใหม่→ลำพูน") ↓ AI ตอบ: "รถ กท-1234 ว่างครับ คนขับ: สมชาย ค่าขนส่ง: 2,500 บาท [ปุ่ม: จองเลย]"

🔗 UCP — ให้ AI ภายนอกจองรถได้

Universal Commerce Protocol — AI agents จากระบบอื่นสามารถค้นหา จอง ชำระเงิน ติดตาม ผ่าน API มาตรฐาน

UCP Endpoints: POST /ucp/discovery/catalog — ดูประเภทรถ+ราคา POST /ucp/discovery/availability — ค้นหารถว่าง POST /ucp/cart/quote — ขอใบเสนอราคา POST /ucp/cart/booking — จอง POST /ucp/checkout/payment — ชำระเงิน GET /ucp/fulfillment/track/:id — ติดตาม GET /ucp/fulfillment/pod/:id — หลักฐานส่ง

46 MCP Tools

เครื่องมือสำหรับ AI Agent เรียกใช้ระบบ — ทั้ง LINE Bot และ Claude Desktop

🚛 Vehicle Tools 8

  • list_vehicles — ค้นหารถ (type, status, ownership)
  • get_vehicle — ข้อมูลรถ by ID
  • create_vehicle — ลงทะเบียนรถใหม่
  • update_vehicle — อัปเดตข้อมูล
  • get_vehicle_health — สุขภาพรถ 🟢🟡🔴
  • get_vehicle_location — ตำแหน่ง GPS
  • get_vehicle_cost — ต้นทุนรวมต่อคัน
  • get_vehicle_history — ประวัติทั้งหมด

👤 Driver Tools 10

  • list_drivers — ค้นหาคนขับ
  • get_driver — ข้อมูลคนขับ
  • create_driver — ลงทะเบียนใหม่
  • update_driver — อัปเดตข้อมูล
  • get_driver_score — KPI 0-100
  • check_driver_schedule — ตารางเวร
  • assign_driver_to_trip — มอบหมายงาน
  • get_driver_expense — ค่าใช้จ่าย
  • calculate_driver_salary — คำนวณเงินเดือน
  • suggest_best_driver — AI แนะนำคนขับ

📋 Trip Tools 8

  • list_trips — ค้นหาเที่ยววิ่ง
  • create_trip — สร้างเที่ยวใหม่
  • update_trip_status — เปลี่ยนสถานะ
  • assign_trip — มอบหมายรถ+คนขับ
  • calculate_route_cost — คำนวณค่าขนส่ง
  • track_shipment — ติดตาม GPS
  • get_trip_pod — หลักฐานส่งมอบ
  • get_trip_cost_breakdown — ต้นทุนต่อเที่ยว

🔧 Maintenance Tools 8

  • list_maintenance_schedule — ตารางซ่อม
  • create_work_order — สร้างใบสั่งซ่อม
  • get_work_order — รายละเอียด
  • update_work_order — อัปเดต
  • approve_work_order — อนุมัติ
  • complete_work_order — ปิดงาน
  • get_maintenance_cost — ต้นทุนซ่อม
  • list_parts_inventory — สต๊อกอะไหล่

🤝 Partner Tools 6

  • register_partner_vehicle — ลงทะเบียนรถร่วม
  • list_partner_vehicles — รายการรถร่วม
  • find_available_partners — ค้นหารถว่าง
  • create_partner_booking — จองรถร่วม
  • get_partner_settlement — รายการจ่ายเงิน
  • calculate_partner_payment — คำนวณค่าจ้าง+หัก ณ ที่จ่าย

📊 Dashboard Tools 6

  • get_fleet_summary — สรุปภาพรวม
  • get_fleet_kpi — KPI metrics
  • get_active_alerts — แจ้งเตือน active
  • get_cost_report — รายงานต้นทุน
  • get_fuel_report — รายงานน้ำมัน
  • get_driver_leaderboard — อันดับคนขับ

หน้าจอหลัก — แต่ละ App

ตัวอย่างหน้าจอและความสามารถของแต่ละแอป

📱 Driver App — 10 หน้าจอ

📋

หน้าหลัก — รายการเที่ยววิ่ง

3 tabs: รอรับงาน | กำลังวิ่ง | เสร็จแล้ว — กดรับงาน เริ่มวิ่ง ส่งมอบ

รับงาน เริ่มวิ่ง GPS tracking

Checklist ก่อนออก

ตรวจ 8 รายการ: เบรค ยาง ไฟ น้ำมัน น้ำ กระจก — ถ่ายรูปถ้าผิดปกติ

8 รายการ ถ่ายรูป ปกติ/ระวัง/ผิดปกติ
📸

POD — หลักฐานส่งมอบ

ถ่ายรูปสินค้า + ลายเซ็นดิจิทัลผู้รับ + หมายเหตุ — อัปโหลดอัตโนมัติ

ถ่ายรูป ลายเซ็น Offline support

👔 Boss App — 10 หน้าจอ

📊

Dashboard — สรุปภาพรวม

KPI cards + กราฟรายได้/ต้นทุน 7 วัน + สถานะรถ (เขียว/เหลือง/แดง) + แจ้งเตือน

KPI realtime Charts Alerts
🗺️

Live Map — แผนที่รถทุกคัน

Longdo Map แสดงตำแหน่งรถ real-time + กดเลือกดู trail + speed + battery

Longdo Map Real-time WebSocket
🔧

ซ่อมบำรุง + อนุมัติ

ดูใบสั่งซ่อม กดอนุมัติ/ปฏิเสธ ดูค่าอะไหล่+แรง + รูปก่อน/หลังซ่อม

อนุมัติ รูปก่อน/หลัง Push notify

🖥️ Web Dashboard — 15+ หน้าจอ

📈

KPI Dashboard

เต็มจอ — Vehicle Utilization, On-time Rate, Fuel Efficiency, Profit Margin, Driver Leaderboard

4 KPI Cards Charts Filters Export
📝

Work Order Form

ฟอร์มเต็ม: เลือกรถ + ช่าง + อะไหล่ (เพิ่มได้หลายรายการ) + ค่าแรง + รูปถ่าย + อนุมัติ

Parts list Labor cost Photos Approval
💰

P&L ต่อคัน/เดือน

DataTable — รายได้ vs ต้นทุน (น้ำมัน+ทางด่วน+ซ่อม+คนขับ) = กำไร/ขาดทุน ทุกคัน

Per vehicle Monthly Export Excel Sort/Filter

API Endpoints (ตัวอย่าง)

60+ REST API endpoints — ทั้งหมด multi-tenant ผ่าน shop_id

MethodEndpointคำอธิบาย
GET/api/v1/fleet/vehiclesรายการรถ (?status=active&type=6ล้อ)
POST/api/v1/fleet/vehiclesสร้างรถใหม่ → MongoDB → Kafka → PG
GET/api/v1/fleet/vehicles/:id/healthสุขภาพรถ (green/yellow/red)
GET/api/v1/fleet/drivers/:id/scoreKPI score คนขับ (0-100)
POST/api/v1/fleet/tripsสร้างเที่ยววิ่ง
PUT/api/v1/fleet/trips/:id/statusเปลี่ยนสถานะ (pending→accepted→started...)
POST/api/v1/fleet/trips/:id/assignมอบหมายรถ+คนขับ
POST/api/v1/fleet/gps/locationรับ GPS จาก driver app (ทุก 30 วินาที)
GET/api/v1/fleet/gps/vehiclesตำแหน่งรถทุกคัน real-time
POST/api/v1/fleet/maintenance/work-ordersสร้างใบสั่งซ่อม
PUT/api/v1/fleet/maintenance/work-orders/:id/approveอนุมัติใบสั่งซ่อม
POST/api/v1/fleet/partners/find-availableค้นหารถร่วมว่าง
GET/api/v1/fleet/expenses/pl/:vehicle_idP&L ต่อคัน
GET/api/v1/fleet/dashboard/summaryสรุปภาพรวมวันนี้
GET/api/v1/fleet/dashboard/kpiKPI metrics ทั้งหมด
GET/api/v1/fleet/reports/fuel-efficiencyประสิทธิภาพน้ำมันต่อคัน

Tech Stack

🏗️ Backend

Go 1.22+ (Gin) — REST API, MCP Server, Kafka Producer/Consumer, LINE Webhook, UCP Gateway

🍃 Primary DB

MongoDB 7+ — Source of truth, flexible schema, event sourcing, audit trail

🐘 Query DB

PostgreSQL 16+ — JOIN, aggregate, report, analytics — rebuildable จาก MongoDB

📡 Stream

Apache Kafka (KRaft mode) — Real-time sync MongoDB → PostgreSQL, 10 topics

📱 Mobile + Web

Flutter 3.24+ — iOS, Android, Web จาก codebase เดียว, shared fleet_core package

🗺️ Maps

Longdo Map API v3 — แผนที่ไทย, geocoding, routing, search — ถูกกว่า Google Maps

🤖 AI

Claude API (Haiku/Sonnet) — ภาษาไทยดี, MCP native, 46 fleet tools

☁️ Storage

Cloudflare R2 — เก็บรูป POD/เอกสาร, ไม่มีค่า egress, S3-compatible API

💳 Payment

PromptPay QR (ฟรี) + Stripe (UCP) — รองรับทั้งไทยและต่างประเทศ