auto-sync: 2026-04-20 10:30:01
This commit is contained in:
@@ -90,19 +90,31 @@
|
||||
- основной переходной источник после исчерпания FR24-only подхода
|
||||
|
||||
## 6. Бэклог
|
||||
### Для FR24 / noisemap части
|
||||
- [ ] Пополнить кредиты FR24, если потребуется добор исторических дней
|
||||
- [ ] Улучшить модель шума v2
|
||||
- [ ] Ночной штраф Lden
|
||||
- [ ] Оптимизировать расчёт плотности
|
||||
- [ ] Экспорт зон в GeoJSON/KML
|
||||
|
||||
### Для RTL-SDR ingest-контура
|
||||
- [ ] Описать схему БД и индексы
|
||||
- [ ] Описать контейнеры и compose-файл
|
||||
- [ ] Описать мониторинг и healthchecks
|
||||
- [ ] Описать backup/restore
|
||||
- [ ] Определить контракт между ingest и noisemap UI
|
||||
### ✅ Выполнено (апрель 2026)
|
||||
- [x] RTL-SDR ingest контур (capture + preprocess + api + monitoring + backup)
|
||||
- [x] PostgreSQL/PostGIS схема fr24
|
||||
- [x] Leaflet карта с треками и фильтром периода
|
||||
- [x] Мониторинг дашборд
|
||||
- [x] Батчевая запись, фильтр onground, кеш скорости с TTL
|
||||
- [x] Callsign из MSG1
|
||||
|
||||
### 🔜 Шаг 1: Внешние источники данных
|
||||
- [ ] Контейнер `fr24-external` с FR24 API + Яндекс.Расписания
|
||||
- [ ] Схема `fr24_ext` в PostgreSQL
|
||||
- [ ] ТЗ: `docs/STEP1_EXTERNAL_DATA.md`
|
||||
|
||||
### 🔜 Шаг 2: Витрина данных
|
||||
- [ ] Объединение RTL-SDR + FR24 API + табло в схему `fr24_mart`
|
||||
- [ ] Шумовая сетка noise_grid
|
||||
- [ ] Метрики покрытия источников
|
||||
- [ ] ТЗ: `docs/STEP2_DATA_MART.md`
|
||||
|
||||
### 🔜 Шаг 3: Перенос noisemap на VM-FR24
|
||||
- [ ] Адаптация прототипа под fr24_mart
|
||||
- [ ] Live режим из RTL-SDR
|
||||
- [ ] Фильтр по источнику данных
|
||||
- [ ] ТЗ: `docs/STEP3_NOISEMAP_MIGRATION.md`
|
||||
|
||||
## 7. Документация
|
||||
- `tasks/flightradar24/README.md` — обзор проекта
|
||||
|
||||
123
tasks/flightradar24/docs/STEP3_NOISEMAP_MIGRATION.md
Normal file
123
tasks/flightradar24/docs/STEP3_NOISEMAP_MIGRATION.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# Шаг 3: Перенос и доработка визуала noisemap на VM-FR24
|
||||
|
||||
## Статус
|
||||
🔲 Не начат (зависит от Шага 2)
|
||||
|
||||
## Цель
|
||||
Перенести прототип noisemap (сейчас работает на mva154) на VM-FR24, адаптировать его для работы с новой витриной данных `fr24_mart` и доработать UI под новые возможности.
|
||||
|
||||
---
|
||||
|
||||
## Бизнес-требования
|
||||
|
||||
### BR-1: Перенос прототипа
|
||||
- Прототип noisemap переносится с mva154 на VM-FR24
|
||||
- Работает как отдельный контейнер в том же docker-compose стеке
|
||||
- Доступен по тому же пути `/noisemap/` через nginx reverse proxy
|
||||
|
||||
### BR-2: Адаптация под витрину данных
|
||||
- Источник данных: `fr24_mart` вместо CSV/JSON файлов
|
||||
- Слой плотности пролётов — из `fr24_mart.noise_grid`
|
||||
- Треки рейсов — из `fr24_mart.track_points_unified`
|
||||
- Информация о рейсе — из `fr24_mart.flights_unified`
|
||||
- Слайдер по дням — работает с реальными датами из БД
|
||||
|
||||
### BR-3: Новые возможности UI
|
||||
- Фильтр по источнику данных: RTL-SDR / FR24 API / все
|
||||
- Индикатор покрытия: % рейсов с треком для выбранного дня
|
||||
- Попап рейса: показывать авиакомпанию, маршрут, тип ВС, источник данных
|
||||
- Live режим: автообновление карты каждые 60 сек (данные из RTL-SDR)
|
||||
|
||||
### BR-4: Шумовая карта
|
||||
- Слой шума строится из `fr24_mart.noise_grid`
|
||||
- Цветовая шкала: зелёный (тихо) → жёлтый → красный (шумно)
|
||||
- Легенда с единицами (условные единицы шума)
|
||||
- Возможность переключения между "плотность пролётов" и "уровень шума"
|
||||
|
||||
---
|
||||
|
||||
## Технические требования
|
||||
|
||||
### Контейнер `fr24-noisemap`
|
||||
- Flask + OpenLayers (как в прототипе)
|
||||
- Подключение к PostgreSQL (fr24_mart схема)
|
||||
- Порт: 5556 (как в прототипе на mva154)
|
||||
- Nginx proxy: `/noisemap/` → `fr24-noisemap:5556`
|
||||
|
||||
### API endpoints (новые/изменённые)
|
||||
```
|
||||
GET /api/dates — список дат с данными
|
||||
GET /api/density?date= — шумовая сетка за дату (из noise_grid)
|
||||
GET /api/flights?date= — список рейсов за дату (из flights_unified)
|
||||
GET /api/track/<flight_id> — трек рейса (из track_points_unified)
|
||||
GET /api/live — live борты (из fr24.track_points, последние 60 мин)
|
||||
GET /api/coverage?date= — метрики покрытия источников
|
||||
```
|
||||
|
||||
### Nginx конфигурация
|
||||
- Добавить location `/noisemap/` в существующий nginx на VM-FR24
|
||||
- Или развернуть nginx как отдельный контейнер если его нет
|
||||
|
||||
---
|
||||
|
||||
## ТЗ для Dev-агента
|
||||
|
||||
### Файлы для создания/изменения
|
||||
```
|
||||
tasks/flightradar24/noisemap/
|
||||
Dockerfile
|
||||
app.py # Flask приложение (адаптация прототипа)
|
||||
requirements.txt
|
||||
static/
|
||||
index.html # UI (адаптация прототипа)
|
||||
app.js # логика карты
|
||||
style.css
|
||||
tasks/flightradar24/compose/docker-compose.yml # добавить сервис noisemap + nginx
|
||||
tasks/flightradar24/compose/nginx.conf # конфигурация nginx
|
||||
```
|
||||
|
||||
### Что взять из прототипа
|
||||
- `tasks/flightradar24/prototype/app.py` — базовая структура Flask
|
||||
- `tasks/flightradar24/prototype/static/` — UI компоненты
|
||||
- `tasks/flightradar24/prototype/docs/NOISE_MODEL.md` — модель шума
|
||||
|
||||
---
|
||||
|
||||
## Тест-кейсы
|
||||
|
||||
### TC-1: Базовая работоспособность
|
||||
- [ ] Контейнер стартует без ошибок
|
||||
- [ ] Карта открывается по `/noisemap/`
|
||||
- [ ] Слайдер по дням работает
|
||||
|
||||
### TC-2: Данные из витрины
|
||||
- [ ] Слой плотности загружается из `fr24_mart.noise_grid`
|
||||
- [ ] Треки рейсов отображаются из `fr24_mart.track_points_unified`
|
||||
- [ ] Попап рейса показывает авиакомпанию и маршрут
|
||||
|
||||
### TC-3: Фильтры
|
||||
- [ ] Фильтр по источнику (RTL-SDR / FR24 / все) работает
|
||||
- [ ] Индикатор покрытия обновляется при смене даты
|
||||
|
||||
### TC-4: Live режим
|
||||
- [ ] Live борты обновляются каждые 60 сек
|
||||
- [ ] При отсутствии RTL-SDR данных — graceful degradation
|
||||
|
||||
### TC-5: Производительность
|
||||
- [ ] Загрузка слоя плотности < 2 сек
|
||||
- [ ] Загрузка треков за день < 3 сек
|
||||
|
||||
### TC-6: Перенос с mva154
|
||||
- [ ] Старый прототип на mva154 продолжает работать (не ломаем)
|
||||
- [ ] Новый инстанс на VM-FR24 работает независимо
|
||||
|
||||
---
|
||||
|
||||
## Зависимости
|
||||
- Шаг 2 (витрина fr24_mart должна быть заполнена)
|
||||
- Прототип noisemap (tasks/flightradar24/prototype/)
|
||||
- Nginx на VM-FR24 (или новый контейнер)
|
||||
|
||||
## Риски
|
||||
- Прототип использует OpenLayers — нужно проверить совместимость с новым API
|
||||
- Модель шума в прототипе заточена под FR24 данные — нужна адаптация под RTL-SDR
|
||||
Reference in New Issue
Block a user