auto-sync: 2026-04-24 17:50:01

This commit is contained in:
Stream
2026-04-24 17:50:01 +03:00
parent 2b597926a4
commit ae8f56787c
2 changed files with 111 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
# FR24 API — Особенности и ограничения
Исследовано: 2026-04-24. Тариф: **Explorer**.
---
## Endpoint: `/api/flight-summary/full`
### Explorer tier — жёсткий лимит 20 результатов на запрос
Независимо от значения параметра `limit` (даже `limit=20000`) — Explorer всегда возвращает
**максимум 20 записей** за один запрос. Это hard limit тарифа, не баг.
### Параметр `offset` не существует
В документации FR24 API нет параметра `offset`. Если его передать — он молча игнорируется,
и каждый запрос возвращает одни и те же первые 20 рейсов.
**Неправильно** (так мы сожгли все кредиты первый раз):
```
?airports=both:SVO&limit=20&offset=0 → 20 рейсов
?airports=both:SVO&limit=20&offset=20 → те же 20 рейсов (offset игнорируется)
?airports=both:SVO&limit=20&offset=40 → те же 20 рейсов
```
### Правильная пагинация — временны́е окна
Данные отсортированы по `first_seen`. Для получения всех рейсов за сутки нужно
разбить день на часовые окна:
**Правильно**:
```
?airports=inbound:SVO&flight_datetime_from=2026-04-23T00:00:00&flight_datetime_to=2026-04-23T01:00:00
?airports=inbound:SVO&flight_datetime_from=2026-04-23T01:00:00&flight_datetime_to=2026-04-23T02:00:00
...и т.д.
```
Если в окне >20 рейсов — нужно уменьшать окно (30 мин) или разделять на `inbound:` + `outbound:`.
---
## Параметр `airports` — правильные prefixes
| Prefix | Значение | Работает |
|--------|----------|---------|
| `both:SVO` | прилёты + вылеты SVO | ✅ |
| `inbound:SVO` | только прилёты | ✅ |
| `outbound:SVO` | только вылеты | ✅ |
| `departure:SVO` | — | ❌ не существует |
| `arrival:SVO` | — | ❌ не существует |
Принимает IATA (`SVO`), ICAO (`UUEE`) и ISO коды стран (`RU`). До 15 аэропортов через запятую.
---
## Стоимость
| Endpoint | Данные | Кредитов/запись |
|----------|--------|-----------------|
| `/flight-summary/light` | Live | 1 |
| `/flight-summary/light` | История < 30 дней | 2 |
| `/flight-summary/light` | История > 30 дней | 3 |
| `/flight-summary/full` | Live | 2 |
| `/flight-summary/full` | История < 30 дней | **3** |
| `/flight-summary/full` | История > 30 дней | **6** |
| `/flight-tracks` | любые | 40 |
Стоимость считается за каждую **возвращённую** запись, не за запрос.
---
## Поля ответа `/full`
Все поля `light` плюс:
- `orig_iata` / `dest_iata` / `dest_iata_actual`
- `orig_icao` / `dest_icao` / `dest_icao_actual`
- `flight_time` (секунды)
- `runway_takeoff` / `runway_landed`
- `circle_distance` / `actual_distance` (км)
- `category` (Passenger, Cargo, ...)
Поля могут быть `null` если рейс ещё в воздухе или данные не обнаружены.
---
## Оценка объёма SVO (23.04.2026)
| Окно | `inbound:SVO` | `outbound:SVO` | `both:SVO` |
|------|---------------|----------------|------------|
| 00:0001:00 | 17 рейсов | 2 рейса | 19 рейсов |
Типичный день SVO: ~400 рейсов (прилёты + вылеты).
---
## Рекомендуемая стратегия загрузки
```
Для 4 аэропортов (SVO, DME, VKO, ZIA) за 1 день:
24 окна × inbound: × 4 аэропорта = 96 запросов
24 окна × outbound: × 4 аэропорта = 96 запросов
Итого: 192 запроса × ~10 рейсов × 3 кредита ≈ 5 760 кредитов/день
При остатке 51 000 кредитов: ~9 дней данных
```
> **Важно**: дедупликация по `fr24_id` обязательна — один рейс может попасть
> в два смежных временных окна.

View File

@@ -5,6 +5,9 @@
## 🔑 Главный документ
- **`SYSTEM_OVERVIEW.md`** — полное актуальное описание системы: контейнеры, БД, ETL, UI, статус данных
## API
- **`FR24_API_NOTES.md`** — особенности FR24 API Explorer: лимиты, пагинация через временны́е окна, правильные prefixes, стоимость
## Основные документы
- `tasks/flightradar24/PROJECT.md` — общий статус и границы проекта
- `tasks/flightradar24/docs/ARCHITECTURE.md` — контейнерная архитектура (базовая, устарела частично)