# UI Schedule Fix — 2026-04-25 ## Задача Три правки в UI расписания (schedule.js, schedule.html, main.py). ## Правки ### 1. duration_eff — единицы (main.py, строка 554–555) **Проблема:** `fa_flight_time` из FR24 — секунды, `duration_min` из Яндекса — минуты. Смешивались без конвертации. **Было:** ```python "duration_eff": r.get("fa_flight_time") or r.get("duration_min"), ``` **Стало:** ```python # fa_flight_time — секунды (FR24), duration_min — минуты (Яндекс) "duration_eff": (lambda fa_ft: (int(fa_ft) // 60 if fa_ft else None) or r.get("duration_min"))(r.get("fa_flight_time")), ``` --- ### 2. Колонки фактического времени (schedule.js + schedule.html) **Проблема:** Было 2 колонки «Взлёт факт» и «Посадка факт», показывались обе независимо от направления рейса. **Стало:** 1 колонка «Фактическое» — для вылетов `actual_takeoff`, для прилётов `actual_landed`. **schedule.js (renderTable):** ```js const actTime = f.direction === "departure" ? f.actual_takeoff : f.actual_landed; const actDelay = f.direction === "departure" ? f.delay_takeoff_min : f.delay_landed_min; const actCell = actTime ? `${fmtTime(actTime)} ${delayCell(actDelay)}` : "—"; ``` **schedule.html:** Убрана колонка «Посадка факт», «Взлёт факт» → «Фактическое». **Обновлено:** все `colspan="13"` → `colspan="12"` (schedule.js × 3, schedule.html × 1). --- ### 3. ВПП по направлению рейса (schedule.js) **Проблема:** Показывалось `runway_takeoff→runway_landed` вне зависимости от типа рейса. **Стало:** только один runway по направлению. **renderTable и renderCards:** ```js const runway = f.direction === "departure" ? (f.runway_takeoff || "—") : (f.runway_landed || "—"); ``` --- ## Деплой - Файлы загружены на VM: `/home/fr24/projects/fr24/frontend/` - `docker cp` в контейнер `fr24-api` - `docker restart fr24-api` — успешно ## Статус ✅ Все три правки применены и задеплоены.