Организационная структура — это сервис, который позволяет загружать, хранить, отображать и редактировать иерархии между организациями, подразделениями и сотрудниками.
В данном документе описано подключение структуры организации в случаях, когда:
Документ предназначен для использования администраторами организации.
Управление организационной структурой в Панели администратора VK WorkSpace — в документе описано управление организационной структурой в Панели администратора VK WorkSpace.
Как работать с сервисом Организационная структура — в документе описана работа пользователей со организационной структурой — поиск сотрудников и организаций, просмотр иерархии отделов и иерархии между организациями.
Архитектура и описание системы — в документе представлено описание сервисов, обеспечивающих работу функциональности оргструктуры. Не является частью публичной документации, обратитесь к представителю VK Tech, чтобы ознакомиться с документом.
Чтобы подключить функциональность оргструктуры в административной Панели VK WorkSpace, обратитесь в техническую поддержку или к вашему персональному менеджеру.
После подключения функциональности управление оргструктурой происходит в Панели администратора VK WorkSpace в разделе Структура организаций.
Вы можете создать структуру организаций вручную или загрузить ее при помощи XLSX-файла. Подробные инструкции по управлению оргструктурой в Панели администратора VK WorkSpace представлены в документации.
После создания оргструктуры в административной Панели VK WorkSpace подключите структуру организации в Мессенджер и ВКС:
-
В конфигурационном файле /usr/local/nginx-im/html/myteam/myteam-config.json укажите настройки отображения мини-аппа структуры организации в секции orgstructure:
"services": {"config": {"orgstructure": {"external": false,"needs_auth": true,"url": "https://webim.<YOUR_DOMAIN>/webapps/orgstructure/index.html","url-dark": "https://webim.<YOUR_DOMAIN>/webapps/orgstructure/index.html","staff-visible-part-index": 2,"new": true,"is-public": false,}где:
-
url — webim-ссылка вида
https://webim.<YOUR_DOMAIN>/webapps/orgstructure/index.html. -
url-dark —webim-ссылка вида
https://webim.<YOUR_DOMAIN>/webapps/orgstructure/index.html. -
staff-visible-part-index — количество пользователей, которые будут отображаться в оргструктуре подразделения над кнопкой «Показать всех». Значение по умолчанию — 2.
-
new — укажите true.
-
is-public — укажите false.
-
-
Включите отображение вкладки оргструктуры в клиентском приложении:
"services": {"disposition": {"desktop": { #включаем отображение сервиса оргструктуры в десктоп-версии"leftbar": ["orgstructure"]},"mobile": { #включаем отображение сервиса оргструктуры в мобильном приложении"services": ["orgstructure"] -
Для инсталляции на одну виртуальную машину выполните команду:
HELMWAVE_USE_LOCAL_REPO_CACHE=true hwup -t godmodДля кластерной инсталляции:
HELMWAVE_USE_LOCAL_REPO_CACHE=true HELMWAVE_ENV_NAME=cluster hwup -t godmod -
Перезапустите под в технологическое окно (может приводить к сбою в новых подключениях):
kubectl delete pods -n vkteams -l app=myteam-admin
После данных настроек в разделе сервисов Супераппа появится иконка для работы со структурой организации.
Если вы не используете Wildcard-сертификаты, добавьте SSL-сертификаты для поддомена files-n.<ваш домен>. Этот поддомен используется для функциональности оргструктуры в Мессенджер и ВКС.
-
На сервере Мессенджер и ВКС в конфигурационном файле /usr/local/nginx-im/confv2/nginx.conf укажите IP-адрес сервера VK WorkSpace в случае инсталляции VK WorkSpace на одну виртуальную машину. Если у вас распределенная инсталляция VK WorkSpace, укажите IP-адреса серверов с ролью «фронт»:
geo $prod_ip {127.0.0.0/8 1;10.32.0.0/16 1;default 0;} -
Перезагрузите сервер:
nginx reload
При отсутствии интеграции с Почтой VK WorkSpace функциональность оргструктуры в Мессенджер и ВКС обеспечивают сервисы:
- Sys-org-adapt — наполняет оргструктуру Мессенджера и ВКС, используя внешний источник данных о пользователях и организациях.
- Org-nomail-adapt — заполняет поле «О себе» в профиле пользователя на основании внешнего источника данных о пользователях и организациях.
Более подробное описание сервисов представлено в документе «Архитектура и описание системы» (не является частью публичной документации, обратитесь к представителю VK Tech, чтобы ознакомиться с документом).
Сервис Sys-org-adapt работает с внешним источником данных о пользователях и организациях по описанному ниже API.
Метод позволяет получить информацию о подразделениях:
- название подразделения;
- уровень вложенности подразделения в иерархии оргструктуры;
- почта руководителя.
Входные данные
Get <DOMAIN>/api/v2/units/
где <DOMAIN> — домен внешнего источника данных о пользователях и организациях.
Ограничения
Данный метод требует авторизации.
Для авторизации сервис Sys-org-adapt передает в заголовке Authorization авторизационный токен, который можно настроить в конфигурационном файле сервиса. Чтобы сделать это, перейдите в /usr/local/etc/sys-org-adapt-1.yaml и укажите в поле api_key авторизационный токен:
sys:api_key: "TOKEN"
Параметры
Имя | Тип | Описание |
|---|---|---|
page *required | string | Номер страницы |
per_page *required | string | Количество подразделений на странице |
exclude_hidden | boolean | Если в запросе передано это значение, то в ответе не передаются подразделения, которые должны быть скрыты в оргструктуре Мессенджер и ВКС |
Пример запроса для получения подразделений
curl https://<DOMAIN>/api/v2/units/?page=1&per_page=100&exclude_hidden=true
Формат ответа
{"objects": [{"id": 2, # идентификатор подразделения"parent_id": 1, # идентификатор родительского подразделения"email": "i_ivanov@YOUR_DOMAIN.ru", # почта руководителя подразделения"level": 7, # уровень вложенности подразделения при отсчете от корневого подразделения (level: 0)"name": "Юнит № 1", # название подразделения},],"meta" : {"next": 2 # следующая страница}}
Метод позволяет получить информацию о пользователях:
- название должности;
- название подразделения, в котором работает пользователь;
- почта пользователя.
Также позволяет ограничивать добавление в оргструктуру технических аккаунтов и неактивных пользователей.
Входные данные
Get <DOMAIN>/api/v2/users
где <DOMAIN> — домен внешнего источника данных о пользователях и организациях.
Ограничения
Данный метод требует авторизации.
Для авторизации сервис Sys-org-adapt передает в заголовке Authorization авторизационный токен, который можно настроить в конфигурационном файле сервиса. Чтобы сделать это, перейдите в /usr/local/etc/sys-org-adapt-1.yaml и укажите в поле api_key авторизационный токен:
sys:api_key: TOKEN
Параметры
Имя | Тип | Описание |
|---|---|---|
page *required | string | Номер страницы |
per_page *required | string | Количество подразделений на странице |
end_of_work__isnull | boolean | Если в запросе значение true, то в ответе передаются только те сотрудники, которые еще работают в компании |
Пример запроса для получения пользователей
curl https://<DOMAIN>/api/v2/users/?page=1&per_page=100&end_of_work__isnull=true
Формат ответа
{"objects": [{"appointment_name": 1, # название должности пользователя"unit_id": 2, # подразделение, в котором работает пользователь"email": "i_ivanov@YOUR_DOMAIN.ru", # почта пользователя"is_technical_account": false # если аккаунт технический, он не будет добавлен в оргструткуру"is_active": true # будут добавлены только активные пользователи"end_of_work": "2023-01-01" # если пользователь уволен уже не работает, то он не будет добавлен в оргструткуру},],"meta" : {"next": 2 # следующая страница}}
Реализуйте методы API, описанные выше.
Чтобы сервис Sys-org-adapt начал обходить внешний источник данных о пользователях и организациях, необходимо включить синхронизацию в etcd:
etcdctl --endpoints [ХОСТ_ETCD]:[ПОРТ_ETCD] put /vars/services/sys_org_adapt/production/public/service/unit_tree_updater_enabled true
Пример команды:
etcdctl --endpoints etcd.im-etcd.svc.cluster.local:2379 put /vars/services/sys_org_adapt/production/public/service/unit_tree_updater_enabled true
Чтобы выгружать значение поля «О себе» из внешнего источника оргструктуры в профиль пользователя Мессенджер и ВКС, необходимо:
-
В конфигурационном файле /usr/local/etc/nomail-1.conf добавить следующие строчки:
nomail.connector.additional.extra.fields.enabled "true"nomail.keycloak.additional.extra.fields organization,department,position,mobilenomail.keycloak.about.fields [$sys:organization](vkteams://miniapp/orgstructure/?unitId=$sys:organizationid)\n[$sys:department](vkteams://miniapp/orgstructure/?unitId=$sys:departmentid)\n$sys:position\n$sys:syslink\n\nРуководитель:\n[$sys:leadfullname]({https://u.{DOMAIN}/}/profile/$sys:leademail)nomail.connector.url {адрес org-nomail-adapt}nomail.connector.method querynomail.keycloak.compound.about.connectors.enabled false -
Перезапустить сервис Nomail:
systemctl restart nomail-*
Чтобы номер телефона пользователя отображался в карточке контакта отдельным полем, необходимо:
-
В конфигурационных файлах сервиса Front
/usr/local/etc/front-1.conf
/usr/local/etc/front-2.conf
/usr/local/etc/front-3.conf
/usr/local/etc/front-4.conf
указать для поля userInfo.phone_from_prof_st значение true:
userInfo.phone_from_prof_st: true -
Перезапустить сервис Front:
systemctl restart front-* -
В конфигурационном файле сервиса Nomail /usr/local/etc/nomail-1.conf указать для поля user.phone_filed значение "mobile":
user.phone_filed: "mobile" -
Перезапустить сервис Nomail:
systemctl restart nomail-* -
В конфигурационный файл сервиса Prof-st /usr/local/etc/prof-st-1.conf добавить следующие строчки:
app_anketa_phone_can_be_string trueapp_fb_sync_create trueuser.phone_filed "mobile" -
Перезапустить сервис Prof-st:
systemctl restart prof-st-* -
В конфигурационный файл сервиса Feedog /oap/feedog_srv_post.tcl добавить строчку:
set enableValidatePhone 0 -
Перезапустить сервис Feedog :
cpsh 4322restart_job feedog
Технический писатель: Белова Ирина