Главная/ Кейсы/ Платформа управления автопарком с помощью AI

Платформа управления автопарком с помощью AI

Задача

Разработать клиентское и водительское приложение на Android и iOS. Внедрить функционал обнаружения неполадок в машине с помощью мобильного клиента и машинного обучения.

О проекте

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

Результаты

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

Добавили многофакторную аутентификацию, защиту от плохого соединения, актуализацию часового пояса, а также системы авторизации, смены статуса и распределения заявок.

Технологии

RxJava
RxJava
Koin
Koin
Live Data
Live Data
Single Activity
Single Activity
Combine
Combine
Kotlin
Kotlin
Swift
Swift
Retrofit
Retrofit

Интеграции

2GIS
2GIS

Водительское приложение

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

Студия разработала системы авторизации, смены статуса в приложении и распределения заявок (на такси и доставку груза). Выстроила процесс использования такси, работу встроенной камеры и AI.

Безопасность данных

Чтобы данные пользователей были в безопасности, добавили многофакторную аутентификацию. Если входить по логину и паролю, приложение запросит проверочный код из письма в электронной почте. Дополнительно предложит установить защитный код-пароль, который можно ввести с помощью биометрии.

Автоматическая смена статуса водителя

После первого входа в приложение на главном экране появляется кнопка «Выйти на линию». Когда пользователь нажимает на нее, сервер отправляет запрос на автомобиль. Затем водитель принимает машину, и его статус меняется на «Онлайн» — это значит, что можно принимать заказы. Когда смена закончилась и водитель не получает заказы, статус меняется на «Офлайн».

Изображение

Продуманная навигация

Водитель принимает заявку, и карта переключается в режим навигатора. Благодаря NavigationControl в интерфейсе появляется информация об ограничении скорости, прогресс маршрута и оповещения о поворотах.

Когда водитель на месте, появляется кнопка «Завершить поездку», затем статус поездки меняется и проходит оплата.

Связкой RxJava+Retrofit создали сетевой слой приложения. RxJava используется для многопоточности — запросы отправляются в отдельном потоке и не блокируют UI основного приложения. При этом Retrofit генерирует запросы к серверу.

Изображение

Актуальный часовой пояс

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

Защита от плохого соединения

Даже если водитель окажется в зоне с плохим соединением, приложение не даст сбой. Кэширование маршрутных точек настроили через библиотеку Room, а подключение к интернету можно отследить благодаря ConnectivityManager. Когда соединение восстановится, важные данные синхронизируются с сервером, и водитель спокойно продолжит поездку.

Ускоренная загрузка заявок

Использовали пагинацию (paging library 3), чтобы сократить время на получение заявок для водителя. За счет этого загрузка верхних элементов списка ускорилась в 10 раз. Давние заявки можно посмотреть, пролистывая список.

Изображение

Техосмотр с помощью фотографий

Чтобы сделать предрейсовый техосмотр удобным, добавили встроенную камеру на основе библиотеки CameraX. Водитель сможет фотографировать показатели приборов перед поездкой и отправлять их на обработку, не переключаясь на сторонние приложения.

Экономия ресурсов за счет AI

В приложении есть функции искусственного интеллекта для обработки фотографий. Это позволяет экономить ресурсы и систематизировать поток данных. Когда пользователь загружает фото, отправляется запрос на backend с помощью библиотеки Alamofire. Затем сервер присылает ответ от AI.

Клиентское приложение

Здесь можно заказать такси и доставку груза, забронировать парковочное место, создать заявку на ремонт, а также записаться на мойку и шиномонтаж.

Присвоение ролей

Когда пользователь заходит в аккаунт, система присваивает ему роль. И у каждой роли есть свои возможности. Чтобы это реализовать, написали метод, который берет из JWT-токена нужную информацию о пользователе. Например, при роли ROLE_DRIVER пользователю доступна ячейка с функциями выхода на линию.

Изображение

Полезный функционал
для бронирования парковки

На главном экране есть карта 2ГИС с выезжающей панелью, где находится UICollectionView. Здесь можно добавить свой автомобиль, а также забронировать краткосрочную и долговременную парковку благодаря запросам, которые выполняются с помощью библиотеки Alamofire.

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

Удобная отправка машины в сервис

Чтобы отправить машину в автосервис, пользователь заходит в раздел «Ремонт», выбирает услугу и тип повреждений.

Студия использовала RxJava и Retrofit, что позволило не загружать главный поток приложения. Теперь пользователь может совершать операции, пока запрос на сервер обрабатывается в фоновом режиме.

Онлайн-запись на шиномонтаж и автомойку

Пользователи смогут записаться на шиномонтаж и автомойку прямо в приложении. Функционал позволяет выбрать на карте место, где можно помыть машину и куда заказать выездной сервис по установке или снятию шин. Также получится отследить статус заказа и оценить выполненную работу.

Похожие кейсы

Что о нас говорят в СМИ: делимся экспертизой, кейсы и вдохновляющие истории

Перейти к кейсам
block
Система определения дефектов упаковки с помощью компьютерного зрения

AI, backend development

block
EdLock — мобильное приложение для изучения английского языка

Мобильное приложение