Skip to content

Web-приложение для определения заполненных форм.

License

Notifications You must be signed in to change notification settings

alexpro2022/forms_patterns_finder

Repository files navigation

Forms patterns finder

Тестовое задание


Оглавление:


Технологии:

Python asyncio aiohttp Pydantic MongoDB Motor docker_compose Pytest Pytest-aiohttp Pytest-asyncio coverage deepdiff pre-commit

⬆️Оглавление


Описание работы:

Приложение принимает список полей формы со значениями в теле POST запроса. Возвращает имя шаблона, наиболее подходящего данному списку полей формы, а при отсутствии совпадений с известными шаблонами производит типизацию полей принятой формы на лету и возвращает список полей с их типами. При нахождении более одного подходящего шаблона, алгоритм вычисляет наиболее подходящий (фактически выбирает шаблон с максимальным кол-вом полей из всех найденных шаблонов). Чтобы найти подходящий шаблон нужно выбрать тот, поля которого совпали с полями в присланной форме. Совпадающими считаются поля, у которых совпали имя и тип значения. Полей в пришедшей форме может быть больше чем в шаблоне, в этом случае шаблон все равно будет считаться подходящим. Самое главное, чтобы все поля шаблона присутствовали в форме.

⬆️Оглавление


Установка и запуск тестов:

Docker Compose

Предварительные условия:

Предполагается, что пользователь:

  • установил Docker и Docker Compose на локальной машине. Проверить наличие можно выполнив команды:

    docker --version && docker-compose --version


  1. Клонируйте репозиторий с GitHub и введите данные для переменных окружения (тестовые данные уже введены, нажмите комбинацию клавиш ctrl-x):
git clone https://github.com/alexpro2022/forms_patterns_finder.git
cd forms_patterns_finder
cp env_example .env
nano .env
  1. Из корневой директории проекта выполните команды запуска тестов:
docker compose -f docker/test.docker-compose.yml up --build --abort-on-container-exit
docker logs tests && docker rm mongo && docker rm tests

После прохождения тестов в консоль будет выведен отчет pytest и coverage.

⬆️Оглавление


Запуск приложения:

  1. Из корневой директории проекта выполните команду:
docker compose -f docker/docker-compose.yml up -d --build

Проект будет развернут в docker-контейнерах:

  • приложение можно протестировать Postman по адресу: http://localhost:8080/get_form
  • Доступ к БД осуществляется по адресу: http://localhost:8081, учетные данные "admin:pass", коллекция шаблонов patterns_collection
  1. Остановить docker и удалить контейнеры можно командой из корневой директории проекта:
docker compose -f docker/docker-compose.yml down
  1. Если также необходимо удалить тома базы данных, статики и медиа:
docker compose -f docker/docker-compose.yml down -v

⬆️Оглавление


Удаление приложения:

Из корневой директории проекта выполните команду:

cd .. && rm -fr forms_patterns_finder

⬆️Оглавление


Автор:

Aleksei Proskuriakov

⬆️В начало

About

Web-приложение для определения заполненных форм.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published