Все кейсы
#React
#Laravel
#TypeScript
#PostgreSQL

Система автоматизации учета автопарков

Разработали MVP облачной системы для автоматизации и облегчения работы учета автопарков в автосалонах
01 — Контекст
В автомобильной отрасли существует проблема учета автопарка: для хранения, учета и обновления данных об автомобилях использовались excel-таблицы, заполнять которые приходилось вручную. Массив данных был такой большой, что работать с этим стало сложно. Клиент увидел в этой ситуации возможность создать такой инструмент, который поможет систематизировать массив данных и облегчить работу с ними.

Клиент обратился к нашей команде с пониманием этой проблемы и прототипами интерфейсов системы, которая могла бы ее решить.

Проблема и задача

Разработать MVP облачной системы для учета автосалонов. Необходимо было создать сервис, который позволит: 
автоматизировать работу учета автопарка;
перенести в облачное хранилище;
сделать рутинную ручную работу более понятной и удобной.

Технологии и архитектура

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

Backend

Для написания бэкенда проекта мы использовали PHP Laravel 8.2. 

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

В качестве административной панели мы взяли  Laravel Nova.
База данных — PostgreSQL.
Система очередей (для выполнения отложенных задач) — Redis.
Технологии и архитектура

Frontend

Фронтенд мы написали на React — одном из наиболее популярных инструментов для разработки в формате Single Page Application. TypeScript позволяет сделать код проекта более строгим и минимизирует вероятность синтаксических ошибок со стороны разработки.

Кроме этого, используются стейт-менеджеры — TanStack Query и Zustand. Работа с формами ведется на react-hook-form & yup. Сборщик проекта — Vite.

Этапы работы

Было только общее видение продукта и схемы бизнес-процессов, прежде чем приступить к разработке, мы изучили и оценили все вводные. Важно было четко сформулировать каждый этап и спланировать работу.
Этапы работы

Подготовительный этап 

Итак, мы приступили к оценке проекта и формулированию потребностей заказчика. Каждую фичу обсуждали и согласовывали с клиентом. Это помогло синхронизировать работу с видением клиента и выбрать наиболее оптимальные инструменты разработки.

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

Этап активной разработки

В первую очередь мы проработали фундамент проекта — административную часть сервиса. Создали и проработали массив справочников, в которых структурирована информация о характеристиках автомобилей.
Следующим этапом была настройка базовых механик: авторизация/регистрация, email-уведомления, базовый лейаут и навигация. Обязательным пунктом была реализация логирования действий в системе для отслеживания всех изменений доступных сущностей системы.
Далее приступили к детальной разработке станицы автомобиля. Ключевая задача — помочь будущему пользователю быстро ориентироваться в данных и находить нужную информацию. Нам понадобилось организовать большое количество вкладок, где будет сгруппирована информация по темам.
В рамках данного блока работ была настроена интеграция с сайтом auto.ru для получения всех необходимых данных по автомобилям.
Интеграция с auto.ru включает 2 части:
1) XML фид — ежедневно по ссылке система забирает актуальный фид;
2) API для дилеров — система по API забирает необходимую информацию с сайта auto.ru.

Система работает по следующему принципу: по XML-фиду получаем сразу всю информацию. Далее за деталями обращаемся к API, так как XML сильно неполный и в нем нет информации по техническим параметрам и опциям комплектаций.
Последним стал этап создания страницы со складом автомобилей, где выводится основная информация об автомобилях, которые находятся на складе автосалона. Страница представляет собой большую таблицу и большое количество инструментов, которые позволяют работать с этой таблицей. К инструментам можно отнести вывод необходимых столбцов с важной информацией об авто, фильтрацию по каждому столбцу, экспорт, поиск, деление на активные/неактивные автомобили.

Функционал

Управление системой построена на ролевой модели. Функционал расписан для трех типов пользователей: администратора, организации и менеджера.  

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

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

Доступ сотрудника автосалона к этой информации помогает более качественно и профессионально презентовать клиенту автомобиль и облегчает процесс продажи.

Структура сервиса

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

Компании

В разделе можно вносить, изменять, хранить и дополнять данные обо всех автосалонах: название, ИНН, время создания и время последнего редактирования. К каждому отдельному автосалону можно прикрепить неограниченное число пользователей (сотрудников автосалонов).
Структура сервиса. Административная панель

Пользователи

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

Справочники

Все справочники, представленные в системе, делятся на внешние и внутренние. А внутренние, в свою очередь, — на статические и пользовательские.


Внешние справочники.
Внешние справочники реализованы с помощью интеграции с auto.ru. Это позволяет компаниям всегда иметь актуальный перечень марок, моделей, поколений и других свойств автомобиля, которые постоянно обновляются.
Внутренние статические справочники. 
Значения данных в статических справочниках заданы на этапе разработки. При этом названия данных могут дополняться неограниченное количество раз. Редактировать данный справочник можно из административной панели.
Внутренние пользовательские справочники. 
Эти справочники отображаются в публичной части у всех компаний. Первичные значения можно задать из административной части, а из публичной — отредактировать эти значения и добавить свои. 
Структура сервиса. Публичная часть

Личный кабинет пользователя

Личный кабинет пользователя содержит в себе основную информацию о каждом сотруднике автосалона (имя, фото и контактные данные). В разделе «Система» пользователь может менять данные о формате времени и часовом поясе.
Структура сервиса. Публичная часть

Личный кабинет компании

Функционал личного кабинета компании позволяет управлять:
основной информацией о компании, которая содержится в карточке (название, город, адрес, график работы, номер телефона, электронная почта и сайт);
справочниками, которые содержат информацию о характеристиках автомобилей (виды расчета, группы, источники поступления, источники продаж, контрагенты, поставщики, группы, источники поступления, источники продаж, контрагенты, поставщики, статусы, типы контрактов и формы продаж); 
ценами (можно проставлять соответствующие теги для каждого конкретного автомобиля: цена в рекламе, цена в кредит, цена за безналичный расчет, цена со страховкой).
Структура сервиса. Публичная часть

Список автомобилей 

Раздел позволяет видеть информацию обо всех автомобилях на складе — все в одном окне.

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

Детальная страница автомобиля

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

Результаты

Разработали MVP проекта, который включает в себя весь базовый и основной функционал. Весь процесс работы над проектом занял около 8 месяцев с последующей поддержкой. 

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

Планы

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

Команда разработки

Анастасия Аристова
Руководитель проектного офиса
Анна Добрыдень
Руководитель проекта
Мария Шестерякова
Аналитик
Батрадз Дзугаев
Frontend-разработчик
Евгений Новопашин
Аккаунт-менеджер
Олег Казаков
Архитектор
Дмитрий Плотников
Backend-разработчик
Александр Шорохов
Специалист по тестированию

Связаться с нами

Хотите обсудить свой проект? Воспользуйтесь формой обратной связи и мы начнем общение.