Skip to content

Синхронизация групп

Dispace запрашивает данные из ЦИУ о группах.

Модели

Процессы

Запрос информации

DiSpace запрашивает данные у ЦИУ по ссылке (пример ссылки ниже). В ответ приходят данные в формате JSON.

https://api.ciu.nstu.ru/v1.0/sync_ido/study_groups/${workspaceID}?decode_unicode_escape=1&json_indent=1

Параметры запроса:

  • workspaceID - int - обязательный параметр, ID рабочего пространства
  • decode_unicode_escape - обязательный параметр.
  • json_indent - обязательный параметр.

Периодичность синхронизации

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

Обработка информации

Данные от ЦИУ приходят в формате JSON, ниже указаны какие конкретно атрибуты передаются: - FK_STUDY_GROUP — id_ciu группы
- NAME — название группы - ID_FACULTET — id_ciu факультета. - ID_WORK_SPACE — наше id пространства (например, 100 — заочное, 200 — очное). - YEAR_ENR — год набора (набор происходит в сентябре).

После получения списка всех групп ЦИУ по рабочим пространствам, также получаем из базы список наших активных групп (status = 1) и начинается сверка этих списков.

Делаем обход по списку групп из ЦИУ. Для каждой такой группы из ЦИУ, в модели группы DiSpace происходят следующие процессы: - Получаем группу из нашей БД с тем же id_ciu. - Если группа из ЦИУ найдена в DiSpace: - Обновляем title, faculty_id, workspace_id. - Если эта группа у нас закончила обучение (status = 2), включаем её (status → 1). - Если из ЦИУ пришло явное указание года набора year и он отличается у нашей группы, доверяем ЦИУ, обновляем его. - Если группа по id_ciu не найдена, ищем у нас по тому же названию. - Если такая группа найдена и id_ciu у неё не задан, записываем его. - Если группа у нас не найдена по названию или id_ciu, создаем её.

Отчисление

Считается, что в списке от ЦИУ приходят только актуальные группы. Поэтому отчисляем оставшиеся наши группы в рабочем пространстве, которые не затронули в алгоритме обновления выше. У отчисляемых групп, которые не входят в Исключение 1 и 2, устанавливается статус → 2. Всем студентам в отчисленных группах устанавливается статус → 3 (отчислены).

  • Исключение 1: пространство магистратуры и абитуриентов — в них никого не отчисляем никогда, так как риск ошибки слишком велик.
  • Исключение 2: группы со строками в названии
  • Демо
  • Олимпиада
  • Пробные (устарело)
  • ШР-2020 (устарело)
  • РУМЦ (устарело)
  • Преподаватели (устарело)
  • ФПК-ЕСКД (устарело)
  • ЛДвЭЭС (устарело)
  • Группы с ID (устаревшая проверка):
  • 7827, 12550, 12546, … ,13801.

После выполнения всех операций, если выбрана соответствующая опция (по умолчанию выбрана), запускается следующий скрипт синхронизации студентов.

Назад