Архитектура, модули и роли
На этой странице кратко описаны архитектура приложения 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) — пользователи, параметры, импорт / экспорт и интеграции.
В зависимости от договора могут появиться и другие модули, в частности Управление персоналом для планирования задач воспитательной службы и надзора.
Несколько школ
Каждая школа логически изолирована на стороне сервера и работает в собственном домене. Данные одной школы не видны другим школам из приложения. Однако по запросу можно включить канал связи между отдельными учётными записями, чтобы обмениваться сведениями о конфликтах занятости кабинетов и преподавателей. Это очень полезно, когда здания используются совместно, или для группы школ, совместно использующих ресурсы.