Организация данных: дисциплины, преподаватели, классы, расписание

В Omniscol есть два уровня организации данных. Первый — справочник школы, который ведётся в модуле «Администрирование» (дисциплины, пользователи, учебные годы…) и в долгосрочном плане описывает ваше учебное заведение. Второй — расписания, которые берут из справочника отдельные элементы, чтобы выстроить согласованное планирование на заданный период. Понимание этого разделения — ключ к спокойной работе с изменениями (переименовать дисциплину, обновить данные преподавателя, архивировать расписание) без ущерба для истории.

Общая картина: два уровня, две логики

Уровень расписания — планирование

Уровень школы — модуль Администрирование

служит образцом

служит образцом

содержит

назначенные дисциплины

назначенные преподаватели

преподаваемая дисциплина

соответствующий класс

необязательная группа

преподаватели занятия

Дисциплины

Пользователи-преподаватели

Классы

Группы
(необязательно)

Курсы
= дисциплины классов
(локальная копия, с типом)

Преподаватели расписания
частичная копия

Занятия
длительность, класс, группа (необязательно),
преподаватели, кабинет, позиция

Уровень школы — это общий справочник с долгим сроком жизни, который ведётся в модуле «Администрирование». В нём хранится то, что верно для учебного заведения независимо от конкретного расписания: календарь учебных годов, каталог дисциплин (общие для страны и дисциплины, созданные школой) и список пользователей с их ролями.

Уровень расписания — это согласованное планирование на заданный период. У каждого расписания есть свой список преподавателей, классов, групп, дисциплин, закреплённых за классами, и занятий. Эти объекты — не простые ссылки на справочник школы, а локальные копии, которые можно дополнять, не меняя справочник. И наоборот, справочник уровня школы может меняться (удаление дисциплин, преподавателей), не нарушая прошлых расписаний.

Дальше каждый тип связи разобран подробнее.

Учебный год: временные рамки

Учебный год задаёт интервал «дата начала → дата окончания» и список каникул (см. Учебный год). Он не «содержит» расписания напрямую: расписания разворачиваются на недели (недельный и цикличный режимы) или на даты (режим календаря), принадлежащие учебному году.

Это допускает несколько конфигураций:

  • Одно расписание на учебный год (стандартный случай): расписание охватывает все рабочие недели года.
  • Несколько последовательных расписаний в одном году: например, по одному на триместр, которые сменяют друг друга в даты перехода.
  • Несколько параллельных расписаний на один и тот же период (функция входит в Premium; на некоторых аккаунтах Standard её можно включить в рамках подходящего договора), например:
    • повторяющееся расписание для общей обязательной программы
    • календарное расписание для мастер-классов; при просмотре оба расписания объединяются.

См. Несколько расписаний, опубликованных параллельно.

Таким образом, учебный год остаётся рамкой, а не контейнером. Изменение его границ или каникул обновляет календарь, которым пользуются связанные с ним расписания, но не меняет их содержимое.

Дисциплины: от каталога школы до занятий класса

выбранная дисциплина

возможный тип

соответствующий класс

назначенные преподаватели

служит для создания

можно скорректировать в

Каталог дисциплин
напр. Математика

Типы занятий
напр. лекция, семинар, практикум

Класс в расписании
напр. 8А

Преподаватели расписания
напр. Иванова И. П.

Дисциплина класса (= курс)
Математика [семинар]
объём часов, преподаватели,
ограничения, специализированный кабинет

Занятия
длительность, дата/слот,
возможная группа, кабинет,
преподаватель(и)

Уровень 1 — каталог в модуле «Администрирование»

На уровне школы сосуществуют два источника:

  • Общие дисциплины — справочник Omniscol для выбранной страны (официальные коды, стандартизированные названия). Для школы каталог доступен только для чтения.
  • Созданные дисциплины — то, что школа создаёт сама, на экране «Дисциплины». У каждой созданной дисциплины есть название, код (короткий) и, при желании: краткое название, особый цвет, родительская дисциплина, семейство.

Каталог ничего не говорит о том, какие классы изучают эти дисциплины, — он лишь сообщает, что они существуют.

Семейства дисциплин тоже могут поступать из общего справочника страны (только для чтения) или из собственного справочника, локального для школы.

Уровень 2 — назначение классу (с типом или без)

Когда вы назначаете дисциплину классу в расписании, в классе создаётся локальная копия дисциплины, дополненная полями, нужными для планирования (целевой объём часов, педагогическая нагрузка, несовместимости, преподаватели по умолчанию, специализация кабинета…).

Если вы назначаете дисциплину с типом занятия (лекция, семинар, практикум, экзамен — см. Типы занятий), каждый тип создаёт в классе отдельную запись:

Дисциплина в классе Происхождение Тип
Математика Математика нет
Математика [лекция] Математика лекция
Математика [семинар] Математика семинар

Так сделано намеренно: каждый вариант (математика-лекция, математика-семинар) становится отдельной локальной копией со своим объёмом часов, своими преподавателями и своими несовместимостями. Связь с каталогом не является жёсткой зависимостью: локальная копия сохраняет происхождение дисциплины, пока та есть в каталоге. Если дисциплину удалить из каталога, локальные копии в расписаниях остаются действительными.

Уровень 3 — от параметров курса к занятиям

