Skip to main content

Customer Booking Flow (ขั้นตอนการจองและจัดการการจองของลูกค้า)

หน้านี้อธิบายขั้นตอนการทำงาน (Workflow) และกฎทางธุรกิจ (Business Rules) ของระบบจองรถยนต์ฝั่งลูกค้า (Customer Portal) โดยมุ่งเน้นเพื่อให้ QA, Developer, BA และลูกค้าเข้าใจกระบวนการทำงานจริงอย่างละเอียดและชัดเจน


1. ขั้นตอนการสร้างการจองใหม่ (New Booking Flow)

กระบวนการจองรถของลูกค้าตั้งแต่การค้นหาข้อมูลรถ การระบุผู้ขับขี่ การยอมรับข้อตกลงนโยบายความปลอดภัย ไปจนถึงการชำระเงินผ่านระบบผู้ให้บริการ (Omise Gateway)

📸 ไดอะแกรมขั้นตอนการสร้างการจองใหม่

📝 คำอธิบายขั้นตอนการจองแบบละเอียด

  1. Car Search & Filter: ลูกค้าระบุวัน เวลา และสถานที่รับ-คืนรถ ระบบจะเรียก API ไปยัง ccr-catalog-service ซึ่งทำการติดต่อตรวจสอบสถานะห้องว่างและราคาจากระบบ CarPro API
  2. Snapshot Creation: เมื่อกดยืนยันการจอง ระบบ ccr-booking-service จะสร้าง Snapshot เก็บข้อมูลรถ สาขา และราคาพิเศษของ Add-on ณ วินาทีนั้นลงในตาราง BookingInfoCars และ BookingInfoAddons เสมอ เพื่อแก้ปัญหาราคาหรือข้อมูลหลักถูกแก้ไขหลังจากทำการจองเสร็จสิ้น
  3. Payment Expiration: รายการจองที่สร้างขึ้นมาจะอยู่ในสถานะ PendingPayment โดยมีเวลาจำกัดในการชำระเงิน (เช่น 15-30 นาที) หากผู้ใช้ชำระไม่ทันเวลา ระบบจะยกเลิกการ Hold รถยนต์ และเปลี่ยนสถานะการจองเป็น Expired

2. ขั้นตอนการยกเลิกการจอง (Cancellation Flow)

กรณีที่ลูกค้าต้องการยกเลิกการจองผ่านเมนู My Booking ของตนเอง ระบบจะทำการคิดค่าธรรมเนียมตามนโยบาย (Cancellation Policy) และเตรียมทำเรื่องคืนเงิน (Refund)

📸 ไดอะแกรมขั้นตอนการยกเลิกการจอง

📝 กฎเกณฑ์การยกเลิก (Cancellation Rules)

  • การคำนวณเงินคืน:
    • ยกเลิกก่อนเวลารับรถมากกว่า X วัน/ชั่วโมง (ตามเงื่อนไข Booking Policy): คืนเงินเต็มจำนวน 100%
    • ยกเลิกก่อนเวลารับรถกระชั้นชิด: คิดค่าธรรมเนียมยกเลิกตามอัตราที่กำหนด (เช่น หักค่าเช่า 1 วัน)
    • ยกเลิกช้ากว่ากำหนดหรือไม่ไปรับรถ (No Show): ไม่คืนเงินทุกกรณี
  • การคืนเงิน (Refund Creation): หากมีเงินคืนหลังจากหักค่าธรรมเนียม ระบบจะสร้างข้อมูลลงในตาราง Refunds ในสถานะเริ่มต้นเป็น PendingSaleCheck และส่งตั๋วไปให้ทีมงานหลังบ้านจัดการต่อ

3. ขั้นตอนการแก้ไขการจอง (Booking Modification Flow)

เมื่อลูกค้าต้องการปรับปรุงรายการจอง เช่น การขอ เปลี่ยนประเภทรถ (Change Car) หรือ เปลี่ยนสถานที่/วันเวลาเดินทาง (Change Location/Dates) ผ่านเมนู My Booking

📸 ไดอะแกรมขั้นตอนการแก้ไขการจอง


4. ตาราง Checklist สำหรับ QA ในการทดสอบ (QA Test Scenarios)

รายการสถานการณ์ที่ครอบคลุมสำหรับให้ QA นำไปทดสอบพฤติกรรมของระบบ:

หมวดหมู่การทดสอบสถานการณ์จำลอง (Scenario)ผลลัพธ์ที่ถูกต้องของระบบ (Expected Behavior)
New Bookingค้นหารถในเวลาเดียวกันสองเครื่องพร้อมกันแล้วเหลือรถคันสุดท้ายระบบที่กดยืนยันชำระเงินก่อนต้องได้การจองสำเร็จ อีกเครื่องต้องแจ้งเตือน "Car not available"
New Bookingไม่ชำระเงินภายในเวลาที่กำหนด (เช่น ปล่อยหน้า QR ไว้จนหมดเวลา)สถานะการจองเปลี่ยนเป็น Expired, ระบบส่งยกเลิก Hold รถไปที่ CarPro และลบ Session
Cancellationยกเลิกการจองก่อนเวลากำหนด 72 ชั่วโมง (Free Cancellation)ยอดคืนเงินต้องเต็ม 100%, แสดงหน้าจอแจ้งสิทธิ์และสถานะการคืนเงินเป็น PendingSaleCheck
Cancellationยกเลิกการจองแบบกระชั้นชิดในเวลาไม่ถึง 24 ชั่วโมงคำนวณค่าธรรมเนียมหักเงิน 1 วันทำงานตามนโยบาย ยอดคืนเงินต้องแสดงยอดคงเหลือที่หักแล้ว
Modificationอัปเกรดรุ่นรถจาก Eco Car เป็น SUV (ราคาเพิ่มขึ้น)ลูกค้าต้องชำระเงินเพิ่มเฉพาะส่วนต่าง (Price Difference), รถเดิมถูกยกเลิก, รถใหม่เปลี่ยนสถานะยืนยันตัวตนสำเร็จ
Modificationลดสเปกรถหรือลดวันเช่ารถลง (ราคาถูกลง)การจองยืนยันทันที, ระบบสร้างรายการคืนเงิน (Refund) ส่วนต่าง, ขอข้อมูลอัปโหลดหน้าสมุดบัญชีของผู้ใช้
User Info Validบันทึกการจองโดยกรอกเลขใบขับขี่ที่หมดอายุแล้วระบบฝั่ง Frontend และ Backend ต้องบล็อกคำขอและแจ้งข้อผิดพลาด "Driver license expired"

5. การแจ้งเตือนและ Edge Cases สำคัญ

  • Car-Not-Available: กรณีที่กดเลือกจองรถแล้ว แต่ในจังหวะนั้นมีการตรวจสอบเรียลไทม์กับ CarPro แล้วไม่พบรถว่าง ระบบจะต้องไม่อนุญาตให้ลูกค้าไปหน้าชำระเงิน และมี Modal แสดงข้อความเตือนให้เลือกใหม่อีกครั้ง
  • Payment Timeout (Omise Callback): หากลูกค้าเปิดหน้าต่างชำระเงินค้างไว้และไม่ทำการจ่าย จนกระทั่งหมดเวลาโฮลด์รถ หลังบ้านจะทำการเปลี่ยนสถานะใน DB เป็น Cancelled อัตโนมัติ ป้องกันกรณีที่ Webhook ชำระเงินเพิ่งได้รับหลังจากระบบปล่อยรถคันนั้นไปให้ผู้อื่นแล้ว