
https://primeeva.com/
Кейс Польский Завод ПраймЕВА
Prime EVA это польское производство автомобильных ковриков из EVA-материала, входит в Evaline Group. Коврики делаются под конкретную машину: марку, модель, поколение, кузов и коробку передач. Покупатель сам выбирает фактуру, цвет коврика и цвет окантовки, комплект (только передние, полный набор, багажник и так далее), а завод производит изделие под заказ и отправляет его по Европе. Магазин работает на английском, немецком и польском.
Снаружи это аккуратный интернет-магазин. Внутри каждый заказ это маленький производственный проект: принять, подобрать лекала под модель авто, запустить в производство, упаковать, получить этикетку доставки, отгрузить и сообщить клиенту, где его посылка. Вот эту невидимую покупателю часть мы и приводили в порядок.
О проекте
Техническая задача - это обеспечить продажу через не-шаблонный интерфейс интернет-магазина, на котором Вы можете выбирать модель, марку и прочие характеристики своего авто, после чего для Вас будут подобраны подходящие коврики, клипсы и дополнительные аксессуары.
Не выходя за публично-известные данные и NDA о систематики данного бизнеса можно сказать следующее:
Программное обеспечение компании взаимодействует со множеством сервисов - фулфилмент сервис WAPI, почтовая рассылка от Майкрософт, база моделей машин, реестр бар-кодов, отдельная CRM система и некоторые другие сервисы.
Проблемы и решения
Мы пришли не на пустое место, а в живую систему, которая уже продавала и производила. Это всегда сложнее, чем начать с нуля: останавливать завод ради красивой архитектуры никто не будет. Вот с чем мы столкнулись.
- Архитектура. Система росла слоями, по мере того как появлялись новые магазины, сервисы и задачи. Связи между частями были неочевидны, и правка в одном месте неожиданно отзывалась в другом.
- Отсутствие документации. Как устроены заказы, статусы и интеграции, знали отдельные люди, а не документы. Любой новый разработчик начинал с археологии.
- Легаси. Часть кода писалась давно и в спешке. Работает, но трогать страшно, а трогать приходится.
- Много тестирования. Каждое изменение касается живых заказов и денег. Проверять приходилось много и вручную, а это медленно и дорого.
- Сложные алгоритмы. Подбор коврика под марку, модель, поколение, кузов и коробку передач, комплекты, цвета и фактуры. Комбинаций очень много, и ошибка здесь означает изделие, которое не подойдёт к машине.
- Сложные интеграции. Магазин, фулфилмент WAPI, почтовые рассылки, база моделей машин, реестр штрих-кодов, отдельная CRM. У каждого сервиса свои правила, свои сбои и свой темп.
- Асинхронные параллельные процессы. Заказы приходят одновременно, статусы меняют производство и доставка, и всё это должно сходиться в одну картину без гонок и дублей.
- Отложенные задачи. Многое должно произойти не сейчас, а позже: письмо клиенту, обновление статуса, повторный запрос к внешнему сервису. Если такая задача тихо теряется, клиент об этом узнаёт раньше компании.
Решения
Начали с диагностики, а не с переписывания. Сначала понять, что есть, потом решить, что менять, и только потом менять.
- Аудит подсистем и ядра. Разобрали код, деплой и базу данных и зафиксировали состояние системы в отдельном документе.
- Мониторинг процессов. Сделали так, чтобы зависший заказ или упавшая интеграция были видны сразу, а не по жалобе клиента.
- Рефакторинг. Не «всё переписать», а минимально необходимые преобразования, которые приближают систему к стандартам и не останавливают продажи.
- Автоматизация развёртывания. Выкладка новой версии перестала быть ручным ритуалом с замиранием сердца.
- Автоматизация доставки. Подобрали архитектурные решения для непрерывной интеграции: изменения идут к пользователям короткими итерациями.
- Автоматизация тестирования. Повторяющиеся проверки забрали у людей и отдали тестам.
- Проектирование архитектуры. Нарисовали схемы «до», «после» и «переход», чтобы вся команда, включая партнёров, видела, куда и каким путём движется система.
- Закрытие уязвимостей. Нашли и закрыли слабые места, которые всплыли на аудите.
- Разработка модуля доставки. Связали заказы с фулфилментом WAPI: этикетки доставки, отгрузка, статусы посылки.
- Разработка модуля упаковки. Упаковка стала отдельным шагом процесса со своим статусом, а не «где-то между производством и отправкой».
- Разработка модуля экспорта и фин-отчётов. Данные о заказах выгружаются для учёта и финансовой отчётности без ручного сведения таблиц.
- Параллелизация. Тяжёлые операции разнесли по параллельным процессам, чтобы рост заказов не превращался в очередь.
Результаты
- Устранение потери клиентов. Сбои, из-за которых заказы застревали между магазином, производством и доставкой, перестали тихо съедать клиентов.
- Улучшение производительности. Система быстрее обрабатывает заказы и не захлёбывается при нагрузке.
- Повышение читабельности. Код стал понятнее, новые люди входят в проект быстрее.
- Повышение тестопригодности. Изменения можно проверить до того, как они встретятся с живыми заказами.
- Покрытие документацией. Знания о системе живут в документах и схемах, а не только в головах.
О команде
В рамках работы над проектом мы собрали рабочую группу с системным архитектором, бизнес-аналитиком и тремя программистами. Параллельно с нами на проекте работали наши партнёры - британская компания Wodo Ecom LLP (Лондон) - их проектный менеджер и специалист по электронной коммерции. Мы активно взаимодействовали с несколькими представителями компании и гибко принимали, анализировали и внедряли новые требования. Для качественной работы по проекту были организованы специальные встречи для проектирования и консолидации необходимых технических процессов, работа была выстроена в треккере, задачи декомпозировались и детализировались в процессе, так как на данный проект не было возможности написать и утвердить полное техническое задание в силу частых перемен и изменений в требованиях а также необходимости в коротких итерациях и конвейере доставки версий.
Выводы
Компании Ingello можно доверить крупные и не шаблонные проекты. Мы не являемся крупнейшей ИТ компанией на рынке, но у нас очень глубокий подход к разработке, наш опыт даёт качественное понимание клиентов, их компаний и внутренних процессов. Обращайтесь к нам с проектами любой сложности.
Экраны и схемы
Сначала то, что видит покупатель. Карточка товара работает как конструктор: фактура, цвет коврика и окантовки, конфигурация комплекта, а ниже последовательный выбор марки, модели, поколения, кузова и коробки передач. Цена пересчитывается по выбранному комплекту.

