How the Public Booking Diary Schedule Works
Source: schedules_controller.rb
- Default schedules require a day_of_week_int (0=Sunday through 6=Saturday) and no specific date; non-default (override) schedules require a specific date plus start/end times
- Schedule updates use an upsert pattern — if a schedule for that day/date does not exist, it is created; if it does, it is updated in place
- Two calculation modes determine available booking slots: Manual mode uses per-day configured hours; Automatic mode sums all mechanic schedules for the day
- When no appointment type is selected on the public diary, the default booking duration is 1 hour
- In Automatic mode, the diary shows as full when booked hours reach the booking_diary_full_at_percent threshold (e.g., if set to 80%, the day shows full at 80% capacity)
- Days with zero configured hours are automatically marked as unavailable on the public diary
- The public diary always displays a full Monday-to-Sunday week regardless of the company's actual working days
Support scenarios
- "The online diary shows a day as full but we still have availability" → In Automatic mode, the diary shows full when the booking_diary_full_at_percent threshold is reached, not at 100%. Check the threshold setting — it may be set lower than expected (e.g., 80%).
- "Saturday shows as unavailable on the public diary but we work Saturdays" → Check that the Saturday schedule has hours configured. Zero-hour days are automatically marked unavailable. Create or update the schedule for Saturday with the correct hours.
- "The default appointment length is wrong on the public diary" → When no appointment type is selected, the default is 1 hour. Create or configure appointment types with the correct durations to override this default.
- "The public diary shows Sunday but we're closed" → The public diary always shows Monday through Sunday. Days with zero hours will show as unavailable, but the day itself will still appear in the calendar.