В Omniscol то, что обычно называют курсом, как правило соответствует дисциплине, назначенной классу, возможно с типом занятия (лекция, семинар, практикум…) и дополненной сведениями для планирования: объём часов, преподаватели, группы, ограничения на размещение, кабинеты или ресурсы.

Это определение говорит о том, что нужно запланировать. Занятия — это конкретные экземпляры, фактически размещённые в расписании на определённую неделю или дату.

Пример: дисциплина класса Математика [семинар] может задавать объём часов, преподавателей, группы, ограничения на размещение и пожелания по кабинету. Затем занятия создаются на основе этого определения. См. Курсы, занятия и типы занятий.

Преподаватели: справочник школы → дополненная копия в расписании

частичная дополненная копия

Пользователь (модуль Администрирование)
роль teacher
имя · логин · e-mail · общая доступность

Назначение в расписание

Преподаватель в расписании
имя (копия) · idnumber
рабочие часы (копия, можно переопределить)
доступность в этом расписании · предпочитаемый кабинет

Назначенные занятия

Преподаватель на уровне школы

На уровне школы преподаватель — это пользователь с ролью teacher (один пользователь может совмещать несколько ролей — см. Пользователи и роли). Он ведётся на экране «Преподаватели» и хранит постоянные идентифицирующие сведения: фамилию, имя, логин, e-mail, идентификационный номер, а также свою общую доступность (повторяющуюся) и базовые рабочие часы.

Преподаватель, назначенный в расписание

Когда вы назначаете этого преподавателя в расписание, Omniscol создаёт в нём частичную дополненную копию. В копию переносится только часть полей справочника школы, а к ним добавляются поля, нужные для планирования:

Поле Уровень школы (справочник) Уровень расписания (копия)
Идентификатор идентификатор пользователя тот же (неявная связь)
Фамилия, имя, отчество источник копируются при назначении
Идентификационный номер источник копируется при назначении
E-mail, телефон, логин источник не копируются (остаются только в модуле «Администрирование»)
Базовые рабочие часы источник копируются, можно переопределить для каждого расписания
Предпочитаемый кабинет в справочнике не ведётся свой для расписания
Доступность «общая доступность» пользователя повторяющийся режим: локальная копия, утверждённая или смягчённая; режим календаря: общий источник, который можно смотреть и менять из модуля «Администрирование» или из соответствующих расписаний

Это разделение важно: один и тот же преподаватель может иметь разные рабочие часы в зависимости от охвата планирования или другой предпочитаемый кабинет в определённый момент (например, из-за временных ограничений по здоровью).

Для доступности логика зависит от режима планирования:

  • в повторяющемся режиме доступность, внесённая преподавателем, проходит этап одобрения администрацией. Её можно скорректировать локально в расписании, например превратив строгую недоступность в нежелательный слот;
  • в режиме календаря доступность преподавателя считается единым источником достоверных данных, в частности для внешних преподавателей. Её можно смотреть и менять в карточке пользователя или в любом календарном расписании, куда назначен преподаватель.

В обоих случаях некоторые параметры остаются своими для расписания и могут локально дополнять эту доступность.

Виртуальные преподаватели

Есть и такой вариант: в расписании можно создать виртуального преподавателя — вакантную должность, за которой нет реального пользователя («будущий преподаватель математики»). У него нет аналога на уровне школы. Когда преподавателя наймут, виртуального можно заменить на настоящего пользователя с ролью преподавателя (см. Назначение преподавателей в расписание).

Принцип локальной копии вкратце

Одна и та же логика действует для дисциплин в классе и для преподавателей в расписании: локальная копия создаётся в момент назначения, и именно эта копия несёт поля, специфичные для расписания.

Почему выбран такой подход:

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

Обратная сторона такого подхода: переименования на уровне школы не распространяются повсюду незаметно. Этому посвящён следующий раздел.

Практические последствия: переименование, удаление, история

Когда вы изменяете объект на уровне школы, Omniscol применяет понятное правило распространения:

Действие на уровне школы Прошлые (закрытые) расписания Текущие и будущие расписания
Переименовать созданную дисциплину (название, короткий код, код) Без изменений — история сохраняется Название передаётся в соответствующие локальные копии
Изменить цвет созданной дисциплины Без изменений Цвет обновляется, если прежний цвет не был переопределён локально
Переименовать преподавателя (фамилия, имя) Без изменений Имя передаётся в локальные копии
Изменить e-mail или телефон преподавателя Не влияет (не копируется) Не влияет (не копируется)
Изменить общую доступность преподавателя Не влияет Повторяющийся режим: отметка об обновлении, если доступность уже была одобрена; режим календаря: обновление общего источника доступности
Удалить созданную дисциплину Локальные копии сохраняются Локальные копии сохраняются; дисциплина исчезает только из каталога
Отключить роль teacher у пользователя Без изменений Копии в расписаниях остаются на месте

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

Когда переносить изменения вручную

Автоматическое распространение намеренно узкое: название, код и цвет дисциплин; имя и идентификатор преподавателей. Название и код дисциплины, скопированной локально, в расписании не меняются; локально можно переопределить только её цвет. Остальные поля (несовместимости, педагогическая нагрузка, рабочие часы, доступность для каждого расписания…) не синхронизируются, потому что они по своей природе принадлежат расписанию.

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

См. также