ส้ม = ปัจจุบัน · เขียว = ผ่านแล้ว · เหลือง = รอแอดมิน · แดง = จบไม่สำเร็จ
ใครกด action ในแต่ละสเต็ป
• จองเลย → เลือกที่อยู่จัดส่ง (แบบ Shopee) — ผู้เช่าเลือกจาก address book หรือ สร้างที่อยู่เอง ก่อนส่งคำขอ (ต้องมีตาราง addresses ผูกกับ user + ส่ง address_id ไปกับ booking)
• ร้านใส่ค่าจัดส่งก่อนรับจอง — ช่อง shipping_fee ตอน accept เพื่อ finalize ยอดรวม (rental + deposit + shipping) ก่อนผู้เช่าจ่าย
• จ่ายผ่าน QR PromptPay ในเว็บ — gen QR จากเบอร์/เลขพร้อมเพย์ร้าน + ยอดที่ finalize แล้ว → ผู้เช่าจ่าย → อัปสลิป → ร้านยืนยัน confirmed = จบ transaction ในเว็บ
• ไม่ต้องคุย LINE ก็จบได้ — LINE เป็นปุ่ม optional ตอน confirmed ไว้ติดต่อร้านเฉพาะเมื่อมีคำถามเพิ่มเติม
• ยกเลิกเองได้แค่ booking_pending + waiting_for_payment · หลังอัปสลิป → ส่งแอดมิน (cancel_requested)
• Auto-expire 24 ชม. ทุก state ที่รอ seller · limit ≤ 3 คำขอที่รออนุมัติต่อผู้เช่า
• “สลิปไม่ถูกต้อง” ผ่านแอดมิน → slip_disputed (เหมือน flow ยกเลิก)