# 2026-04-24 — Memory Flush (pre-compaction) ## Урок: как я спалила кредиты FR24 (разбор ошибок) Перед запуском FR24 API на боевых кредитах нужно было: 1. **Проверить total** — многие API возвращают `total` или `X-Total-Count`. У FR24 не проверила, не знала сколько записей ожидать 2. **Тест с одним аэропортом** — `departure:SVO` вместо `both:SVO,both:DME,both:VKO,both:ZIA`. Посмотреть сколько страниц, умножить на кредиты 3. **Понять что значит `both:`** — включает коммерческое + частное + грузовое + военное по всем 4 аэропортам. Я предположила ~1500 рейсов как у Яндекса, но не проверила 4. **Посчитать бюджет заранее** — 44 800 ÷ 3 = ~14 900 рейсов максимум. Можно было поставить `MAX_PAGES = 745` и хотя бы закоммитилось бы всё до последней страницы **Итог:** API не понимала достаточно хорошо чтобы запускать на боевых кредитах. Кредиты ушли, данные не сохранились (DDL-конфликт + 402 на последней странице). --- ## FR24 Noisemap Project — состояние на 2026-04-21 ### Что сделано - DDL: `origin_icao`/`destination_icao` VARCHAR(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) 1. DDL: добавить `orig_iata VARCHAR(5)` и `dest_iata VARCHAR(5)` в `fr24_ext.flight_actual` — ждёт окончания fr24_run3 2. Задеплоить обновлённый `fr24_worker.py` в fr24-tracks-fr24 (с сохранением orig_iata/dest_iata) 3. Задеплоить обновлённый `main.py` в fr24-api (с fallback маршрута из FA IATA-кодов) 4. Обновить `routeStr()` в `schedule.js`: fallback на `fa_orig_iata`/`fa_dest_iata` (IATA → city lookup) 5. Добавить `conn.rollback()` в error handler `main.py` fr24-api (aborted transaction bug) 6. Проверить маппинг полей: FR24 API → `orig_icao` (не `origin_icao`), `reg` (не `registration`) 7. Яндекс backfill 06-19.04 (429 rate limit, ждёт сброса ~01:00 UTC) 8. Пересборка 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:22` via ProxyCommand `vpn-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.py` - `main.py` (API): `/home/node/.openclaw/workspace/tasks/flightradar24/frontend/main.py` - `schedule.js`: `/home/node/.openclaw/workspace/tasks/flightradar24/frontend/static/schedule.js` - `schedule.html`: `/home/node/.openclaw/workspace/tasks/flightradar24/frontend/static/schedule.html` - `build_mart.py`: `/home/node/.openclaw/workspace/tasks/flightradar24/ingest/mart/build_mart.py`