Неделя клуба в одной сетке
Занятие знает свою продолжительность, тренера, зону и предел мест. Занятость считается из уже существующих броней, а не проставляется руками.
- Занятость видна в самом слоте
- Запись заводится в пустом слоте

Зарядка
Процессы у клуба были налажены. Врозь лежали данные: записи в одном месте, расписание в другом, клиентская база отдельно.
Проект начался не с макетов, а с вопроса, что происходит с записью после того, как клиент о ней попросил. Весь цикл закрывали сами: бизнес-анализ, проектирование, интерфейсы, фронтенд, серверную логику, интеграцию и внедрение на объекте.
Клиенты записывались по телефону и в сообщениях, администратор переносил информацию руками, а свободное время приходилось уточнять отдельно. Простой сценарий записи зависел от сотрудника на каждом шаге.
Чем больше ручных действий, тем выше цена одной ошибки
Мы изучили существующие отраслевые системы, включая решения для фитнес-клубов. Возможностей в них много, но небольшому клубу требовалась малая их часть, а важные сценарии всё равно пришлось бы подстраивать под структуру самой системы. Задача была не в том, чтобы внедрить ещё одну CRM, а в том, чтобы собрать систему вокруг реальной работы клуба.
До проектирования интерфейсов мы прошли весь путь записи — от первого обращения клиента до фактического посещения занятия.
Администратору нужен полный контроль над расписанием, клиентами и записями. Клиенту — самый простой способ выбрать услугу и свободное время. Интерфейса поэтому два, а данные и бизнес-логика под ними общие: спорить о том, где лежит правда, им не приходится.
Одна модель данных
Внутренняя CRM для сотрудников и онлайн-бронирование для клиентов стоят на ней обе.Расписание, клиентская база, правила абонементов и виджет записи. Первые три — рабочий контур сотрудника, четвёртый — то, что видит клиент; данные под ними общие.
Занятие знает свою продолжительность, тренера, зону и предел мест. Занятость считается из уже существующих броней, а не проставляется руками.

Администратору не нужно собирать картину из трёх источников: срок действия, остаток посещений, статус оплаты и текущая запись стоят рядом.

Длительность, число посещений, цена, срок заморозки и ограничение по дням задаются отдельно. Универсального типа занятия в системе нет.

Тот же слот, что администратор видит в сетке, клиент видит в виджете — с остатком мест, тренером и ценой. Перед созданием брони доступность проверяется ещё раз.

В спортивном клубе услуги отличаются сильнее, чем кажется. Мы не стали строить систему вокруг одного универсального типа занятия — параметры конкретной услуги задаются отдельно.
Полуторачасовое посещение бассейна и часовая тренировка в зале живут в одной сетке и занимают в ней разное место.
Разовое посещение, абонемент на двенадцать занятий и безлимит на полгода — это три разных способа оплатить одно и то же занятие.
У дорожки бассейна, кабины сквоша и тренажёрного зала предел разный, и считается он от зоны, а не от занятия.
Часть занятий набирает группу до предела, часть занимает ресурс целиком одним клиентом.
Занятие может требовать конкретного тренера, а может не требовать никого — и во втором случае занятость тренера в расчёт не идёт.
Окна работы, ограничения по дням недели и период действия абонемента вместе решают, какие слоты клиент вообще увидит.
Если клиент видит слот, которого уже нет, онлайн-запись перестаёт выполнять свою функцию. Поэтому внешний виджет связан с внутренним расписанием напрямую, а не копией.
Каталог клуба, а не общий список всего, что происходит на объекте.
Свободное время приходит из того же расписания, в котором работает администратор.
В слоте видно, сколько мест осталось, и кто ведёт занятие.
Клиент попадает в общую базу один раз и дальше узнаётся по ней.
Перед созданием брони система ещё раз проверяет доступность слота — два человека не могут занять одно и то же место.
До внедрения часть работы начиналась уже после обращения клиента: прочитать сообщение, уточнить свободное время, завести запись руками. Теперь администратор меняет расписание — и это сразу видно клиенту; клиент создаёт запись — и сотрудник сразу видит её в CRM. Именно двусторонняя связь делает онлайн-запись частью рабочего процесса, а не формой на сайте.
Виджет записи на сайте клуба.
Расписание, услуги, клиенты и брони лежат в одном месте и связаны между собой.
Система была установлена на объекте и использовалась сотрудниками в операционной деятельности — с записями, переносами, изменениями расписания и работой с клиентами. Клуб при этом не перестраивал работу под систему: логику собирали вокруг процессов, которые у него уже были, а сущности отделили друг от друга с расчётом на другие клубы.
Исследуем процессы, проектируем внутренние системы и связываем их с клиентскими сервисами. Разрабатываем CRM, кабинеты, расписания и бронирование под реальные сценарии компании — без лишней функциональности и без необходимости перестраивать работу сотрудников вокруг ограничений готового ПО.