讓前台在進入 Booking Checkout 前,查詢住宿期間每個營位的最低剩餘量。這個端點不建立預約,也不鎖位。
POST /api/booking/check-availability
→ 驗證日期與 Asia/Taipei 預約政策
→ 確認營區與 zones 有效
→ get_zone_availability(checkIn, checkOut - 1 day)
→ 取每個 zone 跨晚最低剩餘量
→ 回傳 available、reasons、zones
[checkIn, checkOut);退房日不占位。checkIn 必須落在 today + advanceDays 至 today + bookingWindowDays,且晚數不得超過 maxNights。CAMPGROUND_CLOSED;停售或 pending/confirmed 占用造成不足時回 ZONE_UNAVAILABLE。available=false;日期/政策錯誤才回 400。availableQuantity 是整段期間每天剩餘量的最小值。BookingAvailabilityIntegrationTest 在只有完整 Schema、沒有 dev seed 的 PostgreSQL 執行 11 項,全部通過。