Перейти к содержанию

Контракт: 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 — не null
  • icao24 — формат: 6 hex-символов (^[a-f0-9]{6}$)
  • origin_country — не null
  • timestamp — не null
  • latitude — диапазон: -90..90
  • longitude — диапазон: -180..180

Warnings

  • altitude — диапазон: -500..50000 м (аномалия за пределами)
  • velocity — диапазон: 0..1000 м/с
  • heading — диапазон: 0..360°
  • data_freshness — не старше 60 минут
  • ground_altitude_check — если on_ground=true, то высота < 100 м

Интересный custom-check

- name: "ground_altitude_check"
  type: "custom"
  expression: "not on_ground or (altitude is None or altitude < 100)"
  severity: "warning"
  message: "Aircraft on ground should have low or null altitude"

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 платформы)

Ссылки