< Все темы
Print

Техническое описание системы

1.1 Полное наименование системы и ее условное обозначение

Интернет-портал HRChain (Beehive)

Условное обозначение в тексте: Система.

1.2 Наименование правообладателя:

ООО «ИПИ лаб»

2.1 HRChain (Beehive) (далее «Система») — представляет собой web приложение, в котором можно выделить следующие основные части:

  • Frontend-часть  — Клиентское приложение, интерфейс, открывающийся в браузере у пользователя
  • Backend-часть — Серверная часть, выполняющая приём, обработку и аутентификацию запросов от frontend
  • База данных — Кластер СУБД PostgreSQL 13.x, обеспечивающий хранение и выборку данных.
  • Оперативное хранилище — инстанс Redis, обеспечивающий работу сессий и очереди задач

2.2 Помимо ядра системы, следует отметить так же связанные сервисы, входящие в комплект поставки и выполняющие часть функционала:

  • Courier (Сервис создания, выполнения и управления очередями задач)
  • SSO (Сервис авторизации и управления пользовательской информацией)
  • Surveys (Сервис опросов)
  • Телеграм боты:
  • beetestbot (Бот прохождения оценок)
  • beeadaptbot (Бот прохождения адаптация пользователей)
  • Metabase (Аналитический блок, third-party система)

Аутентификация запроса к системе происходит с помощью ключа сессии, хранящегося в Cookie. При отсутствии данного ключа, либо авторизованной сессии, ассоциированной с ним, клиент будет перенаправлен на сервис авторизации (SSO), который, при успешной авторизации, создаст авторизованную сессию для данного пользователя.

Это позволит выполнять дальнейшие запросы к системе, а так же позволит системе идентифицировать пользователя, выполняющего данный запрос.

Существует внутреннее разграничение прав доступа к определённым методам API системы на основании владельца данных или ролевой системы, позволяющее обеспечить конфиденциальность данных.

Пароли пользователей никогда не хранятся в открытом виде и записываются в бд после применения односторонней хэш-функции.

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-части.
 

Система ориентирована на пользователей, владеющих базовыми навыками работы с web-приложениями, интернет-сайтами, корпоративными порталами. Система предназначена для всех категорий пользователей, основным условием возможности эксплуатации является наличие ПК и доступа в сеть Интернет.

Для использования платформы рабочее место пользователя должно быть организовано ПК с установленной ОС Windows 7-11 (32, 64 бит) на версиях браузеров не ниже указанных:

  • Safari 12+
  • Яндекс.Браузер 21.2.2+
  • Mozilla Firefox 69+
  • Google Chrome 77.0+

Операционная система — Ubuntu Linux 22.04 LTS
 Необходимое для запуска ПО — nginx, docker (latest), docker-compose(latest), Postgresql 13
 Рекомендуемые требования на10 000 пользователей:

Конфигурация (вычисляется)
RolevCpuRAM, GBHDD, GB
App Node2740134
DB2040334
Storage24667
LB2410
Backup001001
Monitoring4467
Mail system2234
Итого51882146

 

Рекомендуемые требования на 20 000 пользователей:

Конфигурация (вычисляется)
RolevCpuRAM, GBHDD, GB
App Node5480267
DB4080667
Storage471334
LB4710
Backup002001
Monitoring77134
Mail system4467
Итого1021744279


 

Оглавление