Атомарная проверка
Проверка остатка и запись брони выполняются в одной транзакции. Два одновременных запроса не должны независимо забрать одну и ту же доступность.
Гостиничный бизнес
Реализованный проектОбщий остаток номеров для разных каналов. Брони, удержания и отмены проходят через единые правила доступности.
Попробовать решениеМАСШТАБ ДЕМОНСТРАЦИИ
Масштаб и загрузка песочницы — синтетические данные, не показатели заказчика. Исходная загрузка категорий около 76%; для конфликтного сценария в первой гостинице оставлены два стандартных номера. Демо использует отдельную временную SQLite-базу и не подключено к PMS. В реальном проекте — PostgreSQL и PMS API.
01 / ЗАДАЧА
Сайт, площадки и менеджеры видят разные остатки. Обновление приходит с задержкой, и один номер может оказаться в двух заявках. Администратору приходится вручную восстанавливать картину и решать конфликт с гостями.
02 / РЕШЕНИЕ
Централизованный сервис проверяет доступность на весь период проживания, фиксирует бронь и передаёт изменение в PMS и каналы продаж. Источник истины один; статусы синхронизации и исключения видны сотруднику.
ПУТЬ ДАННЫХ / АРХИТЕКТУРА
03 / ВАШ ТЕСТОВЫЙ СЦЕНАРИЙ
Создайте бронь, проверьте удержание или отправьте три конкурирующих запроса. Только тестовые данные.
Модель: 5 гостиниц × 44 номера, 4 канала. Даты 15–28 ноября — фиксированный тестовый период. Данные отдельной сессии не отправляются в PMS и не создают настоящие брони. Удержание занимает остаток до ручной отмены или истечения демо.
04 / ПОД КАПОТОМ
Ограничения и инженерные решения, от которых зависит работа системы.
Проверка остатка и запись брони выполняются в одной транзакции. Два одновременных запроса не должны независимо забрать одну и ту же доступность.
Центральный серви с контролирует своё состояние. Задержки внешних API, отказы площадок и повторные события требуют обработки; абсолютную защиту от всех внешних конфликтов не обещаем.
Отклонённый запрос остаётся в журнале. Менеджер понимает, по какой категории и датам закончился остаток, и может предложить альтернативу.
СЛЕДУЮЩИЙ ШАГ
Разберём задачу, ограничения ваших систем и возможные варианты решения. Предложим реалистичный объём первого этапа.
Обсудить проект