auto-sync: 2026-04-25 00:50:01
This commit is contained in:
@@ -415,12 +415,15 @@ def supplement_schedule(conn, target_date: date) -> int:
|
||||
ELSE NULL
|
||||
END AS destination_iata,
|
||||
NULL AS aircraft_type,
|
||||
-- scheduled_at: takeoff time for departures, landed for arrivals
|
||||
CASE
|
||||
WHEN fa.origin_icao IN ('UUEE','UUDD','UUWW','UUBW')
|
||||
THEN fa.datetime_takeoff
|
||||
ELSE fa.datetime_landed
|
||||
END AS scheduled_at,
|
||||
-- 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,
|
||||
fa.datetime_takeoff AS actual_takeoff,
|
||||
fa.datetime_landed AS actual_landed,
|
||||
'actual' AS status,
|
||||
|
||||
47
tasks/flightradar24/reports/dev-2026-04-25-supplement-fix.md
Normal file
47
tasks/flightradar24/reports/dev-2026-04-25-supplement-fix.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# 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/`).
|
||||
Reference in New Issue
Block a user