Онлайн-расписание, которое живёт в одном календаре
Расписание в SportControl — это события с группой, временем и свободным текстом локации. Здесь нет справочника залов и замен тренера, а повторяющаяся серия редактируется целиком. Ниже — как вести календарь и не удивляться его границам.
Basic от 1 000 ₽/мес · перенос данных · без внедрения на месяцы
Клубы, где расписание ведётся в Excel и дублируется в нескольких чатах.
Школы с повторяющимися группами, которым нужен один календарь для тренеров и администраторов.
Родители, которым важно видеть актуальное время, группу и описание занятия.
Что обычно мешает клубу
Три версии расписания
В Excel, на сайте и в чате — разные дни и время.
Изменение теряется в чате
Сообщение уходит в общий поток, и часть группы приходит не вовремя.
Серия правится неожиданно
Администратор меняет одну тренировку, а меняется всё повторение.
Локация описана по-разному
«Зал А», «большой зал» и адрес — три строки об одном месте.
Что хранится в занятии
Событие содержит название, время начала и окончания, необязательную группу, описание, заметки тренера, вид спорта, медиа, свободную строку location, правило повторения и seriesId. Этого достаточно для календаря и связи с составом группы.
В модели нет coachId и facilityId. Тренер не выбирается как отдельная сущность, а зал не является справочником. Расписание хранит то, что в него ввели, и само не проверяет, свободен ли тренер или помещение.
Группа — единственная структурная привязка. С ней занятие попадает в фильтры, список участников и посещаемость. Без группы событие создать можно, но roster и групповая сводка для него не появятся.
- Название, начало и окончание.
- Необязательная группа.
- Свободная строка location.
- Описание, вид спорта и медиа.
- Правило повторения и seriesId.
Группы, а не филиалы
В системе нет модели филиалов и локаций. Нельзя завести «зал на Ленина» как объект, привязать к нему группы и получить отдельную сетку. Всё, что относится к месту, хранится строкой в занятии.
Две группы могут заниматься в одном зале в одно время, и система не остановит создание. Автоматической проверки пересечений при обычном создании нет; поиск пересечений используется только в AI-сценарии и сравнивает время и группу, а не зал или тренера.
Это не приговор, а требование к процессу: перед публикацией кто-то должен глазами проверить сетку. Зато нет иллюзии, что система знает о залах больше, чем в неё записали.
- Филиалов и справочника залов нет.
- location — обычная строка.
- Конфликты при создании автоматически не блокируются.
- Пересечения проверяются вручную или AI-сценарием.
Чего в расписании нет
В событии есть группа и свободная строка location, но нет coachId и facilityId. В веб-редакторе занятия нельзя выбрать тренера или зал, а location не выводится в кабинете родителя. Поле location может попасть в публичный iframe, если его заполнить через API.
Замены тренера и справочник залов не автоматизированы. Пересечения по времени и группе проверяет AI-сценарий, а не обычное создание занятия. Если клубу нужна строгая проверка загрузки, её пока придётся вести отдельно.
Повторяющаяся серия в интерфейсе создаётся как недельная и без даты окончания. Отдельной тренировки внутри серии нет: правка или удаление меняет всю серию. Это ограничение стоит учитывать до переноса расписания.
- Нет полей тренера и зала.
- Нет автоматических замен.
- Нет точечных исключений в серии.
- Пересечения проверяет только AI-сценарий.
Повторяющиеся занятия и серия
При создании можно указать правило повторения. В интерфейсе это недельная серия, а в модели хранятся recurrenceRule и seriesId. Календарь разворачивает повторения в виртуальные события с тем же базовым id.
Исключений для отдельных дат нет. Нельзя «вынуть» одну тренировку из серии и оставить остальные. Редактирование или удаление одной «тренировки» работает с базовым событием, поэтому меняется вся серия.
Удаление особенно важно: вместе с событием каскадно удаляются отметки посещаемости. Если журнал уже собран, удаление одного дня может стереть больше, чем ожидалось.
- Повторение задаётся правилом.
- Отдельных исключений для дат нет.
- Правка одной тренировки меняет серию.
- Удаление серии удаляет связанные отметки.
Кто что видит
Сотрудник видит расписание организации и фильтрует его по группе. Спортсмен видит занятия своих групп, родитель — группы подтверждённых детей. Чужие группы в выдачу не попадают.
Родитель в карточке видит название, время, вид спорта, группу, описание и медиа. Локация и тренер не выводятся: если место критично, его упоминают текстом.
Тренеру доступен список группы и сводка посещаемости. Сотрудники создают, редактируют и удаляют занятия. Родитель и спортсмен таких действий не видят.
- Сотрудник видит расписание организации.
- Спортсмен — только свои группы.
- Родитель — группы своих детей.
- Локация и тренер родителю не показываются.
Напоминания: только push и только при создании
Напоминания создаются при создании занятия для участников группы и автора. Канал — push. Отправка идёт по смещениям от времени начала: за сутки, за два часа и за полчаса, если момент ещё не прошёл.
Email-напоминаний о тренировках нет. Клубного переключателя тоже нет: поведение задаётся глобальным флагом окружения REMINDERS_PUSH. Если флаг выключен, push может не доставляться.
При редактировании времени напоминания не пересчитываются: они созданы под исходное время. Если тренировка перенеслась, старые push придут не тогда, когда нужно.
- Напоминания создаются при создании занятия.
- Канал только push.
- Email и клубный переключатель отсутствуют.
- При переносе времени напоминания не пересоздаются.
Публичная страница и iframe
У клуба может быть публичная страница /club/[slug]. Это профиль организации с описанием, контактами и оформлением. Групп и расписания на ней нет.
Расписание для встраивания живёт отдельно — на /embed/[slug]. Это компактный iframe со списком ближайших занятий, а не полноценная страница клуба с группами и записью. Он подходит для сайта, но не заменяет кабинет и CRM.
Публичные страницы не раскрывают списки участников и данные спортсменов. Внутреннее расписание и журнал остаются за авторизацией.
- /club/[slug] — профиль без расписания.
- /embed/[slug] — отдельный iframe со списком.
- Запись на занятие через iframe не оформляется.
- Данные спортсменов публично не показываются.
Как вести календарь без хаоса
Заведите правило: сначала группа, потом время, потом локация. Если занятие относится к группе, всегда указывайте её — иначе оно не попадёт в roster и не даст сводку. Для разовых мероприятий группа может быть не нужна, но это стоит помечать в названии.
Серии создавайте только там, где повторяется одно и то же. Если занятия отличаются по времени или месту, лучше создать отдельные события: иначе правка одного дня затронет всю серию. Перед изменением проверьте, есть ли по прошлым дням отметки.
Раз в неделю просматривайте ближайшие семь дней. Проверьте, нет ли двух групп в одном зале, не осталось ли старой локации, не перенеслось ли занятие без нового напоминания. Автоматической проверки конфликтов нет, поэтому просмотр — часть процесса.
- Всегда указывайте группу, если она есть.
- Серия — только для одинаковых занятий.
- Перед правкой проверьте прошлые отметки.
- Раз в неделю просматривайте неделю вручную.
Перенос с Excel и реальные ограничения
Готового импорта из Excel нет. Текущую неделю переносят вручную: создают группы, затем занятия и повторения. Начинать стоит с одной недели, чтобы проверить формат и не размножить ошибку.
После переноса покажите расписание тренерам и администратору. Убедитесь, что они видят те же занятия и что фильтр по группе работает. Только потом подключайте родителей и встраивание на сайт.
Ограничения стоит проговорить сразу: нет филиалов, справочника залов, замен тренера, исключений в серии и автоматической проверки конфликтов. Взамен клуб получает один календарь вместо трёх файлов.
- Импорта из Excel нет.
- Начинайте с одной недели.
- Сверьте видимость для тренеров.
- Подключайте родителей после проверки.
Что уже работает
Единый календарь
Занятия организации в одной сетке и списке.
Группы
Привязка занятия к составу и посещаемости.
Ручная отметка
Тренер может отметить посещаемость без QR.
Повторения
Недельная серия с общим seriesId.
Push-напоминания
Создаются при создании занятия.
Публичный iframe
Компактное расписание для сайта клуба.
Как проходит внедрение
1. Соберите неделю
Группы, время и повторяющиеся занятия.
2. Проверьте глазами
Конфликты по времени и группам нужно увидеть вручную.
3. Покажите команде
Тренеры и администраторы работают в одном календаре.
4. Подключите родителей
Кабинет и публичный iframe после проверки.
Что меняется
Расписание перестаёт быть файлом, который кто-то забыл обновить, но остаётся инструментом с ручными правилами.
- Одна версия расписания для сотрудников.
- Родитель видит время и группу без звонка.
- Повторения не нужно создавать вручную каждую неделю.
- Ограничения серии и локации понятны заранее.
Как это выглядит на практике
Секция на 40 учеников: расписание, взносы и QR без Excel
Один тренер и один администратор вели расписание в Excel, а взносы — в тетради. Родители спрашивали время занятий и статус оплаты в чатах. Разбираем, как навести порядок без филиалов и импорта старых таблиц.
Клуб на 120 учеников: посещаемость и взносы без бумаги
В клубе восемь групп, три тренера и два администратора. Посещаемость вели на бумаге, а взносы сверяли вручную. Разбираем, как выглядит переход на групповой QR и взносы на группу.
Клуб с публичной страницей: заявки и расписание для новых учеников
У клуба пять групп и 60 учеников. Новые люди находили клуб в соцсетях, но записывались в личные сообщения, а расписание приходилось присылать вручную. Разбираем, как собрать заявки и расписание на публичных страницах.
Это собирательные сценарии на основе типовых задач, а не отзывы конкретных клиентов.
Частые вопросы
Можно ли вести несколько филиалов?›
Отдельной модели филиалов и локаций нет. Занятия ведутся в одной организации, а место указывается свободной строкой location. Разделять сетку по филиалам автоматически нельзя.
Проверяет ли система пересечения залов и тренеров?›
При обычном создании занятия автоматической проверки нет. Поиск пересечений используется только в AI-сценарии и сравнивает время и группу, а не зал или тренера.
Что видит родитель в расписании?›
Название, время, вид спорта, группу, описание и медиа. Локация и тренер в родительском отображении не выводятся.
Можно ли перенести одну тренировку из серии?›
Нет. Исключений для отдельных дат нет: редактирование или удаление одной тренировки затрагивает всю серию.
Что произойдёт с посещаемостью при удалении занятия?›
Связанные отметки Attendance удаляются каскадно. Если по занятию уже собран журнал, удаление серии может стереть и его.
Как работают напоминания?›
Они создаются при создании занятия и отправляются push-каналом. Email-напоминаний о тренировках нет, клубного переключателя тоже нет — используется глобальный флаг окружения.
Есть ли публичная страница с расписанием?›
Профиль клуба /club/[slug] не содержит групп и расписания. Для встраивания используется отдельный iframe /embed/[slug] с ближайшими занятиями.
Можно ли перенести расписание из Excel?›
Готового импорта нет. Занятия переносят вручную, начиная с одной недели, чтобы проверить формат и видимость для команды.
Можно ли сделать повторение на месяц?›
В веб-интерфейсе есть только недельная серия без даты окончания. API принимает recurrenceRule, но пользовательского сценария «на месяц» нет; правка одной тренировки меняет всю серию.
Проверьте на своём клубе
Покажем онлайн-расписание на ваших группах и данных. Если удобнее начать с тарифов — посмотрите Basic и Pro.
Перенос данных и запуск первого сценария обычно занимают день, а не месяцы. Без навязывания дополнительных модулей.
Получить демо
Свяжемся в рабочее время и покажем систему.