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

Что нового

Все значимые изменения платформы Kruma Data Contracts.


Quality Validator v1.0.1

BREAKING CHANGE — Именование Kafka-топиков

Начиная с v1.0.1 изменён формат именования топиков:

Топик Было (v1.0.0) Стало (v1.0.1)
Production sales.orders_prod sales.orders.prod
Dead Letter Queue sales.orders_dlq sales.orders.dlq
Raw (без изменений) sales.orders.raw sales.orders.raw

Требуется: пересоздание топиков Kafka или алиасы. Подробнее — в руководстве по интеграции.

Дата: 1 февраля 2026

Критические исправления

  • Именование топиков — Устранена несогласованность разделителей: теперь единообразно используется точка (.) для raw, prod и dlq
  • Уязвимость в custom-выражениях — Небезопасный eval() заменён на sandbox-окружение с ограниченным набором безопасных функций
  • Сериализация DLQ — Исправлен вызов несуществующего метода .to_dict().model_dump() (Pydantic v2)
  • Устаревший datetime.utcnow() — Заменён на datetime.now(timezone.utc) (совместимость с Python 3.12+)

Новая функциональность

  • SQL-правила — Добавлена заглушка _validate_sql() с информативным сообщением и предложением workaround
  • REFERENCE-правила — Добавлена заглушка _validate_reference() для будущей валидации ссылочной целостности

Улучшения кода

  • Полная типизация PEP 484/585 (X | None, list[X])
  • Pydantic v2 best practices: ConfigDict, frozen=True, str_strip_whitespace
  • __slots__ для критичных классов — снижение потребления памяти до 30%
  • Полные docstrings в формате Google для всех публичных API
  • Валидация имён правил: только snake_case
  • Алиас null для None в custom-выражениях (совместимость с JSON/YAML)

Безопасность

Критическое исправление безопасности

Ограничено окружение выполнения custom-выражений:

  • Нет доступа к __import__, open(), exec(), eval()
  • Доступны только безопасные функции: len, str, int, float, bool, abs, min, max, sum, round
  • Невозможен доступ к файловой системе, сети и системным ресурсам

Quality Validator v1.0.0

Дата: 23 января 2026

Первый релиз Quality Validator — модуля валидации качества данных на базе Python.

Ключевые возможности

  • Движок валидации с 10 типами правил: not_null, unique, range, regex, enum, freshness, format, custom, sql, reference
  • Интеграция с Apache Kafka: автоматическая маршрутизация в .prod / .dlq
  • Загрузка контрактов из YAML-файлов
  • Пакетная валидация с метриками и статистикой
  • DLQ-записи с полным контекстом ошибок для debug и replay
  • Prometheus-метрики для мониторинга

Контракты данных

sales/orders v2.1.0

Дата: 23 января 2026

  • Добавлено поле discount_amount (nullable)
  • Добавлено поле customer_phone (nullable)
  • Нарушающих изменений нет

warehouse/inventory v1.2.0

Дата: 24 января 2026

  • Добавлены поля location_zone, location_row, location_shelf
  • Добавлено поле cost_price
  • Нарушающих изменений нет

aviation/flights v1.0.0

Дата: 28 января 2026

Демо-контракт

Создан для демонстрации возможностей платформы на примере данных OpenSky Network (ADS-B).

  • Первая версия контракта
  • Схема: ICAO24, координаты, высота, скорость, курс
  • 11 правил качества: NOT NULL, RANGE, REGEX, FRESHNESS, CUSTOM