К содержимому

Блог · · 8 минут

Расписание частной школы автоматически: как это работает и где предел

Часы в неделю, сетка звонков и рабочие дни — что нужно расчёту. Что он проверяет, почему кладёт результат в черновик, как черновик публикуют и чего расчёт не знает без завуча.

Автоматическое расписание школы: черновик недели с отчётом о нерасписанных часах

«Составить расписание автоматически» звучит как обещание нажать кнопку и получить неделю. На деле у любого расчёта есть входные данные, без которых ему нечего ставить, и решения, которых в данных нет. Эта статья про то, что кнопка в SchoolOS делает на самом деле, что ей нужно заранее и где заканчивается автоматика и начинается завуч.

Откуда берутся данные

Расчёту нужны три вещи, и все три уже есть в школе — вопрос только в том, записаны ли они.

  • Часы в неделю. У каждого назначения в «Кто что ведёт» — учитель, предмет, класс — есть поле «Часов в неделю». Ноль там значит «школа не сказала», и такое назначение расчёт не трогает: выдумывать учебный план за школу он не станет.
  • Сетка звонков. Номера уроков и их время. Без неё часы некуда класть.
  • Рабочие дни. Если школа их не указала, расчёт берёт понедельник — пятницу и говорит об этом прямо. Это единственное место, где продукт что-то додумывает сам, и поправить это можно за минуту в «Правилах расписания».

У новой школы обычно нет ни звонков, ни часов. Поэтому кнопка «Собрать расписание автоматически» в финале мастера настройки и в «Инструментах» закрывает оба пробела сама: если сетки звонков нет, заводит типовую — семь уроков по 45 минут с 8:30, перемены по 10 минут, после третьего урока 20; если у части назначений нет часов, рядом стоит кнопка «Проставить часы всем без часов» — одно число для всех, кто без часов, а назначения с уже указанными часами она не трогает.

Типовая сетка ставится только на пустое место. Школа, которая заполнила звонки сама, перезаписанной сетки не получит.

Что делает расчёт

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

Сверх накладок расчёт учитывает то, что школа записала в данных:

  • Правила расписания. Часы работы школы по дням и рабочие дни каждого учителя — это запрет, вне его урок не встанет. Пожелания учителей — порядок предпочтений, не запрет.
  • Лимит предмета в день и пары. Если у предмета указано, сколько часов можно ставить в один день, и если часть часов идёт парами (два урока подряд — труд, лабораторные), расчёт это соблюдает.
  • Подгруппы. Две подгруппы одного класса по одному предмету — английский по уровням — ставятся в один час. Связку расчёт выводит сам из того, что класс поделён на группы; описывать её второй раз не нужно.
  • Кабинеты. Если предмету нужен особый кабинет, а в «Зданиях и кабинетах» у кабинетов указан вид, химию не поставят в обычный класс. Если у кабинета указано число мест, класс больше этого числа в него не попадёт.

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

Результат — черновик, а не расписание

Это главное. Расчёт кладёт результат в вариант «Первое расписание» в разделе «Варианты расписания», а не в живую сетку. Живая сетка порождает уроки журнала, оценки и уведомления семьям; записать в неё что-то «одним нажатием, потому что так посчитал алгоритм» — необратимо по последствиям.

В черновике видно:

  • сколько часов нужно было поставить и сколько поставлено — например, «118 из 125»;
  • какие часы не встали и почему: «в сетке звонков нет ни одной подходящей ячейки», «учитель в это время уже ведёт» и так далее, с подсказкой, что поправить;
  • какие подгруппы пришлось развести по разным часам.

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

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

Публикация

Внутри черновика накладки прощаются — это черновик, его двигают руками. Открыв вариант в «Вариантах расписания», вы видите сравнение с действующим расписанием: списки «Появится» и «Исчезнет» поимённо, «Без изменений» числом, отдельно — панель «Что показал расчёт» с нерасписанными часами. Потом кнопка «Опубликовать вариант» — одной операцией, без промежуточного состояния. Опубликовать вариант с накладкой нельзя: кнопка не появится, пока накладки не убраны, — тот же набор проверок, что и в обычной сетке.

После публикации из сетки создаются уроки журнала на весь период, учителя видят свои уроки, родители — расписание своих детей. Если передумали, отмена — это публикация снимка «как было» с новой строкой в истории, тихого отката нет.

Где предел

Расчёт не знает того, чего нет в данных. Честный список:

  • Учитель по вторникам уезжает в другой филиал. Пока это не записано в «Правилах расписания» как его рабочие дни, расчёт поставит ему вторник.
  • Начальной школе нельзя ставить математику шестым уроком. Такого правила в данных нет — это решает завуч, глядя на черновик.
  • Кабинет обещан театральной студии по четвергам. Расчёт видит занятость кабинета только по расписанию, а не по устным договорённостям.
  • Расчёт считает один учебный период — тот, в который попадает сегодняшняя дата, или первый в году. Год целиком за одно нажатие он не собирает.

Разделение получается простое: расчёт снимает механическую работу — те самые сто назначений, которые иначе пришлось бы ставить кнопкой «+» в каждой ячейке, — а завуч принимает решения, которых в данных нет, и публикует. Почему расписание вообще должно жить в системе, а не в файле, разобрано в статье «Расписание занятий: почему оно ломается в Excel»; замены, подгруппы и связь с журналом — в разделе «Расписание занятий» в возможностях и на странице SchoolOS для завуча.

Посмотреть, как выглядит черновик и сравнение перед публикацией, можно в демо-школе «Меридиан», раздел «Варианты расписания».

Читать дальше

Расписание занятий: почему оно ломается в Excel и что должно происходить вместо этогоSchoolOS для завуча: расписание, замены и контроль журналаРаздел «Расписание занятий» в возможностях