REST API приложение для справочника организаций, зданий и видов деятельности.
Приложение предоставляет API для управления:
- Организациями (с телефонами и видами деятельности)
- Зданиями (с адресами и географическими координатами)
- Видами деятельности (в виде дерева с максимальной глубиной 3 уровня)
- Получение списка организаций по зданию
- Получение списка организаций по виду деятельности
- Поиск организаций в заданном радиусе от точки на карте
- Поиск организаций по названию
- Поиск по иерархии видов деятельности
- FastAPI + Pydantic
- SQLAlchemy + Alembic
- Docker + Docker Compose
- Клонируйте репозиторий:
git clone <repository-url>
cd test_nebus
- Соберите и запустите контейнеры:
docker compose -f docker/docker-compose.yml up --build -d
- API будет доступно по адресу: http://localhost:8000/api/v1
- Создайте виртуальное окружение и установите зависимости:
python -m venv venv
source venv/bin/activate # Linux/MacOS
# или
venv\Scripts\activate # Windows
pip install -r requirements.txt
- Запустите приложение:
python run.py
После запуска приложения документация доступна по адресам:
- Swagger UI: http://localhost:8000/api/v1/docs
- ReDoc: http://localhost:8000/api/v1/redoc
Все запросы к API должны содержать заголовок X-API-Key:
curl -H "X-API-Key: your_secret_api_key" http://localhost:8000/api/v1/organizations
- Получение списка организаций в здании:
curl -H "X-API-Key: your_secret_api_key" \
http://localhost:8000/api/v1/organizations?building_id=1
- Поиск организаций по виду деятельности:
curl -H "X-API-Key: your_secret_api_key" \
http://localhost:8000/api/v1/organizations?activity_id=1
- Поиск организаций в радиусе:
curl -H "X-API-Key: your_secret_api_key" \
"http://localhost:8000/api/v1/organizations?lat=55.7558&lon=37.6173&radius=5"
organization_directory/
├── alembic/ # Миграции БД
├── app/ # Основной код
│ ├── api/ # API endpoints и роутеры
│ │ └── v1/ # Версия 1 API
│ │ ├── endpoints/ # Обработчики запросов
│ │ └── router.py # Роутер API v1
│ ├── core/ # Конфигурация и общие компоненты
│ ├── db/ # Работа с БД и инициализация
│ ├── initial_data/ # CSV файлы с начальными данными
│ ├── models/ # SQLAlchemy модели
│ └── schemas/ # Pydantic схемы
├── docker/ # Docker файлы
└── data/ # БД SQLite
alembic revision --autogenerate -m "описание_изменений"
alembic upgrade head