Digital и автоматизация / Сайт

Банный день

Сайт и система бронирования для moreparavl.ru
moreparavl.ru
Приморский край
август, 2022 год
«Море пара»

В начале лета наша команда получила невероятно «вкусную» задачу: разработать лендинг и систему бронирования для единственного в своем роде банного комплекса, расположенного в акватории Владивостока, посреди Японского моря, в живописном и экологически чистом месте – в бухте Рында.

Собственно, с дизайном сайта мы достаточно быстро попали в ожидания клиента. Работать тут было чрезвычайным удовольствием: баня расположена в невероятно красивом месте и фотобанк, который нам передали, был сплошным загляденьем.

Но вот с созданием системы бронирования пришлось немного заморочиться. Поначалу ничего не предвещало сложностей: мы рассчитывали интегрировать одну из готовых систем бронирования. Однако первая проблема возникла уже на этапе проектирования сайта: оказалось, что на рынке почти нет хороших форм бронирования, которые бы учитывали специфику бани. Большинство референсов были либо про "красиво, но не функционально", либо про "страшно и чересчур сложно". В итоге было решено разработать собственную систему. Взяли вводные и запустили подготовку прототипа.

  1. Месячный календарь, в который выводятся данные о свободных слотах.
  2. Минимальная продолжительность бронирования – 2 часа.
  3. Есть различные пакеты в зависимости от того, сколько людей будет париться.
  4. При выборе времени необходимо демонстрировать ранее забронированные слоты и блокировать их выбор.
  5. Управление слотами должно производиться из административного интерфейса Битрикса.

В процессе было добавлено, казалось бы, небольшое требование: после того как гость уезжает из бани, добавлять 30 минут на уборку. Однако это небольшое условие поломало всю логику текущей реализации. Почему так произошло? Потому что добавилась логика получасов, а не часов, а значит, нужно было подойти к реализации по-новому. После небольшого ресерча пришли к выводу, что есть два подхода:

  1. Формат свободного выбора времени.
  2. Формат брони предзаданных слотов.

Еще раз о том, почему задача усложнилась.

На этой схеме видно, как между собой конфликтуют условия о минимальном двухчасовом интервале и о требовании добавлять полчаса к каждому слоту на уборку. Например, баня работает с 9 утра, а один из пользователей забронировал ее на 11 утра. Это значит, что время с 9 до 11 уже не может быть продано, поскольку его не хватит на полный слот и уборку. Для бизнеса это неэффективно.

Чтобы обойти это ограничение, можно завести предустановленные системой слоты следующим образом:

Но такой подход а) ограничивает клиентов в выборе удобного времени и б) не позволяет ставить произвольную продолжительность аренды (например, клиент не может выбрать 3 часа аренды – только 2 или 4,5 часа). Это тоже непродуктивно для бизнеса, поэтому от такой логики отказались и вернулись к концепции самостоятельного выбора времени по получасовым интервалам.

При таком подходе мы даем клиенту свободный выбор времени, "закрывая" для него уже занятые слоты. Важно было сделать так, чтобы пользователь на интуитивном уровне понимал, какое время ему доступно. Остановились на том, чтобы на первом этапе предлагать клиенту множественный выбор доступных вариантов начала арендного времени...

... а затем – множественный выбор времени окончания банного сеанса. Тут у нас тоже все непросто, так как нам надо показать, что при выборе 9:30, как на примере, ближайшее время, которое можно выбрать как окончательное, это 11:30. Доступные к выбору варианты выделяем цветом. Из-за того, что время аренды должно быть кратно 1 часу, получаются «шашки». Казалось бы, можно просто убрать ненужные, но так тоже нельзя: другой забронировавший человек мог выбрать получасовой интервал в качестве начала.

Что касается бэкенда – изначально мы планировали реализовать его собственными силами на Битриксе. Однако клиент уже наладил прием заявок по телефону и их регистрацию в YCLIENTS, поэтому поступило пожелание автоматически проинтегрировать API YCLIENTS с нашей системой бронирования. Функционал API позволил нам реализовать желаемое.

Далее мы задались еще одним вопросом: «Что будет, если клиент забронировал слот, но не оплатил?». В результате была выбрана стратегия с формированием тестового слота: после нажатия на кнопку «Забронировать» формируется бронирование без оплаты, которое автоматически удаляется, если в течение 10 минут не происходит оплата.

Вместо послесловия

К моменту, когда мы пишем эту заметку, баня уже закрыла сезон 2022 года: хоть Владивосток с каждым годом расцветает как курортный город, рано или поздно каждому теплому лету приходит конец. Работа получилась интересной и яркой. Сожалеем мы лишь о том, что сами не успели воспользоваться придуманной системой и затестить баню на пару-тройку часов в какой-нибудь уютный сентябрьский вечер. Ставим в план на следующее лето!

Давайте работать вместе! Связаться