Импорт данных заказчика
Общая информация
ПУМА использует данные организации о структуре подразделений и списке персон (сотрудники, студенты, выпускники и т.д.).
Данные импортируются в БД ПУМЫ из двух 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
Обновление данных
При повторном импорте данных система действует следующим образом:
- Если подразделение с указанным orgDeptId отсутствует в БД ПУМЫ, оно будет создано.
- Если подразделение с указанным orgDeptId уже существует в БД ПУМЫ – его данные будут обновлены (включая ссылку на родительское подразделение).
- Если подразделение, импортированное ранее, отсутствует в 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
При повторном импорте данных система действует следующим образом:
- Если персона не существует в БД ПУМЫ – персона добавляется.
- Если персона существует в БД ПУМЫ, но отсутствует в CSV файле – она помечается в БД ПУМЫ как скрытая.
- Если персона существует, но изменяются личные данные – они обновляются в базе ПУМЫ.
- Если персона существует, но изменён список аффилиаций – он обновляется в базе ПУМЫ.