Интересной историей поделились разработчики из Exzotron Technology, когда реализовали пилотный проект для логистических центров одного из маркетплейсов. Решаем здесь стандартную проблему – кражу топлива с помощью новых подходов. Проект показал, что иногда стоит принципиально изменить систему, а не улучшать старое. Здесь наглядно видно, что локальные оптимизации не дали бы нужного эффекта.
Для начала давайте разберемся, как все устроено.
Дано: выдача топлива происходит по QR-кодам. Процесс автоматизирован, и вся инфа передается через терминалы спутникового мониторинга на автомобилях. Но недобросовестные водители смекнули, что можно использовать один код на нескольких заправках одновременно. Как итог – несанкционированный расход топлива.
Очевидная проблема: каждый терминал автономно принимал решение о выдаче топлива. Поэтому насущная задача – настроить централизованную онлайн-выдачу топлива.
Решение: облачный «диспетчер» вместо локальной логики
Выбран путь радикального рефакторинга с выносом всей логики в облако вместо терминалов.
Инженеры разработали ПО, которое позволяет терминалам спутникового мониторинга передавать данные на сервер в режиме онлайн. Теперь принятие решения о выдаче топлива происходит не на конкретном терминале, а в облаке.

Чтобы перенести принятие решения в облако, пришлось полностью изменить логику работы алгоритма выдачи топлива. Для этого разработали собственный протокол связи с сервером, который позволяет экономить трафик для ускорения обмена данными.
Более того, выдача топлива начинается после того, как со стороны сервера придет подтверждение о доступном лимите и отсутствии одновременной выдачи. Самое важное – как только начинается выдача топлива, на стороне сервера блокируется выдача по данному QR-коду на 30 минут.

Как снизить скорость принятия решения сервером до 0,3 секунды
Разберемся в программировании: решение состоит из основного топливного скрипта и ряда вспомогательных скриптов, которые расширяют функционал.
Основной скрипт обеспечивает механизм взаимодействия с дополнительными модулями, что позволяет синхронно выполнять различные части кода и обеспечивать слаженную работу всей системы.
Одним из ключевых компонентов является скрипт Online, который отвечает за установление и поддержание стабильного соединения с сервером. Это достигается за счёт периодических запросов на проверку доступности сервера, что гарантирует непрерывность работы системы.

Основная задача данного скрипта заключается в оперативном запросе данных по уникальному идентификатору iButton и мгновенной загрузке лимитов на терминал.
Благодаря оптимизированному собственному протоколу передачи данных, удалось достичь скорости отклика менее 0,3 секунды, что обеспечивает высокий уровень комфорта для пользователей и минимизирует задержки в работе.
Разработанный протокол также включает в себя функционал отображения текущего статуса топливной колонки и состояния алгоритма, что позволяет оперативно диагностировать возможные неисправности и своевременно реагировать на возникающие проблемы.
Кроме того, в рамках данного алгоритма реализован механизм загрузки данных по картам напрямую с сервера, минуя стандартные системы команд. Это решение значительно ускоряет процесс обработки большого объёма информации, включая загрузку лимитов, имён пользователей и других данных, необходимых в том числе и для последующей печати чеков. Такой подход обеспечивает высокую производительность системы даже при работе с большими массивами данных.


Что получилось и куда двигаемся дальше
Перенос логики в облако ускорил процесс выдачи топлива, обеспечил контроль и гибкость для дальнейшего совершенствования системы. Уникальность системы – в том, что идентификация получателя и решение о выделении топлива происходит теперь на сервере.
Решение находится в стадии «пилота», но уже отмечено исключение ошибок и махинаций с выдачей топлива по QR-кодам.
Самый очевидный результат для компании – экономия топлива. Но еще здесь снижаются трудозатраты службы безопасности и экономистов на разбор спорных и проблемных ситуаций.
Дальше можно настроить передачу данных о состоянии топливораздаточной колонки: положение пистолета, активность налива, текущая доза. Представьте, если это позволит создать онлайн-операторскую.
Из оборудования использовали: терминал спутникового мониторинга с функцией hub, топливораздаточный комплекс и считыватель QR-кодов.
Комментарии (4)
Vdm_ro
11.06.2025 13:46Похоже на бред недавно нанятого эффективного менеджера...
Из за перекопанных дорог/пробок пришлось дать кругаля - сиди на заправке без топлива... доставка сорвана.
Приехал к аэропорту - а там борт №1, связи нет, разрешения на топливо нет - доставка сорвана.
Вы еще уборщице воду для мытья полов выдавайте согласно регламента по метражу следующего убираемого помещения... тут коридор маленький - литр на руки, потом вылила прошлое - приходи еще 2 литра получи... И штраф если тряпкой намоченной в прошлой воде другое помещение мыть начала - нецелевое расходование средств!
saege5b
11.06.2025 13:46При БПЛА угрозе, в Иванове отключают мобильный интернет глобально, во всём городе разом.
Kamil_GR
11.06.2025 13:46Архитектура подобных систем отработана десятками лет работы процессингоовых компаний предлагающих топливо по топливным картам. Причем с миллионами клиентов и тысячами АЗС. Лимиты, топливные кошельки, статус трк (для онлайн заправки), и сотни неочевидных нюансов. Например переход дтз-дтл, брендированное топливо, возврат не вошедшего топлива в бак и т.д..
Isiirk
Как решён вопрос отсутствия связи/лежащего облака и т.д.