Архитектура, модули и роли

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

Хостинг и надёжность

Omniscol размещён в Европейском союзе, а именно на AWS Paris и Scaleway Paris. В продукте используются механизмы резервного копирования, мониторинга и логической изоляции учётных записей учебных заведений; подробности, применимые к конкретной учётной записи, зависят от договора и от соответствующей среды.

Подробности для пользователей см. на странице FAQ — Безопасность и хостинг.

Архитектура программного обеспечения

  • Веб-приложение: приложение загружается один раз, затем экраны отображаются динамически, обмен идёт по REST/JSON (Single Page Application).
  • CouchDB как основная база данных.
  • Redis как база данных для синхронизации на стороне приложения и для логов.
  • TypeScript для интерфейса (webapp).
  • Бэкенд на Node.js / Express, управляющий внутренними движками (api, webapp, portal, panel, ical, mcp, oauth2 и др.).
  • C++ для алгоритма формирования расписания, который выполняется на выделенных виртуальных машинах, запускаемых по требованию.

Безопасность

  • HTTPS для коммуникаций, доступных извне.
  • Cloudflare как единственная точка входа (защита от DDoS-атак).
  • Пароли предварительно хешируются на стороне клиента с помощью scrypt, затем повторно хешируются и солятся на сервере. Они не хранятся и не передаются в открытом виде.
  • Аутентификация JWT с ключами подписи и коротким сроком действия; ротация или отзыв ключа могут сделать подписанные токены недействительными.
  • Ссылки общего доступа подписаны, ограничены по сроку, привязаны к учётной записи, которая их создала, и становятся недействительными при смене пароля или деактивации этой учётной записи.
  • Токены API с корневым ключом и производными токенами, скоупами эндпоинтов и сроками действия.
  • OIDC / SSO доступны в зависимости от договора и настроек учётной записи.
  • Экспорт и внутренние резервные копии в формате JSON для обратимости данных.

Роли пользователей

В Omniscol на стороне школы есть несколько ролей:

Роль Типичное использование
Администратор Ответственные за расписание, руководство, ИТ-служба
Преподаватель Преподаватели, лекторы, инструкторы
Ученик Ученики, студенты, обучающиеся
Сотрудник Воспитательная служба, дежурные, сотрудники надзора, если активен модуль Управление персоналом
Ссылка общего доступа Доступ по подписанной ссылке к точно заданному набору данных

Соответствие этих названий техническим идентификаторам ролей описано на странице Пользователи и роли.

Один и тот же пользователь может иметь несколько ролей. Например, преподаватель, участвующий в составлении расписания, может одновременно иметь роли «Преподаватель» и «Администратор».

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

Кроме того, существуют внутренние роли, предназначенные для команды Omniscol: администрирование платформы, перевод, коммерческая работа и партнёры-реселлеры. Некоторым из этих учётных записей разрешено входить в учётные записи школ в целях технического обслуживания. Тогда они действуют как суперадминистраторы школы, и у них больше возможностей, чем у администратора: импорт необработанных данных в базу данных, включение и отключение платных опций, вход от имени пользователя. Такой доступ вызывает заметные оповещения о входе, а его токены очень быстро истекают. Большие возможности налагают большую ответственность.

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

Настраиваемые роли

Опция Настраиваемые роли позволяет ограничить права учётной записи администратора по модулям и по операциям. Она позволяет делегировать часть администрирования, не предоставляя все глобальные права.

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

Модули

Модули, видимые в стандартной учётной записи:

  • Главная страница (home) — стартовая страница и сводка дня.
  • Расписание (schedules) — просмотр и разовые изменения.
  • Сводная панель (dashboard) — статистика занятости и нагрузки.
  • Управление отсутствиями (absences) — объявления об отсутствии и замещения.
  • Управление расписанием (timetables) — составление, формирование и публикация расписаний.
  • Администрирование (admin) — пользователи, параметры, импорт / экспорт и интеграции.

В зависимости от договора могут появиться и другие модули, в частности Управление персоналом для планирования задач воспитательной службы и надзора.

Несколько школ

Каждая школа логически изолирована на стороне сервера и работает в собственном домене. Данные одной школы не видны другим школам из приложения. Однако по запросу можно включить канал связи между отдельными учётными записями, чтобы обмениваться сведениями о конфликтах занятости кабинетов и преподавателей. Это очень полезно, когда здания используются совместно, или для группы школ, совместно использующих ресурсы.

См. также