# Проект: 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: 10–12 GB
- SSD: 80–100 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
- карта продолжает получать данные для визуализации
