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