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

70 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`