📖 Інструкція користувача
Як працювати з дашбордом — фільтри, карти, порівняння, аналітика.
📊 Огляд
Головна вкладка з основною інформацією про спостереження БПЛА.
- KPI картки — кількість полігонів, розподіл Крило/Коптер, діапазон дат
- Карта полігонів — всі зафіксовані зони польотів. Клік по полігону → деталі
- Теплова карта — щільність спостережень (яскравіше = більше польотів)
- Гексагональна щільність — агреговані дані по шестикутниках
- Графіки — динаміка в часі, топ підрозділів, Крило/Коптер
💡 Кнопка ⛶ у кутку карти → повноекранний режим з панеллю фільтрів зліва.
🔍 Фільтри
Верхня панель. Впливають на всі вкладки (крім Порівняння — там свої).
- Період — пресети (12/24 год, сьогодні, вчора, 7/30 днів), місяць, або довільні дати
- Підрозділ — мультивибір. За замовчуванням — всі
- Платформа — ✈ Крило та/або 🚁 Коптер
💡 Фільтри застосовуються автоматично. «Скинути» → перезавантаження.
👥 Нальоти
Щільність нальотів на карті. Кожен полігон має поле «нальоти» (з колонки «Додаткова інформація» CSV).
- Карта кластерів — кола на карті показують сумарну кількість нальотів в районі
- Колір — жовтий = мало, червоний = багато
- Зум — далеко → великі кластери, близько → окремі точки
- Клік по колу → кількість нальотів та список підрозділів
⚖️ Порівняння
Дві під-вкладки. Глобальний фільтр Період тут НЕ діє.
- За періодом — пресети (Сьогодні vs Вчора, 7 днів vs попер. тощо) або довільні дати. Синій = А, Червоний = Б
- За підрозділом — оберіть кілька підрозділів у Групу А та Групу Б. Мультивибір з пошуком
Карти синхронізовані — зум/пан однієї рухає іншу.
⏱️ Хронологія
Анімація спостережень у часі.
- ▶ Play — автоматичне відтворення
- Повзунок — ручне переміщення по датах
- Режим — «Накопичувальний» (всі до дати) або «По днях» (конкретний день)
- Швидкість — повільно / нормально / швидко
🏔️ 3D
Тривимірні гексагони — висота = кількість спостережень.
- Радіус — розмір гексагонів (50–2000 м)
- Висота / Покриття / Прозорість — повзунки для налаштування вигляду
- 🧭 Компас — обертання 3D виду (або Ctrl + мишка)
📡 Щільність
Де БПЛА літають найчастіше — дві карти, одні дані.
- Контури — ізолінії як на топографічній карті. 3 режими: Огляд (4 зони, 2км), Оптимальний (6 зон, 800м), Детальний (10 зон, 300м)
- Теплова — кольорове поле. 3 режими: М'який, Оптимальний, Різкий
💡 Під кнопками є повзунки для точного ручного налаштування.
🔀 Fusion
Мульти-джерельна карта точок злету та напрямків БПЛА.
- 3 джерела — ТИША (жовтий), РЕБ (фіолетовий), OSINT (бірюзовий)
- Чекбокси — ввімкніть/вимкніть кожне джерело окремо
- Точки — кольорові маркери місць злету
- Напрямки — стрілки від старту до цілі/напрямку
- Фільтр дат — власний для Fusion (не залежить від глобальних фільтрів)
Дані
data/tysha_points.csv — точки ТИША (одна координата)
data/tysha_directions.csv — напрямки ТИША (дві координати)
data/osint_points.csv — точки OSINT (формат = ТИША)
data/ew_data.csv — РЕБ CSV або зовнішня БД (EW_PGHOST…)
💡 Кнопка «🔄 Оновити Fusion» перезавантажує дані з файлів без перезапуску.
🔍 Район
Просторовий запит — намалюйте прямокутник, побачите все, що літало в цьому районі.
- Тягніть мишкою по карті → система знайде всі полігони в межах
- Результати: статистика + таблиця з підрозділами, часом, нальотами
- Глобальні фільтри працюють разом з просторовим запитом
🔧 Технічна документація
Архітектура, розгортання, оновлення даних. Для адміністраторів та розробників.
🏗️ Архітектура
- Backend: PostGIS (PostgreSQL + просторові розширення), Flask REST API
- Frontend: Один HTML файл, Leaflet.js, deck.gl (WebGL), Chart.js
- Інфраструктура: Docker Compose, Nginx reverse proxy
- Тайли карт: OpenStreetMap CDN (потребує інтернет)
📁 Джерела даних
- copter.csv ← «Карпати: зони спостереження (звіт 12 годин)»
- wing.csv ← «Карпати: райони особливої уваги крил рОВ»
Потік даних
Зовнішня система → CSV експорт → папка data/ → load_data.py → PostGIS → Flask API → Дашборд
Поля CSV
- Координати — колонка з WKT-подібними координатами полігону
- Назва — підрозділ
- Дата — час спостереження
- Додаткова інформація — число нальотів (парситься автоматично)
🚀 Розгортання
Перший запуск
docker compose up -d --build
docker exec geo_api python /app/load_data.py
Оновлення даних
Покладіть нові CSV у data/ → натисніть «🔄 Оновити дані» у верхній панелі, або:
docker exec geo_api python /app/load_data.py
Повне перезавантаження (зміна схеми БД)
docker compose down -v
docker compose up -d --build
docker exec geo_api python /app/load_data.py
⚠️ Прапор -v видаляє том бази даних. Використовуйте тільки коли змінилась структура таблиць.
🔌 API ендпоінти
/api/polygons — GeoJSON полігонів (фільтри: name, platform_type, date_from, date_to, preset)
/api/centroids — центроїди полігонів (lat, lng, weight)
/api/points — всі точки з деталями
/api/stats — агреговані метрики
/api/timeline — дані для часового графіку
/api/top_names — топ підрозділів за кількістю полігонів
/api/top_unit_counts — топ підрозділів за нальотами
/api/spatial_query — пошук в прямокутнику (bbox)
/api/fusion/points — точки злету Fusion (source, date_from, date_to)
/api/fusion/directions — напрямки Fusion
/api/fusion/stats — статистика Fusion
/api/fusion/reload — перезавантаження Fusion даних (POST)