Как определить сливы топлива и махинации с заправками с помощью ИИ

    Andrew M., VP of Data and Solutions
    АвторAndrew M., VP of Data and Solutions
    October 30, 2026
    Топливный пистолет из точечного растра, корпус выделен рамкой с пометкой: заправка 67 л, 87%

    Поиск сливов топлива и манипуляций с заправками на базе телематических данных всегда был интересной задачей. Современные мониторинговые системы, в том числе Navixy, успешно справляются с ней. Однако на смену классическим алгоритмам детекции постепенно приходят ИИ-модели, которые умеют классифицировать события и находить аномалии напрямую по сырым данным.

    Мы протестировали такой подход на практике: создали прототип, который передает модели Jev от Typesafe AI фрагменты телематических данных из IoT Query (аналитической платформы Navixy) и получает классификацию события вместе с оценками для интерпретации результата. Подчеркнем: Jev не позиционируется как замена существующих решений по определению топливных событий. Это дополнительный инструмент и новый способ построения решений.

    Главная ценность подхода — гибкость и кастомизация. Сочетание IoT Query и Jev позволяет разработчикам и системным интеграторам создавать собственные приложения принятия решений, точно адаптированные под бизнес-процессы конкретной компании. Речь не о том, чтобы заменить то, что уже работает, а о расширении возможностей с помощью ИИ-моделей.

    Где и зачем нужны такие ИИ-модели, как Jev

    Jev не пишет тексты и не генерирует код. Ее главная задача — возвращать формализованные решения и вероятности, которые можно сразу использовать в приложениях и системах принятия решений. На вход модель получает два блока:

    1. Состояние системы (параметры, значения, JSON-контекст).
    2. Набор типизированных вопросов.

    Модель Jev оценивает каждый вопрос относительно переданного состояния и отдает один из зафиксированных вариантов вместе с вероятностью. Пользователь или его агент могут использовать результаты дальше в приложениях, например, для принятия решений.

    Как с помощью Jev найти сливы и заправки?

    В управлении автопарком вопросы, связанные с топливом, всегда являются одними из самых острых. Сегодня сливы происходят реже, но махинации с чеками никто не отменял: по чеку 50 литров, фактически залито 40.

    Традиционно для поиска таких событий используют скользящие средние и классическое машинное обучение. Теперь ядром определения событий может стать ИИ-модель, которая на сырых данных отвечает: «это заправка», «это слив», «это калибровка/перемещение жидкости» или «не уверен», и сразу добавляет вероятность и рассчитанный объем.

    Для работы с кастомной аналитикой в экосистеме Navixy удобно использовать IoT Query — решение, которое предоставляет доступ ко всему спектру клиентских данных: от телематических до бизнес-данных, используемых для интеграций и построения собственных аналитических приложений. В нашем прототипе мы используем сырые данные как основу для анализа событий, а Jev помогает определить, к какому типу относится каждое из них.

    Схема работы прототипа проста:

    1. Алгоритм отслеживает уровень топлива и фиксирует события-претенденты (резкие изменения объема).
    2. Вырезает короткий фрагмент временного ряда с телематическими параметрами.
    3. Передает его в Jev вместе с типизированными вопросами.
    4. Модель возвращает класс события, вероятность и дополнительные оценки.

    В результате получается запись вида: 13:32 — заправка, 67 литров, вероятность 87 %

    Как выглядит запрос и ответ

    С технической точки зрения взаимодействие выглядит просто. Мы передаем модели объект state с параметрами события и объект questions с тем, что именно нужно оценить.

    Запрос к модели:

    {
      "model": "typesafe/jev-1.13",
      "state": {
        "vehicle_speed": "...",
        "vehicle_stationary": "...",
        "gps_quality": "...",
        "..."
      },
      "questions": {
        "real_fuel_increase": {
          "type": "noul",
          "instructions": "Is the observed fuel increase a genuine added volume rather than sensor noise, tilt, a spike, or recovery from zero?",
          "criteria": {
            "true": "Sustained, physically plausible increase from a non-empty tank.",
            "false": "Change is within noise, oscillatory, a recovery from zero, or not a real fill."
          }
        },
        "..."
      }
    }
    

    В state перечислены параметры и значения окна: бак (было/стало/дельта/скорость залива), движение (скорость, стоял ли, GPS), качество сигнала (шум, дыра, число точек) и пороги профиля (минимум заправки, пустой бак, максимальная скорость «на колонке»).

    В questions — вопросы «да/нет» (noul): реальный плюс, реальный минус, шум, стоял, похоже на заправку, на слив, калибровка. И один вопрос «выбери класс» (event_type): заправка / слив / аномалия / калибровка / не уверен.

    Ответ содержит оценки по отдельным признакам и результат классификации:

    {
      "answers": {
        "real_fuel_increase": { "noul": 0.87 },
        "real_fuel_decrease": { "noul": 0.11 },
        "sensor_noise": { "noul": 0.07 },
        "vehicle_stationary": { "noul": 0.77 },
        "matches_refuel_profile": { "noul": 0.94 },
        "matches_drain_profile": { "noul": 0.02 },
        "likely_calibration": { "noul": 0.08 },
        "gap_confounds_event": { "noul": 0.07 },
        "event_type": {
          "choice": "REFUEL",
          "confidence": 1.0,
          "probabilities": {
            "REFUEL": 1,
            "FUEL_DRAIN": 0,
            "FUEL_SENSOR_ANOMALY": 0,
            "CALIBRATION_SHIFT": 0,
            "UNKNOWN_FUEL_EVENT": 0
          }
        }
      }
    }
    

    В этом примере модель выбрала класс REFUEL, оценила соответствие профилю заправки в 0,94 и реальность увеличения уровня топлива — в 0,87.

    Анализ топливных событий с Jev в прототипе: заправка на 63,0 л, классифицированная со 100 % уверенностью на графике уровня топлива, с вероятностями классов, причинами и сигналами

    Какой результат мы получили?

    Мы тестировали модель на недельных окнах данных, приближая условия к задачам флит-менеджера, и сравнивали результаты с фактическими событиями.

    Показатель Результат
    Охват данных 93,8 %
    Точность 98,4 %
    Достоверность событий заправки и рассчитанного объема 99 %

    В прототипе использовались 25 параметров из слоя сырых данных IoT Query, включая настраиваемые пороги для конкретного автопарка и сенсоров, а также кастомные метрики.

    Такая гибкость позволяет учитывать реальные рабочие процессы: объединять последовательные изменения в одно событие заправки, отличать сбои телеметрии от потенциального хищения и корректно обрабатывать пограничные ситуации.

    Что дальше?

    Заправки и сливы — лишь один из сценариев. В повседневной работе автопарка таких задач гораздо больше:

    • вход и выход из геозоны — согласованное изменение маршрута или нарушение;
    • длительный простой — плановая разгрузка или ожидание;
    • потеря связи — временное отсутствие покрытия или поломка устройства.

    Связка IoT Query (сырые данные) + Jev (детерминированная классификация с вероятностями) может стать основой для кастомного решения событийной аналитики или автономной системы принятия решений во всех перечисленных случаях. Хотите создавать свои приложения на базе телематических данных, напишите нам.

    Подробнее о том, как строить агентные системы на телематических данных, — в статье о разговорной аналитике.

    Поделиться