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. Итоговая структура
Архитектура «Кадрового резерва» включает пять основных логических частей:
- информационные системы заказчика;
- API-сервис на Go;
- модуль обработки и нормализации;
- PostgreSQL как единое хранилище данных и поисковых индексов;
- модули поиска, фильтрации и ранжирования.