Skip to content

Тестовое задание для backend-стажера в Аналитические программные решения

Notifications You must be signed in to change notification settings

d11scord/apsolutions-trainee-assigment

Repository files navigation

Тестовое задание для стажера в Аналитические программные решения

В этом проекте реализована простая поисковая система по текстам документов.

Данные хранятся в БД PostgreSQL, поисковый индекс в ElasticSearch.

Проект выполнен с помощью FastAPI и Gino и работает асинхронно.

Ссылка на тестовый массив данных: [csv]

Запуск проекта

Запуск с помощью Docker-compose

Проверьте, что в системе установлены Docker и Docker-compose. После введите команду:

docker-compose up --build -d

Она запустит три контейнера — приложение FastAPI, Elasticsearch и PostgreSQL. Ссылка может быть доступна не сразу, нужно немного времени, чтобы заполнить БД :)

После этого сервис будет доступен по ссылке 127.0.0.1:8080. Все методы описаны в документации OpenAPI Swagger, которая откроется на главной странице.

Запуск локально

  • Убедитесь, что PostgreSQL и Elasticsearch запущены.

  • Создайте virtual env и установите зависимости:

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
  • Создайте БД с нзванием documents и запустите скрипт из корня проекта для заполнения БД постами:
alembic upgrade head
python populate.py
  • Запустите сервер:
python main.py
# или
uvicorn main:app --host 127.0.0.1 --port 8080

Сервис будет доступен по ссылке 127.0.0.1:8080.

Структура проекта

src
├── api                     - Список эндпоинтов.
└── store                   - Конфигурация БД и индекса, модели данных.
main.py                     - Входная точка приложения FastAPI.
populate.py                 - Скрипт для заполнения БД и индекса данными.

Тесты

Запуск тестов:

pytest -v

Анализ покрытия тестами:

pytest --cov-report term --cov=src tests/

About

Тестовое задание для backend-стажера в Аналитические программные решения

Topics

Resources

Stars

Watchers

Forks