Техническое описание системы
1. Общие сведения о системе
1.1 Полное наименование системы и ее условное обозначение
Интернет-портал HRChain (Beehive)
Условное обозначение в тексте: Система.
1.2 Наименование правообладателя:
ООО «ИПИ лаб»
2. Общее описание системы
2.1 HRChain (Beehive) (далее «Система») — представляет собой web приложение, в котором можно выделить следующие основные части:
- Frontend-часть — Клиентское приложение, интерфейс, открывающийся в браузере у пользователя
- Backend-часть — Серверная часть, выполняющая приём, обработку и аутентификацию запросов от frontend
- База данных — Кластер СУБД PostgreSQL 13.x, обеспечивающий хранение и выборку данных.
- Оперативное хранилище — инстанс Redis, обеспечивающий работу сессий и очереди задач
2.2 Помимо ядра системы, следует отметить так же связанные сервисы, входящие в комплект поставки и выполняющие часть функционала:
- Courier (Сервис создания, выполнения и управления очередями задач)
- SSO (Сервис авторизации и управления пользовательской информацией)
- Surveys (Сервис опросов)
- Телеграм боты:
- beetestbot (Бот прохождения оценок)
- beeadaptbot (Бот прохождения адаптация пользователей)
- Metabase (Аналитический блок, third-party система)
3. Общее описание механизма аутентификации и авторизации
Аутентификация запроса к системе происходит с помощью ключа сессии, хранящегося в Cookie. При отсутствии данного ключа, либо авторизованной сессии, ассоциированной с ним, клиент будет перенаправлен на сервис авторизации (SSO), который, при успешной авторизации, создаст авторизованную сессию для данного пользователя.
Это позволит выполнять дальнейшие запросы к системе, а так же позволит системе идентифицировать пользователя, выполняющего данный запрос.
Существует внутреннее разграничение прав доступа к определённым методам API системы на основании владельца данных или ролевой системы, позволяющее обеспечить конфиденциальность данных.
Пароли пользователей никогда не хранятся в открытом виде и записываются в бд после применения односторонней хэш-функции.
4. Описание элементов системы
4.1. Описание системы
4.1.1. Описание frontend-части ядра системы:
Frontend-часть представляет собой SPA-приложение, реализующее пользовательский интерфейс. Основные технологии, использованные при разработке: Javascript, VueJS, Vuetify.
Содержит меню и основную зону приложения, в которой отображается выбранный раздел.
Основные крупные разделы:
- Профиль пользователя
- Мой прогресс
- Компания
- Команда
- Отчёты (Открываются в отдельной вкладке)
- Карты развития (Открываются в отдельной вкладке)
Frontend выполняет XHR запросы к API backend-части, обеспечивает преобразование ответов сервера при необходимости и осуществляет отображение данных пользователю.
Так же существует Админ панель frontend-части системы с ограниченным доступом, реализованная с помощью Javascript и ExtJS. Админ панель является отдельным SPA-приложением и содержит в себе средства настройки реестра вопросов, материалов и специализаций.
Переход между Админ панелью и пользовательской частью выполняется с помощью нажатия кнопок в интерфейсе и поддерживает сквозную авторизацию.
4.1.2. Описание backend-части ядра системы:
Backend-часть представляет собой приложение, реализовывающее API системы, аутентификацию запросов и их выполнение, выполнение периодических задач (отправка напоминаний и т.д).
Основные технологии, использованные при разработке: Python 3.9, Flask, Swagger Open API.
При необходимости, в ходе выполнения запроса, backend ядра системы осуществляет запросы к backend-частям связанных сервисов (см. п. 1.2) для получения какой-либо информации или выполнения определённых действий (например получение списка опросов, создание задачи на отправку сообщения пользователю на email или телеграм-бота и т.д.), а так же выполняет запросы к БД.
4.2. Описание SSO
SSO представляет собой web приложение, предназначенное для авторизации, аутентификации и управления пользовательской информацией:
4.2.1. Пользовательская frontend-часть представляет собой SPA-приложение, реализовывающее пользовательский интерфейс. Основные технологии, использованные при разработке: Javascript, VueJS, Vuetify.
Содержит страницы авторизации, смены и восстановления пароля, подтверждения email
4.2.2. Административная frontend-часть представляет собой SPA-приложение, реализовывающее административный интерфейс. Основные технологии, использованные при разработке: Javascript, VueJS, Vuetify.
Содержит страницы авторизации, управления подключенными проектами, инстансами, ролями, правами, пользователями
4.2.3 Backend-часть представляет собой приложение, реализовывающее API для функционирования обеих frontend-частей и API для подключенных к системе приложений
4.3. Описание Surveys
Surveys представляет собой web приложение, предназначенное создания, редактирования и прохождения различных опросов и тестов
4.3.1. Frontend-часть представляет собой SPA-приложение, реализовывающее пользовательский интерфейс. Основные технологии, использованные при разработке: Javascript, VueJS, Vuetify.
Содержит страницы создания и редактирования опросов, страницу прохождения опросов
4.3.2. Backend-часть представляет собой приложение, реализовывающее API для функционирования frontend-части и API для работы с сущностями опросов из внешних приложений.
4.4. Описание БД
БД Системы представляет собой PostgreSQL кластер, содержащий в себе набор таблиц, представлений и рутин, обеспечивающих хранение, получение и изменение данных.
Данные сущности сгруппированы по различным dbname кластера, в соответствии с сервисом владельцем:
- beehive (Ядро)
- auth_service_bobday (SSO)
- bots (ТГ-Боты)
- courier (Курьер, очереди задач)
- surveys (Сервис опросов)
4.5. Описание Courier
Courier представляет собой python-приложение, использующее Redis+Celery для организации асинхронного выполнения задач, разделенных на несколько очередей. Поддерживается автоматическое масштабирование количества процессов-обработчиков в соответствии с текущей нагрузкой.
Типичные задачи — отправка писем, отправка сообщений в ТГ-ботов, организация внутренней коммуникации между service и poller частью бота (см. п.7), а также выполнение долгих операций других сервисов для обеспечения общей производительности. Имеет собственный API для получения задач от связанных сервисов и выдачи им текущих статусов задач.
Не взаимодействует напрямую с пользователем (не имеет собственной frontend-части).
4.6. Описание Телеграм ботов
Боты beeadaptbot и beetestbot имеют общую архитектуру и состоят из двух основных частей:
- poller — собственно телеграм бот, python-приложение, обеспечивающее получение и маршрутизацию сообщений в пользовательских ТГ-чатах
- service — Python-Flask приложение, поддерживающее горизонтальное масштабирование, осуществляющее обработку команд от poller’а и запросов от связанных сервисов через свой API. Осуществляет отправку ответов пользователям в тг-чаты, выполняет запросы к backend-частям связанных сервисов для получения необходимой информации.
Коммуникация между poller и service частями бота осуществляется через задачи Courier, что обеспечивает как асинхронность обработки команд, так и возможность легкого горизонтального масштабирования service-части.
5.Требования к пользователям и рабочим местам пользователей
Система ориентирована на пользователей, владеющих базовыми навыками работы с web-приложениями, интернет-сайтами, корпоративными порталами. Система предназначена для всех категорий пользователей, основным условием возможности эксплуатации является наличие ПК и доступа в сеть Интернет.
Для использования платформы рабочее место пользователя должно быть организовано ПК с установленной ОС Windows 7-11 (32, 64 бит) на версиях браузеров не ниже указанных:
- Safari 12+
- Яндекс.Браузер 21.2.2+
- Mozilla Firefox 69+
- Google Chrome 77.0+
6.Физическая схема и схема архитектуры платформы


