Skip to content

yuiauo/tt_bewise

Repository files navigation

Тестовое задание на позицию junior python developer в компанию Bewise.ai

Перед запуском необходимо обновить .env под свои нужды, для докера можно не трогать

Установка с Docker

Prerequisites: установленный докер, проверить что нет совпадающих volume

docker-compose up
  1. БД скрыта от внешних запросов, взаимодействует только с приложением, по умолчанию порт контейнера стоит 5432
  2. Приложение поднимается на http://localhost:8000, порт по необходимости можно изменить в docker-compose файле
  3. Тестировать эндпойнт можно здесь http://localhost:8000/docs (Swagger)

Локальная установка

prerequisites: установленные python 3.11.3, postgres 15

  1. Настроить пустую бд, без таблиц
  2. Указать всё необходимоe в .env
  3. Установить окружение можно либо:
pip install -r requirements.txt

либо:

poetry install
  1. Если необходимо включить логи, это можно сделать в app/settings, в классе AppDescriptions необходимо установить флаг debug=True

находясь в корневой директории

  1. Накатить миграции
alembic upgrade head
  1. При необходимости можно прогнать тесты (в докере они прогоняются при запуске контейнера)
  2. Запустить приложение командой
uvicorn app.main:app
  1. Повторить п2 п3 из Установка с докером

Инструменты

  • sqlalchemy
  • alembic
  • pydantic
  • fastapi
  • loguru
  • docker
  • postgresql

Схема

alt text

Замечание

Не очень понял следующие пункты задания:

  1. Необходимо возвращать последний вопрос или предпоследний (выбрал предпоследний)
  2. Повторная подгрузка вопросов, если предыдущий вопрос уже есть в БД (как то противоречит с 1м пунктом)

По итогу сделал так:

  1. Грузится questions_num вопросов, если есть повторяющиеся, повторяем до тех пор пока не сохраним в кол-ве questions_num
  2. Возвращается предпоследний вопрос (а он по условию задачи может быть пустым), даже несмотря на то, что questions_num большой. Соответсвенно, если Вы передаете questions_num = 5, то Вам вернется 4й сохраненный вопрос (при условии что повторений не было). А если они были, то соответсвенно предпоследний из {questions_num + кол-во ошибок} вопросов которые мы подгружали.

Идеи по улучшению

заменить установку apt-get -y install libpq-dev gcc в докерфайле, слишком сильно увеличивает образ, но необходимая мера, т к psycopg2 не хотел искать конфиг. Как вариант поставить psycopg-binary?

About

Test task by bewise.ai for junior python developer position.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors