Разработка платформы для бронирования услуг
Платформа бронирования соединяет провайдеров услуг (мастера, специалисты, арендодатели) с клиентами через систему онлайн-записи. Ключевые компоненты: управление расписанием, слоты времени, предоплата и отмены, уведомления.
Модель расписания
Расписание провайдера определяет доступные слоты для бронирования:
-- Регулярный рабочий график
CREATE TABLE schedules (
provider_id, day_of_week INT (0-6),
start_time TIME, end_time TIME
);
-- Исключения (выходные, отпуск)
CREATE TABLE schedule_exceptions (
provider_id, exception_date DATE,
is_available BOOLEAN, -- false = недоступен
custom_start TIME, custom_end TIME -- иное расписание в этот день
);
-- Забронированные слоты
CREATE TABLE bookings (
id, provider_id, client_id, service_id,
start_at TIMESTAMPTZ, end_at TIMESTAMPTZ,
status ENUM('pending', 'confirmed', 'cancelled', 'completed')
);
Алгоритм генерации доступных слотов: взять рабочие часы дня → вычесть уже забронированные → вычесть буферное время между записями → вернуть свободные интервалы.
Предотвращение double booking
Race condition: два клиента одновременно бронируют один слот. Решение через PostgreSQL advisory lock:
SELECT pg_advisory_xact_lock(provider_id, unix_timestamp_of_slot);
-- проверяем занятость
-- создаём бронь
-- lock снимается автоматически по окончании транзакции
Или через INSERT ... ON CONFLICT DO NOTHING с уникальным индексом по (provider_id, start_at).
Управление услугами провайдера
Каждый провайдер настраивает свои услуги:
- Название и описание
- Длительность (30 мин, 1 час, 1.5 часа)
- Цена
- Буфер после сессии (время на подготовку к следующей)
- Требования к клиенту (заполнить форму, прикрепить документы)
Политика отмены и возвратов
Стандартные политики:
- Flexible: отмена за 24 часа — полный возврат
- Moderate: за 5 дней — полный, за 24 часа — 50%
- Strict: за 14 дней — 50%, позже — без возврата
Провайдер выбирает политику. При отмене клиентом — автоматический расчёт суммы возврата через Stripe Refund.
Напоминания
Автоматические уведомления:
- Подтверждение бронирования (мгновенно)
- Напоминание за 24 часа
- Напоминание за 1 час
- Просьба оставить отзыв через 2 часа после визита
Каналы: email + SMS (через Twilio / SMS.ru) + push.
Интеграция с Google Calendar / Outlook
Провайдер может синхронизировать своё расписание с Google Calendar:
- OAuth2 авторизация
- Блокирующие события из Calendar → недоступные слоты на платформе
- Новые брони → создаются события в Calendar
Google Calendar API через googleapis SDK.
Сроки
MVP (профиль провайдера, расписание, бронирование, оплата, уведомления): 2–3 месяца. С множественными провайдерами, маркетплейс-функциями, аналитикой и мобильным приложением: 4–6 месяцев.







