Files
wiki/tasks/flightradar24/PROJECT.md
2026-04-19 00:30:01 +03:00

126 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Проект: FR24 / noisemap + RTL-SDR ingest
## 1. Назначение
Проект строит карту шумового загрязнения авиации для Московской области и развивает её в сторону локального ADS-B контура на RTL-SDR.
Сейчас проект состоит из двух связанных частей:
- **noisemap / FR24-прототип** — визуализация и расчёт шумовой плотности на базе исторических данных Flightradar24
- **RTL-SDR ingest-контур** — приём ADS-B с локального приёмника, хранение в PostgreSQL/PostGIS и восстановление данных после сбоев
## 2. Статус
- **Старт проекта:** 22 марта 2026
- **Текущий статус:** активен
- **Текущий фокус:** переход от FR24-only к локальному RTL-SDR контуру с PostgreSQL/PostGIS
- **Последнее обновление:** 18 апреля 2026
## 3. Текущая часть: noisemap / FR24-прототип
### URL
- https://openclaw.mva154.duckdns.org/noisemap/
### Расположение
- `tasks/flightradar24/prototype/`
### Стек
- Flask
- OpenLayers 10
- Turf.js
- Canvas2D
- flask-compress
### Что уже реализовано
- слой "Плотность пролётов"
- метрика рейсов/час
- радиусы влияния по высоте
- кэш плотности
- слайдер по дням
- легенда и попап по рейсам
- `/api/dates` и `/api/density`
- загрузка табло через Яндекс.Расписания
### Ограничения текущей части
- FR24 кредиты закончились
- охват данных неполный
- ночные рейсы и часть траекторий не покрываются
## 4. Новая часть: RTL-SDR ingest-контур
### Цель
Построить локальный контур приёма ADS-B с RTL-SDR, который:
- принимает поток в real time
- сохраняет сырьё с retention 3 дня
- догоняет пропуски после сбоя
- хранит данные в PostgreSQL/PostGIS
- отдаёт данные для визуализации на карте
### Архитектурные рамки
- 1 VM в PVE
- USB RTL-SDR пробрасывается в VM
- Docker Compose
- отдельные контейнеры для компонентов
- PostgreSQL + PostGIS
- сырьё и core-данные в одной БД, но логически разделены
### Согласованные ограничения VM
- CPU: до 6 vCPU
- RAM: 1012 GB
- SSD: 80100 GB max
### Режимы работы
- live
- recovery
- overlap recovery
### Базовые сущности хранения
- `captures`
- `raw_packets`
- `aircraft`
- `flights`
- `track_points`
- `tracks`
- `processing_state`
- `noise_results`
## 5. Данные и источники
### FR24
- исторические данные использовались для прототипа noisemap
- FR24 API ключ хранится в `~/.openclaw/.env`
- ключи и секреты не хранятся в проектных файлах
### ADS-B / RTL-SDR
- локальный источник для ingest-контура
- основной переходной источник после исчерпания FR24-only подхода
## 6. Бэклог
### Для FR24 / noisemap части
- [ ] Пополнить кредиты FR24, если потребуется добор исторических дней
- [ ] Улучшить модель шума v2
- [ ] Ночной штраф Lden
- [ ] Оптимизировать расчёт плотности
- [ ] Экспорт зон в GeoJSON/KML
### Для RTL-SDR ingest-контура
- [ ] Описать схему БД и индексы
- [ ] Описать контейнеры и compose-файл
- [ ] Описать мониторинг и healthchecks
- [ ] Описать backup/restore
- [ ] Определить контракт между ingest и noisemap UI
## 7. Документация
- `tasks/flightradar24/README.md` — обзор проекта
- `tasks/flightradar24/docs/ARCHITECTURE.md` — контейнерная архитектура ingest-контура
- `tasks/flightradar24/docs/RTL-SDR_TZ.md`ТЗ на ingest-контур
- `tasks/flightradar24/docs/VM_SETUP.md` — инструкция по созданию VM в PVE
- `tasks/flightradar24/docs/TEST_PLAN.md` — тестовый контракт и acceptance checks
- `tasks/flightradar24/docs/DEV_AGENT_HANDOFF.md` — пакет передачи Dev-агенту
- `tasks/flightradar24/prototype/docs/ARCHITECTURE.md` — архитектура прототипа
- `tasks/flightradar24/prototype/docs/NOISE_MODEL.md` — модель шума
- `tasks/flightradar24/prototype/docs/DATA_LOADING.md` — загрузка данных
- `tasks/flightradar24/prototype/docs/UI.md` — UI
## 8. Критерий направления
Проект считается развивающимся правильно, если:
- noisemap остаётся рабочим и полезным
- ingest-контур получает данные без дырок
- recovery умеет догонять сырьё автоматически
- БД не раздувается сверх лимитов VM
- карта продолжает получать данные для визуализации