Документация "Кадровый резерв"

Описание технической архитектуры программного обеспечения «Кадровый резерв»

1. Общие сведения

«Кадровый резерв» представляет собой серверное программное обеспечение для поиска, фильтрации и ранжирования кандидатов.
Система предназначена для локального развертывания в инфраструктуре заказчика и взаимодействует с внешними информационными системами через API.

2. Архитектурный подход

Программное обеспечение построено как контейнеризированный серверный сервис.
Основные архитектурные принципы:
  • развертывание внутри информационного контура заказчика;
  • отсутствие необходимости в собственном пользовательском интерфейсе;
  • взаимодействие через HTTP API;
  • обмен данными в формате JSON;
  • единое хранилище структурированных данных и поисковых индексов в PostgreSQL;
  • отделение входных информационных систем заказчика от внутренней логики поиска и ранжирования;
  • возможность автономной работы без обязательного обращения к внешним сервисам.

3. Основные компоненты

3.1. Информационные системы заказчика

Внешние системы являются источником:
  • профилей кандидатов;
  • исходных данных резюме;
  • поисковых запросов;
  • структурированных критериев;
  • идентификаторов вакансий, работодателей и других тегов.
Они же получают результаты поиска и сведения о кандидатах.

3.2. API-сервис «Кадровый резерв»

API-сервис реализован на Go.
Он выполняет:
  • прием HTTP-запросов;
  • проверку и обработку входных данных;
  • сохранение и обновление профилей кандидатов;
  • получение справочников;
  • запуск поиска и фильтрации;
  • формирование ответа в формате JSON.

3.3. Модуль обработки и нормализации

Модуль подготавливает данные кандидатов к хранению и поиску.
Основные задачи:
  • приведение входных данных к внутренней структуре;
  • подготовка текстовых представлений кандидата;
  • обработка сведений о навыках, опыте и работодателях;
  • подготовка длинных текстовых данных к индексированию;
  • формирование поисковых структур.

3.4. PostgreSQL

PostgreSQL является основным средством хранения данных системы.
В PostgreSQL размещаются:
  • структурированные профили кандидатов;
  • справочники;
  • исходные JSON-объекты резюме;
  • текстовые представления кандидатов;
  • поисковые индексы;
  • служебные данные приложения.
Для полнотекстового поиска используются возможности PostgreSQL и поисковые расширения поставки, реализующие поиск по алгоритму BM25.

3.5. Модуль поиска и фильтрации

Модуль выполняет:
  • поиск по свободному тексту;
  • расчет текстовой релевантности;
  • применение структурированных критериев;
  • ограничение области поиска по тегам;
  • расчет показателей соответствия фильтрам;
  • подготовку данных для ранжирования.

3.6. Модуль ранжирования

Модуль формирует итоговый порядок кандидатов и рассчитывает метрики, возвращаемые внешней системе.
В зависимости от конфигурации может применяться дополнительная нормализация оценки относительно эталонных результатов.

4. Поток данных

Типовая последовательность обработки:

5. Развертывание

Программное обеспечение разворачивается локально в инфраструктуре заказчика.
Используемое окружение:
  • Alpine Linux 3.22 или аналог;
  • Docker;
  • Docker Compose;
  • PostgreSQL;
  • Go 1.25.
Система виртуализации, балансировщик нагрузки и облачное хранилище не являются обязательными компонентами программного обеспечения.

6. Сетевое взаимодействие

Внешнее взаимодействие осуществляется через HTTP API.
Конкретные сетевые адреса и порты определяются при развертывании программного обеспечения в инфраструктуре заказчика.
В промышленном окружении доступ к API рекомендуется ограничивать средствами сетевой инфраструктуры заказчика.

7. Хранение данных

Все основные данные программного обеспечения размещаются внутри инфраструктуры заказчика.
К ним относятся:
  • данные кандидатов;
  • исходные резюме;
  • справочники;
  • поисковые структуры;
  • служебная информация.
Применение внешнего облачного хранилища для основной работы системы не требуется.

8. Автономность

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

9. Масштабирование

Производительность зависит от:
  • количества кандидатов;
  • объема текстовых данных;
  • количества одновременных поисковых запросов;
  • характеристик сервера PostgreSQL;
  • выделенных вычислительных ресурсов.
Масштабирование выполняется средствами инфраструктуры заказчика путем изменения ресурсов серверов и параметров развертывания.

10. Итоговая структура

Архитектура «Кадрового резерва» включает пять основных логических частей:
  1. информационные системы заказчика;
  2. API-сервис на Go;
  3. модуль обработки и нормализации;
  4. PostgreSQL как единое хранилище данных и поисковых индексов;
  5. модули поиска, фильтрации и ранжирования.