Skip to content

PrudyvusP/egrul_fts_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

egrul_fts_api

egrul_fts_api workflow

EGRUL FTS API - сервис по работе с юридическими лицами из ЕГРЮЛ. Применяется как источник знаний для CRM-систем. Сведения о ликвидированных организациях не обрабатываются.


Django DjangoREST Postgres GitHub Actions Docker

Установка

Установить проект:

git clone https://github.com/PrudyvusP/egrul_fts_api.git && cd "$(basename "$_" .git)"

Создать файл с переменными окружения, (пример тут):

nano infra/.env

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

Перейти в директорию infra и запустить последовательно следующие команды от пользователя с правами root:

cd infra/
docker-compose up --build --d
docker-compose exec web python3 manage.py migrate
docker-compose exec web python3 manage.py collectstatic

Перейти по адресу и убедиться в работоспособности сервиса.

Документация

Документация по стандарту OPENAPI доступна в виде Redoc или Swagger.

Добавление данных

Реальные данные

Сведения из ЕГРЮЛ предоставляются ФНС России в формате XML установленным порядком.
Сервис поддерживают обработку сведений из ЕГРЮЛ по форматам 405, 406 и 407. Для этого используется команда fill_egrul.

docker-compose exec web python3 manage.py fill_egrul egrul_data/<path_to_dir_with_xml> -n <proc_num> [--update]

egrul_data/<path_to_dir_with_xml> - путь до директории с файлами XML; в текущем виде конфига egrul_data монтируется в /tmp/.
<proc_num> - количество процессов парсера.
--update - признак обновления сведений.

Демонстрационные данные

Для демонстрации работы сервиса предусмотрена команда, которая создаст N вымышленных организаций

docker-compose exec web python3 manage.py fill_test_data <N>

Особенности реализации полнотекстового поиска

Опытным путем на выборке из 3,2 млн записей в ЕГРЮЛ установлено, что более 80% организаций в ЕГРЮЛ - это общества с ограниченной ответственностью, поэтому такие слова как "общество", "ограниченной" и "ответственностью" были исключены из функции ts_vector при построении индекса, что позволило сократить память на хранение индекса на 24%. При этом другие слова, например, "муниципальная" или "районная" или "государственное" нет смысла отбрасывать, так как они могут нести физический смысл и на размер индекса сильно не влияют.