Выбрали жёлтую окантовку и полный комплект, цена поменялась.

Когда машина выбрана, магазин показывает ориентировочную дорогу заказа: оформлен, в производстве, отправлен, доставлен. Обещание покупателю, за которым стоит вся внутренняя система.

В корзину заказ попадает со всеми параметрами: фактура, цвета, модель автомобиля. Именно эти данные потом уходят в производство.

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

Схема процесса заказа с фулфилментом WAPI: от заказа в Shopify через проверки, производство и этикетку доставки до отправки и уведомления клиента.

Схема по ролям: что делает администратор, а что система, после того как заказ из магазина подтверждён. Детали размыты: это внутренняя кухня клиента под NDA.

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

Технологии
Витрина работает на Shopify, учётная часть написана на Laravel (PHP). Вокруг интеграции: фулфилмент WAPI, почтовые рассылки Microsoft, база моделей автомобилей, реестр штрих-кодов, отдельная CRM. Плюс непрерывная интеграция, автоматическое развёртывание и тесты, которые мы выстроили по ходу проекта.
Где посмотреть
Магазин работает, и пройти путь покупателя от выбора машины до корзины можно самому на сайте primeeva.com. Административная часть и документация закрыты: это внутренние системы клиента под NDA.
Похожее решение: Автобусный букинг: система для перевозчика от сайта до панели собственника.