Контракт: aviation/flights¶
Демо-контракт
Этот контракт создан для демонстрации возможностей платформы Kruma на примере открытых данных ADS-B (OpenSky Network). Используйте его как образец для ознакомления с форматом контрактов.
Метаданные
- Namespace: aviation
- Name: flights
- Version: 1.0.0
- Owner: data-platform
- Email: data-platform@kruma.io
- Mattermost: #data-platform
Описание¶
Данные о перелётах воздушных судов в реальном времени. Источник — OpenSky Network API (ADS-B данные).
Содержит информацию о позиции, скорости, высоте и других параметрах полёта для воздушных судов.
Примеры использования:
- Мониторинг воздушного трафика
- Аналитика авиаперевозок
- Визуализация полётов на карте
Kafka Topics¶
| Topic | Описание | Retention |
|---|---|---|
aviation.flights.raw | Сырые данные из OpenSky API | 7 дней |
aviation.flights.prod | Провалидированные данные | 30 дней |
aviation.flights.dlq | Проблемные записи | 90 дней |
Schema (Avro)¶
schema.avsc
{
"type": "record",
"name": "Flight",
"namespace": "aviation.flights",
"doc": "Данные о позиции воздушного судна из ADS-B/OpenSky Network",
"fields": [
{"name": "icao24", "type": "string", "doc": "ICAO 24-bit адрес транспондера (hex)"},
{"name": "callsign", "type": ["null", "string"], "doc": "Позывной (8 символов)"},
{"name": "origin_country", "type": "string", "doc": "Страна регистрации"},
{"name": "longitude", "type": "double", "doc": "Долгота (WGS84)"},
{"name": "latitude", "type": "double", "doc": "Широта (WGS84)"},
{"name": "altitude", "type": ["null", "double"], "doc": "Барометрическая высота (м)"},
{"name": "velocity", "type": ["null", "double"], "doc": "Скорость (м/с)"},
{"name": "heading", "type": ["null", "double"], "doc": "Курс (0-360°)"},
{"name": "vertical_rate", "type": ["null", "double"], "doc": "Верт. скорость (м/с)"},
{"name": "on_ground", "type": "boolean", "doc": "На земле?"},
{"name": "timestamp", "type": {"type": "long", "logicalType": "timestamp-millis"}, "doc": "Время (UTC)"}
]
}
Quality Rules¶
Critical (error)¶
icao24— не nullicao24— формат: 6 hex-символов (^[a-f0-9]{6}$)origin_country— не nulltimestamp— не nulllatitude— диапазон: -90..90longitude— диапазон: -180..180
Warnings¶
altitude— диапазон: -500..50000 м (аномалия за пределами)velocity— диапазон: 0..1000 м/сheading— диапазон: 0..360°data_freshness— не старше 60 минутground_altitude_check— еслиon_ground=true, то высота < 100 м
Интересный custom-check
SLA¶
Availability¶
- Target: 99.5% (демо-уровень)
- Schedule: 24/7
Freshness¶
- Max age: 60 минут
- Alert threshold: 2 часа
Response Time¶
| Priority | Response |
|---|---|
| Critical | 1 час |
| High | 4 часа |
| Medium | 1 день |
Consumers¶
| System | Team | Usage | Criticality |
|---|---|---|---|
| Flight Analytics Dashboard | analytics | Аналитика трафика | medium |
| Real-time Map | frontend | Визуализация | low |
Lineage¶
graph LR
A[OpenSky Network<br/>REST API] -->|HTTP Poll| B[Data Ingester]
B --> C[aviation.flights.raw]
C --> D[Quality<br/>Validator]
D --> E[aviation.flights.prod]
D --> F[aviation.flights.dlq]
E --> G[Flight Analytics]
E --> H[Real-time Map]
style A fill:#2196F3
style D fill:#FF9800
style F fill:#F44336 История версий¶
v1.0.0 (2026-01-28)¶
- Первая версия контракта (демо для Starter платформы)