Files
wiki/memory/2026-04-24.md
2026-04-24 14:10:01 +03:00

6.0 KiB
Raw Permalink Blame History

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 / floatfloat(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-srv185.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