6.0 KiB
6.0 KiB
2026-04-24 — Memory Flush (pre-compaction)
Урок: как я спалила кредиты FR24 (разбор ошибок)
Перед запуском FR24 API на боевых кредитах нужно было:
- Проверить total — многие API возвращают
totalилиX-Total-Count. У FR24 не проверила, не знала сколько записей ожидать - Тест с одним аэропортом —
departure:SVOвместоboth:SVO,both:DME,both:VKO,both:ZIA. Посмотреть сколько страниц, умножить на кредиты - Понять что значит
both:— включает коммерческое + частное + грузовое + военное по всем 4 аэропортам. Я предположила ~1500 рейсов как у Яндекса, но не проверила - Посчитать бюджет заранее — 44 800 ÷ 3 = ~14 900 рейсов максимум. Можно было поставить
MAX_PAGES = 745и хотя бы закоммитилось бы всё до последней страницы
Итог: API не понимала достаточно хорошо чтобы запускать на боевых кредитах. Кредиты ушли, данные не сохранились (DDL-конфликт + 402 на последней странице).
FR24 Noisemap Project — состояние на 2026-04-21
Что сделано
- DDL:
origin_icao/destination_icaoVARCHAR(5)→VARCHAR(20) вflight_tracks_fa fa_worker.py:_icao_or_none()фильтрует координатыbuild_mart.py: словарьAIRLINE_IATA_TO_ICAO, конвертация callsign, числовой матч поident_iata- Фикс
decimal.Decimal / float→float(alt_m)в шумовой модели - Витрина 19.04: 99 рейсов с треком (rtlsdr=92, fa=3, fr24=2)
- Создана таблица
fr24_ext.flight_actual(DDL-миграция на VM) FR24_API_KEY=MVM0hi4S7RRh7Dm4EOl1ShpDPc8CrmITXT2LY5y4dd84a62aдобавлен в.envна VM- Пагинация flight-summary/full: цикл offset += 20
- UI enrichment:
schedule.html(13 колонок),schedule.js,main.py(LEFT JOIN на flight_actual) - DDL-миграция schedule:
fr24_id,actual_takeoff,actual_landed,delay_*,flight_category,registration - Задеплоено через
docker cp→ fr24-api, fr24-tracks-fr24, fr24-mart
In Progress / Pending
- Загрузка FR24 flight-summary/full за 2026-04-20 (pid=1222822) — статус не подтверждён
- Яндекс backfill 06-19.04 — rate limit 429, статус сброса неизвестен
Open TODOs (на момент compaction)
- DDL: добавить
orig_iata VARCHAR(5)иdest_iata VARCHAR(5)вfr24_ext.flight_actual— ждёт окончания fr24_run3 - Задеплоить обновлённый
fr24_worker.pyв fr24-tracks-fr24 (с сохранением orig_iata/dest_iata) - Задеплоить обновлённый
main.pyв fr24-api (с fallback маршрута из FA IATA-кодов) - Обновить
routeStr()вschedule.js: fallback наfa_orig_iata/fa_dest_iata(IATA → city lookup) - Добавить
conn.rollback()в error handlermain.pyfr24-api (aborted transaction bug) - Проверить маппинг полей: FR24 API →
orig_icao(неorigin_icao),reg(неregistration) - Яндекс backfill 06-19.04 (429 rate limit, ждёт сброса ~01:00 UTC)
- Пересборка Docker образов (docker compose build) для устойчивого деплоя
Key Decisions
- Приоритет маршрута в UI: 1й —
thread_titleЯндекса, 2й — IATA-коды FR24 (orig_iata/dest_iata) через IATA_CITY - FR24 API поля:
operating_as(неoperated_as),orig_icao,orig_iata,dest_icao,dest_iata,reg(неregistration) - supplement_schedule(): INSERT рейсов из flight_actual которых нет в Яндекс-расписании, source='fr24'
- Деплой: docker cp → docker restart (или compose up -d для пересборки из файлов на хосте)
- Explorer лимит: 20 записей/запрос, offset-пагинация работает; ~4500 кредитов/день за все рейсы
Инфраструктура
- VM:
fr24@192.168.2.67:22via ProxyCommandvpn-srv→185.130.212.192:3322 - SSH key:
/home/node/.openclaw/ha_ssh_key - Postgres: host=
postgres(172.18.0.2), dbname=fr24, user=fr24, password=change-me - Compose:
/home/fr24/projects/fr24/compose/docker-compose.yml - Исходники на VM:
/home/fr24/projects/fr24/ - Workspace:
/home/node/.openclaw/workspace/tasks/flightradar24/ - Reports:
/home/node/.openclaw/workspace/tasks/flightradar24/reports/ - FR24 credits: ~44 811 (промо до 31.05.2026)
- FR24 API key (новый, 24.04.2026):
019dbf18-3575-71d0-84eb-eb44606fbb63|QU3h8jqLPFyuo9qbQbPu9uoXVK42bTeclMuyRJ5Qb86ba0ea - Старый ключ:
MVM0hi4S7RRh7Dm4EOl1ShpDPc8CrmITXT2LY5y4dd84a62a(деактивирован) - Контейнеры: fr24-postgres, fr24-api(:8080), fr24-mart, fr24-tracks-fr24(:8001), fr24-tracks-fa, fr24-schedule, fr24-preprocess, fr24-capture, fr24-monitoring, fr24-backup
Файлы
fr24_worker.py:/home/node/.openclaw/workspace/tasks/flightradar24/ingest/tracks_fr24/fr24_worker.pymain.py(API):/home/node/.openclaw/workspace/tasks/flightradar24/frontend/main.pyschedule.js:/home/node/.openclaw/workspace/tasks/flightradar24/frontend/static/schedule.jsschedule.html:/home/node/.openclaw/workspace/tasks/flightradar24/frontend/static/schedule.htmlbuild_mart.py:/home/node/.openclaw/workspace/tasks/flightradar24/ingest/mart/build_mart.py