Тестовое задание Backend python
Тестовое задание "Создание REST API приложения"
Описание
Необходимо реализовать REST API приложения для справочника Организаций, Зданий, Деятельности.
Организация
Представляет собой карточку организации в справочнике и должна содержать в себе следующую информацию:
- Название: например ООО "Рога и Копыта"
- Номер телефона: организация может иметь несколько номеров телефонов (2-222-222, 3-333-333, 8-923-666-13-13)
- Здание: организация должна находиться в одном конкретном здании (например, Блюхера, 32/1)
- Деятельность: организация может заниматься несколькими видами деятельностей (например, "Молочная продукция", "Мясная продукция")
Здание
Содержит в себе как минимум информацию о конкретном здании:
- Адрес: например г. Москва, ул. Ленина 1, офис 3
- Географические координаты: местоположение здания должно быть в виде широты и долготы
Деятельность
Позволяет классифицировать род деятельности организаций в каталоге. Имеет название и может в древовидном виде вкладываться друг в друга.
Пример возможного дерева деятельности:
- Еда
- Мясная продукция
- Молочная продукция
- Автомобили
- Грузовые
- Легковые
- Запчасти
- Аксессуары
Стек
fastapi + pydantic + sqlalchemy + alembic
Функционал приложения
Взаимодействие с пользователем происходит посредством HTTP запросов к API серверу с использованием статического API ключа.
Все ответы должны быть в формате JSON.
Необходимо реализовать следующие методы:
- список всех организаций, находящихся в конкретном здании
- список всех организаций, которые относятся к указанному виду деятельности
- список организаций, которые находятся в заданном радиусе/прямоугольной области относительно указанной точки на карте
- список зданий
- вывод информации об организации по её идентификатору
- искать организации по виду деятельности:
- например, поиск по виду деятельности "Еда" (первый уровень дерева), и чтобы нашлись все организации, которые относятся к видам деятельности, лежащим внутри
- т.е. в результатах поиска должны отобразиться организации с видом деятельности: Еда, Мясная продукция, Молочная продукция
- поиск организации по названию
Ограничить уровень вложенности деятельностей 3 уровнями.
Задание
- Спроектировать БД.
- Создать необходимые миграции.
- Заполнить БД тестовыми данными.
- Реализовать API согласно разделу "Функционал приложения".
- Завернуть приложение в Docker контейнер, чтобы его можно было развернуть на любой машине (если необходимо, добавить инструкцию по разворачиванию).
- Добавить в проект документацию Swagger UI или Redoc с описанием всех методов приложения.