# Архитектура RTL-SDR ingest-контура для FR24 / noisemap ## 1. Назначение Этот документ описывает контейнерную архитектуру локального ADS-B контура на RTL-SDR внутри одной VM в PVE. Цель контура: - принимать ADS-B поток в real time - хранить сырьё с retention 3 дня - автоматически догонять пропуски после сбоя - хранить данные в PostgreSQL/PostGIS - отдавать данные в noisemap / карту ## 2. Контейнеры ### 2.1 `postgres` Хранит: - `captures` - `raw_packets` - `aircraft` - `flights` - `tracks` - `track_points` - `processing_state` - `noise_results` ### 2.2 `capture` - читает USB RTL-SDR - пишет `captures` и `raw_packets` - не занимается нормализацией ### 2.3 `preprocess` - читает `raw_packets` - строит `aircraft`, `flights`, `tracks`, `track_points` - управляет `processing_state` - поддерживает recovery ### 2.4 `api` - читает те же таблицы - отдаёт данные для noisemap UI - не пересчитывает геометрию на лету ### 2.5 `monitoring` - отдельный контейнер - healthchecks, disk/DB/capture status, alerts ## 3. Docker Compose порядок Минимальный состав: - `postgres` - `capture` - `preprocess` - `api` - `monitoring` ## 4. Контракт ingest↔API Контрактом является схема PostgreSQL. Детали — в `docs/INGEST_API_CONTRACT.md`.