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

Загрузка организационной структуры

В этой инструкции описано как загружать организационную структуру и сотрудников компании при использовании VK People Hub.

Вот так выглядит пример готовой оргструктуры внутри портала.

Пример готовой оргструктуры внутри портала

Рисунок. Вид настроенной оргструктуры внутри портала.

Ниже указаны необходимые действия и условия, при выполнении которых пользователи вашей организации увидят в портале VK People Hub похожую оргструктуру и смогут ею успешно пользоваться.

Загрузить пользователей в KeyCloak

Необходимо загрузить пользователей в KeyCloak.

Раздел будет дополнен в следующих релизах.

Заполнить json-файлы для оргструктуры

Для начала необходимо сформировать корректные json-файлы:

  • client_file_processing_order.json
  • employees.json
  • organizations.json

Файлы всегда загружаются вместе, отсутствие какого-либо из трех файлов приведет к ошибке.

client_file_processing_order.json

Пример json-файла организации.

Модель данных клиента

Параметр Обязательность Описание
some_client Да Название вашей организации на английском языке без пробелов
org_file_name Да Название json-файла с иерархией подразделений (organizations.json)
emp_file_name Да Название json-файла с пользователями (employees.json)

employees.json

Файл с пользователями необходимо формировать после того, как пользователи загружены в Keycloak. Важно, чтобы в ID пользователя в Keycloak соответствовал keycloak_attribute_id в json-файле.

Пример json-файла пользователей.

Модель данных пользователя

Параметр Обязательность Описание
keycloak_attribute_id Да ID пользователя в Keycloak
patronymic Нет Отчество
position Нет Должность
is_active Да Признак активности пользователя
organization_id Да Идентификатор организации, в которой состоит пользователь
Параметр organization_id должен соответствовать параметру id подразделения, к которому относится пользователь
Данный параметр находится в файле organizations.json

organizations.json

Пример json-файла организации.

Модель данных организации

Параметр Обязательность Описание
id Да Идентификатор организации Параметр id организации может быть взят при выгрузке оргструктуры из другой системы при переходе с нее в VK People Hub
В таком случае нужно проверить, чтобы все id внутри всех отделов организации внутри оргструктуры были уникальными
Если же оргструктура организации не будет выгружена из какого-либо другого сервиса при переходе в VK People Hub, а должна быть создана с нуля — id каждого отдела внутри организации могут быть созданы по модели UUID
Рекомендуемый стандарт данных — UUID4
Единственное критически важное условие — эти id должны быть уникальными и не должны повторяться.
parent_id Да Идентификатор родительской организации
Для родительской организации внутри оргструктуры указывается parent_id: null
Для остальных подразделений компании parent_id указывает на вышестоящий по иерархии отдел компании
name Да Название организации
leader_keycloak_attribute_id Нет Идентификатор руководителя организации (по пользовательскому атрибуту Keycloak)
Параметр leader_keycloak_attribute_id указывает на идентификатор пользователя - руководителя подразделения
Этот параметр должен соответствовать параметру keycloak_attribute_id этого пользователя из файла employees.json

Подготовка инфраструктуры

Порядок действий по загрузке оргструктуры:

  1. Развернуть Airflow (для этого используем helm-chart с рекомендуемыми values.yaml)

Образы

Требования к Airflow

Установка Airflow

  1. Скачать архив dags.tar.gz по ссылке https://raw.people-hub.ru/airflow/dags-3-60-1.tar.gz и разархивировать:

В разархивированной папке разместить ранее подготовленные json-файлы:

  • в корне папки файл client_file_processing_order.json
  • по пути integration_files/some_client/ файлы organizations.json и employees.json
Итоговые изменения в структуре распакованного архива:
├── dags
│   ├── client_file_processing_order.json
│   ├── integration_files
│   │   └── some_client
│   │       ├── employees.json
│   │       └── organizations.json

Расположение файлов с пользователями и оргструктурой

Рисунок. Расположение файлов с клиентом, пользователями и оргструктурой.

  1. Обратите внимание на следующие переменные в файле values.yaml к helm chart Airflow:
  • В переменной CLIENT_PROCESSING_ORDER_JSON_PATH, должен быть указан путь к файлу клиента оргструктуры:
    - name: "CLIENT_PROCESSING_ORDER_JSON_PATH"
        value: "/opt/airflow/dags/client_file_processing_order.json"
  • В переменнной INTEGRATION_FILES_DIR, файлы с пользователями и организационной структурой в папке с названием клиента оргструктуры
    - name: "INTEGRATION_FILES_DIR"
        value: "/opt/airflow/dags/integration_files"
  1. Заархивировать полученный результат и разместить итоговый архив dags.tar.gz в S3 хранилище с публичным доступом по следующему пути: /ph-media/init/dags.tar.gz

  2. Обратите внимание, что в Keycloak должна быть создана учетная запись для интеграции в realm PH, данные этой учетной записи указываются в файле values.yaml в следующих переменных:

    - name: "KEYCLOAK_API_USERNAME"
        value: "your_user"
    - name: "KEYCLOAK_API_PASSWORD"
        value: "your_password"
  1. После того как json-файлы настроены и помещены в нужные директории, можно перейти к загрузке оргструктуры.

Загрузка и обновление оргструктуры с помощью Airflow

Чтобы загрузить оргструктуру, войдите в сервис Apache Airflow. Для работы в этом сервисе у вас должны быть соответствующие права администратора.

Админпанель Apache Airflow

Рисунок. Админпанель Apache Airflow с выделенной кнопкой запуска обновления оргструктуры.

В административной панели Apache Airflow отображаются предварительно загруженные клиенты оргструктуры организации. Клиент — связка json-файлов сотрудников и организации.

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

По умолчанию клиент автоматически обновляется раз в сутки. Это рекомендуемый период обновления, при котором вероятность ошибок в отображении оргструктуры сведена к минимуму. Обновление оргструктуры позволяет своевременно отображать изменения должностей сотрудников, добавлять и удалять сотрудников, добавлять и удалять отделы внутри компании, и производить прочие изменения внутри оргструктуры организации.

При успешном обновлении оргструктуры число внутри зеленого круга в поле Runs будет соответствовать числу внутри зеленого круга в поле Recent Tasks.

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