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