# Fix: supplement_schedule() — scheduled_at NULL fallback **Дата:** 2026-04-25 **Файл:** `fr24_worker.py` → функция `supplement_schedule()` ## Проблема В SQL INSERT `supplement_schedule()` поле `scheduled_at` вычислялось простым CASE-выражением: ```sql CASE WHEN fa.origin_icao IN ('UUEE','UUDD','UUWW','UUBW') THEN fa.datetime_takeoff ELSE fa.datetime_landed END AS scheduled_at ``` Если `datetime_takeoff` и `datetime_landed` оба NULL — поле получало NULL, что ломало логику расчёта задержек. ## Исправление Обёрнуто в `COALESCE` с fallback на `fa.first_seen`: ```sql -- scheduled_at: takeoff time for departures, landed for arrivals; fallback to first_seen COALESCE( CASE WHEN fa.origin_icao IN ('UUEE','UUDD','UUWW','UUBW') THEN fa.datetime_takeoff ELSE fa.datetime_landed END, fa.first_seen ) AS scheduled_at ``` ## Деплой | Шаг | Статус | |-----|--------| | Локальный файл отредактирован | ✅ | | VM `/home/fr24/projects/fr24/ingest/tracks_fr24/fr24_worker.py` обновлён | ✅ | | `docker cp` → `fr24-tracks-fr24:/app/fr24_worker.py` | ✅ | | Верификация в контейнере | ✅ | > **Примечание:** Фактический путь исходников на VM оказался > `/home/fr24/projects/fr24/ingest/tracks_fr24/fr24_worker.py` > (не `tracks_fr24/` в корне projects, как было в задаче, а `ingest/tracks_fr24/`).