Расписание на месяц собирали руками до 15-го числа.
Курсы, группы и подгруппы уже жили в CRM как смарт-процессы, но расписание на следующий месяц методист складывал в голове и на листе: правил слишком много, и держать их нужно одновременно. Накладки становились видимыми уже на занятиях — и исправляли их не в системе, а людьми.
Мы написали поверх коробочной CRM собственный модуль «Расписание групп»: он собирает черновик расписания в одно нажатие, а методист лишь правит его перетаскиванием и утверждает.
Что мешало
- ✗Расписание на следующий месяц собирали вручную до 15-го числа
- ✗Правила — восьмичасовой день, чередование длинных и коротких групп — держались в голове методиста
- ✗Две группы одного курса нельзя ставить на одни и те же часы
- ✗Сквозная нумерация групп каждый год начинается заново
- ✗Накладки обнаруживались, когда слушатели уже пришли на занятия
Что умеет система
Календарь групп
Сетка рабочих дней с плашками групп: курс, тип, номер, число слушателей. Группы, продолжающиеся с прошлого месяца, отмечены отдельно, накладки подсвечены красным.
Черновик в одно нажатие
Кнопка «Сформировать» раскладывает группы на следующий месяц по настройкам курсов — это ещё не реальные группы, а черновик, который можно править.
Правки перетаскиванием
Плашка группы перетаскивается на другой день — расписание сразу пересчитывается.
Печать и навигация
Печать расписания за период с учётом фильтров; клик по группе открывает её карточку в боковой панели CRM.
Настройки и роли
Для каждого курса заданы число длинных и коротких групп и участие в автоформировании; доступ разведён на три роли — инспектор, методист, администратор.
Как это устроено
Инженерные решения.
Ни одного изменения в ядре
Модуль живёт в изолированном каталоге и пользуется штатными механизмами платформы: собственные таблицы, контроллеры, API смарт-процессов.
Планировщик «волн»
Группы курса идут волнами: параллельные — в одном временном слоте, последовательные — одна за другой; волна заполняет восьмичасовой день и переносит остаток на следующий.
Двухфазная финализация
Сначала создаются карточки в CRM, затем транзакция обновляет собственные таблицы модуля — сбой посередине не оставит расписание созданным наполовину.