feat: stage1 — domain schemas, SSE events, pydantic-settings config

This commit is contained in:
Yuzviak
2026-03-22 22:18:50 +02:00
parent 6ba883f4d6
commit 445f3bd099
7 changed files with 625 additions and 4 deletions
+61
View File
@@ -0,0 +1,61 @@
# GPS-Denied Onboard
Сервіс геолокалізації знімків БПЛА в умовах відсутності GPS-сигналу.
Система використовує візуальну одометрію (VO), співставлення з супутниковими картами (cross-view matching) та оптимізацію траєкторії через фактор-графи для визначення координат дрона в реальному часі.
## Стек
| Компонент | Технологія |
|-----------|------------|
| API | FastAPI + Pydantic v2 |
| Стрім подій | SSE (sse-starlette) |
| БД | SQLite + SQLAlchemy 2 + Alembic |
| Граф поз | GTSAM (Python) |
| Карти | Google Maps API (Strategy-патерн) |
## Швидкий старт
```bash
# Клонувати та перейти в гілку stage1
git clone https://github.com/azaion/gps-denied-onboard.git
cd gps-denied-onboard
git checkout stage1
# Створити віртуальне середовище
python3 -m venv .venv
source .venv/bin/activate
# Встановити залежності
pip install -e ".[dev]"
# Запустити сервер
python -m gps_denied
```
Сервер стартує на `http://127.0.0.1:8000`. Health check: `GET /health`.
## Тести
```bash
python -m pytest tests/ -v
```
## Структура проєкту
```
gps-denied-onboard/
├── src/gps_denied/ # Основний пакет
│ ├── __init__.py
│ ├── __main__.py # Entry point (uvicorn)
│ └── app.py # FastAPI application
├── tests/ # Тести
├── docs-Lokal/ # Локальна документація та план
├── _docs/ # Архітектурна документація
├── pyproject.toml # Залежності та конфігурація
└── .gitignore
```
## Ліцензія
Приватний репозиторій. Усі права захищено.