From 1cd60b4bbc177af5a29851fbeaae71bef7a1abc7 Mon Sep 17 00:00:00 2001 From: counterweight Date: Sun, 21 Dec 2025 17:29:39 +0100 Subject: [PATCH] Fix: Load booking constants from shared/constants.json Created shared_constants.py module that loads constants from the shared JSON file. Updated availability.py and booking.py to import from this module instead of hardcoding values. This ensures backend and frontend stay in sync with the same source of truth for booking configuration. --- backend/routes/availability.py | 4 +--- backend/routes/booking.py | 6 +----- backend/shared_constants.py | 13 +++++++++++++ 3 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 backend/shared_constants.py diff --git a/backend/routes/availability.py b/backend/routes/availability.py index a7dd35f..d4598b3 100644 --- a/backend/routes/availability.py +++ b/backend/routes/availability.py @@ -15,13 +15,11 @@ from schemas import ( SetAvailabilityRequest, CopyAvailabilityRequest, ) +from shared_constants import MAX_ADVANCE_DAYS router = APIRouter(prefix="/api/admin/availability", tags=["availability"]) -# From shared/constants.json -MAX_ADVANCE_DAYS = 30 - def _get_date_range_bounds() -> tuple[date, date]: """Get the valid date range for availability (tomorrow to +30 days).""" diff --git a/backend/routes/booking.py b/backend/routes/booking.py index 2981502..9421445 100644 --- a/backend/routes/booking.py +++ b/backend/routes/booking.py @@ -15,15 +15,11 @@ from schemas import ( BookingRequest, AppointmentResponse, ) +from shared_constants import SLOT_DURATION_MINUTES, MIN_ADVANCE_DAYS, MAX_ADVANCE_DAYS router = APIRouter(prefix="/api/booking", tags=["booking"]) -# From shared/constants.json -SLOT_DURATION_MINUTES = 15 -MIN_ADVANCE_DAYS = 1 -MAX_ADVANCE_DAYS = 30 - def _get_bookable_date_range() -> tuple[date, date]: """Get the valid date range for booking (tomorrow to +30 days).""" diff --git a/backend/shared_constants.py b/backend/shared_constants.py new file mode 100644 index 0000000..3a48651 --- /dev/null +++ b/backend/shared_constants.py @@ -0,0 +1,13 @@ +"""Load shared constants from shared/constants.json.""" +import json +from pathlib import Path + +_constants_path = Path(__file__).parent.parent / "shared" / "constants.json" +_constants = json.loads(_constants_path.read_text()) + +# Booking constants +SLOT_DURATION_MINUTES: int = _constants["booking"]["slotDurationMinutes"] +MIN_ADVANCE_DAYS: int = _constants["booking"]["minAdvanceDays"] +MAX_ADVANCE_DAYS: int = _constants["booking"]["maxAdvanceDays"] +NOTE_MAX_LENGTH: int = _constants["booking"]["noteMaxLength"] +