# 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/`).
