Как телеметрия превращается в прогноз задержки (хак.МТТЕХч2)
В прошлом посте показал общую архитектуру проекта. А теперь хочу на конкретном примере показать, что происходит с данными автобуса внутри системы. Представим, что автобус отправляет на сервер очередное сообщение: { “vehicle_id”: “A123”, “timestamp”: “12:35:20”, “latitude”: 56.8389, “longitude”: 60.6057, “speed”: 32.5 } Для человека это просто набор технических значений. Но backend должен превратить их в понятную информацию.
1. Получаем данные от автобуса Сначала backend принимает сообщение и разбирает его. Получаем: Автобус: A123 Время: 12:35:20 Координаты: 56.8389, 60.6057 Скорость: 32,5 км/ч На этом этапе мы уже понимаем, где находится автобус, когда он передал данные и с какой скоростью движется.
2. Смотрим на расписание Теперь нужно понять, насколько автобус отклоняется от своего графика. Допустим: Маршрут: №50 По расписанию: 12:32 Фактически: 12:35 Получается, автобус уже отстаёт примерно на 3 минуты. То есть backend сопоставляет текущее состояние автобуса с его расписанием.
3. Готовим данные для ML-модели Теперь backend собирает нужную информацию и передаёт её ML-сервису. Например: { “vehicle_id”: “A123”, “speed”: 32.5, “latitude”: 56.8389, “longitude”: 60.6057, “current_delay”: 3.0 } То есть ML получает уже не сырую телеметрию, а подготовленные данные для прогнозирования.
4. Получаем прогноз ML-модель анализирует данные и возвращает прогноз. Например: { “predicted_delay”: 4.2 } То есть система прогнозирует, что задержка составит около 4,2 минуты.
5. Показываем результат человеку Backend сохраняет результат и отправляет его на frontend в реальном времени. И вместо набора координат и технических полей пользователь видит: 🚌 Автобус A123 Маршрут №50 Скорость: 32,5 км/ч Текущая задержка: +3 мин Прогноз задержки: +4,2 мин В итоге получается такая цепочка:
данные от автобуса → состояние автобуса → сравнение с расписанием → ML-прогноз → информация на экране
И вот здесь для меня как раз становится интересен backend. Потому что задача не заканчивается на том, чтобы принять данные и вернуть JSON. Нужно сделать так, чтобы сырые данные из одного источника постепенно превращались в понятную информацию для человека. А между этими точками находятся парсинг данных, бизнес-логика, база данных, API и взаимодействие нескольких сервисов. В следующем посте покажу уже техническую часть — как именно Backend и ML обмениваются данными.