# Архитектура 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`.
