Перейти к содержанию

Импорт данных заказчика

Общая информация

ПУМА использует данные организации о структуре подразделений и списке персон (сотрудники, студенты, выпускники и т.д.).

Данные импортируются в БД ПУМЫ из двух CSV файлов:

  • primary_depts.csv – дерево подразделений
  • primary_persons.csv – список персон

Файлы располагаются на сетевой папке сервера ПУМЫ и должны обновляться внешней системой периодически (раз в сутки).

Импорт данных производится ПУМОЙ по расписанию. Расписание импорта определяется в конфигурационном файле puma-common.yml, в разделе puma.scheduler.sync.orgdata (см. документ «ПУМА – Руководство администратора»).

На момент импорта информация в файлах должна быть актуальной.

Ручное редактирование списков

ПУМА позволяет также добавлять и удалять подразделения и персон вручную (например, внешние организации или подразделения, не обозначенные в базе организации). Добавленные вручную подразделения и персоны не участвуют в процессе импорта и остаются нетронутыми, независимо от содержимого CSV файлов.

Требования к формату CSV файлов

  • CSV файл содержит таблицу полей, разделённых запятой.
  • Первая строка определяет набор полей.
  • Вторая и последующая строки определяют импортируемые записи.
  • Данные в записях должны быть экранированы в соответствии со стандартом RFC 4180, см. https://ru.wikipedia.org/wiki/CSV
  • Пустые значения должны быть обозначены строкой “NULL”.

Список подразделений

Структура файла

Файл primary_depts.csv описывает дерево подразделений организации.

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

Список полей CSV файла:

Поле Тип Описание
orgDeptId String (128) Уникальный идентификатор подразделения
orgParentDeptId String (128) Идентификатор родительского подразделения. «NULL», если родительского подразделения не существует.
title String (1024) Полное название подразделения
titleShort String (1024) Сокращённое название подразделения
study Boolean true – если подразделение является учебным, false – если административным.
location String (128) Географическое расположение подразделения (город и т.п.). «NULL», если не указано.
listOrder Integer Порядок сортировки соседних подразделений в дереве. Используется, если нужно отобразить определенные подразделения вверху списка. В случае равенства значений listOrder, подразделения сортируются по title. Значение по умолчанию – 1000.

Пример содержимого файла primary_depts.csv:

orgDeptId,orgParentDeptId,title,titleShort,study,location,listOrder
1106,NULL,"Новый Государственный Университет",НовГУ,false,"Великий Новгород",1000
1107,1106,"Институт гуманитарный",ИГУМ,true,"Великий Новгород",1000
1388,1107,"Дирекция гуманитарного института","Дирекция ИГУМ",false,"Великий Новгород",1000
1588617,1107,"Кафедра журналистики",КЖУР,true,"Великий Новгород",1000

Обновление данных

При повторном импорте данных система действует следующим образом:

  1. Если подразделение с указанным orgDeptId отсутствует в БД ПУМЫ, оно будет создано.
  2. Если подразделение с указанным orgDeptId уже существует в БД ПУМЫ – его данные будут обновлены (включая ссылку на родительское подразделение).
  3. Если подразделение, импортированное ранее, отсутствует в CSV файле, оно будет помечено как удалённое. Физическое удаление из базы не производится, чтобы не нарушать ссылки на данное подразделение.

Список персон

Структура файла

Файл primary_persons.csv описывает список персон организации (сотрудники, студенты, выпускники и т.д.).

Каждая строка содержит одну аффилиацию персоны (должность, данные студента и т.д.).

Одна персона может быть описана несколькими строками CSV файла. В таком случае значение orgPersonId, а также личные данные (ФИО и пр.), должны быть одинаковыми во всех строках.

При импорте в ПУМУ, все строки CSV файла с одинаковым orgPersonId объединяются в одну запись о персоне.

Некоторые поля определяют значения справочников (уровень образования, и пр.) из раздела ПУМЫ «Справочники/Словари». Данные поля должны содержать значение «Имя элемента» из справочника. Например, для учёного звания «Профессор», значение должно быть “professor”.

Поле Тип Описание
orgPersonId String (128) Уникальный идентификатор персоны в инфраструктуре организации. Если человек является одновременно сотрудником и студентом – данное значение также должно совпадать у обеих аффилиаций. В противном случае, в ПУМЕ будут созданы разные записи для одного человека.
lastName String (64) Фамилия
firstName String (64) Имя
midName String (64) Отчество
birthdate Date Дата рождения (в формате YYYY-MM-DD)
educationLevel Dictionary Уровень образования
academicDegree Dictionary Учёная степень
academicRank Dictionary Учёное звание
affType Dictionary Аффилиация: Тип аффилиации (сотрудник, студент, выпускник и т.д.)
orgDeptId String (128) Аффилиация: Идентификатор подразделения (должен соответствовать orgDeptId в файле primary_depts.csv)
orgPostId String (128) Аффилиация: Уникальный идентификатор в штатном расписании
empType Dictionary Аффилиация: Тип трудоустройства (Штат/ВНС)
postType Dictionary Аффилиация: Тип должности (Осн/Совм)
postName String (255) Аффилиация: Название должности (для студентов или выпускников - указать «Студент группы XXXX» и т.п.)
postCat Dictionary Аффилиация: Категория должности
teacher Boolean Аффилиация: Преподаватель
scientist Boolean Аффилиация: Научный работник
governmentId String (64) Последние 4 цифры СНИЛС

Пример содержимого файла:

orgPersonId,lastName,firstName,midName,birthDate,gender,educationLevel,academicDegree,academicRank,affType,orgDeptId,orgPostId,empType,postType,postName,postCat,teacher,scientist,governmentId
113,Птичкин,Евгений,Александрович,1971-01-01,male,higher,NULL,NULL,employee,111,EMP-111,internal,primary,"Старший научный сотрудник",scientist,false,true,3333
113,Птичкин,Евгений,Александрович,1971-01-01,male,higher,NULL,NULL,employee,111,EMP-35220017,internal,secondary,Лаборант,teacher-college,false,false,3333
255,Сорокина,Марина,Павловна,1971-02-02,female,higherMaster,NULL,NULL,employee,222,EMP-222,internal,primary,"Старший преподаватель",teacher,true,false,4444
445,Кулешова,Татьяна,Валерьевна,1961-01-01,female,higher,NULL,NULL,employee,333,EMP-333,internal,primary,"Преподаватель",other,false,false,5555

При повторном импорте данных система действует следующим образом:

  1. Если персона не существует в БД ПУМЫ – персона добавляется.
  2. Если персона существует в БД ПУМЫ, но отсутствует в CSV файле – она помечается в БД ПУМЫ как скрытая.
  3. Если персона существует, но изменяются личные данные – они обновляются в базе ПУМЫ.
  4. Если персона существует, но изменён список аффилиаций – он обновляется в базе ПУМЫ.

Последнее обновление: 30-09-2024 Скачать