7.Требования к серверному программному обеспечению и инфраструктуре для коробочного решения
Операционная система — Ubuntu Linux 22.04 LTS
Необходимое для запуска ПО — nginx, docker (latest), docker-compose(latest), Postgresql 13
Рекомендуемые требования на10 000 пользователей:
| Конфигурация (вычисляется) | |||
| Role | vCpu | RAM, GB | HDD, GB |
| App Node | 27 | 40 | 134 |
| DB | 20 | 40 | 334 |
| Storage | 2 | 4 | 667 |
| LB | 2 | 4 | 10 |
| Backup | 0 | 0 | 1001 |
| Monitoring | 4 | 4 | 67 |
| Mail system | 2 | 2 | 34 |
| Итого | 51 | 88 | 2146 |
Рекомендуемые требования на 20 000 пользователей:
| Конфигурация (вычисляется) | |||
| Role | vCpu | RAM, GB | HDD, GB |
| App Node | 54 | 80 | 267 |
| DB | 40 | 80 | 667 |
| Storage | 4 | 7 | 1334 |
| LB | 4 | 7 | 10 |
| Backup | 0 | 0 | 2001 |
| Monitoring | 7 | 7 | 134 |
| Mail system | 4 | 4 | 67 |
| Итого | 102 | 174 | 4279 |