К содержанию
Работа

Cleanely (ByNext) — платформа стирки и химчистки с доставкой

Cleanely — городской сервис стирки, химчистки и доставки вещей. Клиент оформляет заказ в приложении и выбирает окно, когда у него заберут вещи; курьер приезжает к двери, вещи уезжают в прачечную и возвращаются в согласованное окно доставки. Команда сделала не приложение, а весь контур сервиса — четыре продукта поверх общего бэкенда. Содержательная часть работы лежала не в интерфейсах, а в логистике — в том, как сервис вообще может обещать окно и выполнить обещание.

Главный экран проекта Нажмите, чтобы рассмотреть
Cleanely (ByNext) — платформа стирки и химчистки с доставкой 01 / 05
Cleanely (ByNext) — платформа стирки и химчистки с доставкой — Главный экран проекта
Клиент
Cleanely
Индустрия
Логистика
Срок
10 месяцев
Команда
8 человек

Задача

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

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

Решение

Четыре приложения, одна система. Клиентское приложение — заказ, окна, оплата, отслеживание. Приложение курьера — смена, маршрут, забор и выдача, статусы. Приложение прачечной — приём партии, регистрация позиций, обработка, готовность. Операторская панель — заказы, расписания, очереди, курьеры, площадки и маршруты. Это не отдельные продукты, а роли одной системы: курьер не построит маршрут без операторского распределения, прачечная не получит партию без курьера, клиент не увидит статус без производственного контура.

Окна считаются, а не выбираются. Приложение показывает не абстрактный календарь, а те окна, которые сервис действительно способен обслужить. На доступность окна влияют зона обслуживания адреса, наличие курьерской смены в этой зоне на нужный день, остаток ёмкости окна с учётом уже принятых заказов, минимальное время обработки выбранных услуг, график работы прачечных, способных эти услуги выполнить, их текущая и прогнозируемая загрузка и запас на сбои. Окно возврата всегда производно от окна забора и состава заказа: химчистка верхней одежды и стирка белья возвращаются в разные сроки.

Распределение партий — по сроку, а не по расстоянию. Самая содержательная часть системы. Очевидное решение «везти в ближайшую прачечную» работает плохо: ближняя площадка в загруженном районе может быть забита настолько, что заказ уйдёт в очередь и не успеет к обещанному окну, тогда как площадка подальше свободна и обработает партию сразу. Поэтому система сопоставляет текущую очередь и загрузку каждой площадки, её пропускную способность по конкретной услуге, фактическое среднее время обработки вместо заявленного, оставшееся до закрытия время, набор доступных услуг — не каждая площадка берёт химчистку кожи, обувь или ковры, — попадает ли площадка в сегодняшний маршрут курьера, сколько даст объезд и какой запас остался до обещанного окна. Если дальняя площадка свободна и лежит по пути, партия уезжает туда. Если объезд ломает маршрут или не даёт выигрыша по времени, партия остаётся в ближней очереди. Тот же механизм защищает от перегрузки: диспетчер видит нарастающий затор в сводке очередей и перераспределяет поток заранее, а не по факту сорванных окон.

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

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

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

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

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

Результат

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

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

4 приложения на общем бэкенде: клиент, курьер, прачечная, оператор
15 состояний заказа от создания до закрытия
11 шагов производственного цикла вещи
10 месяцев команда из 8 человек
Ещё

Похожие проекты

Всё портфолио
Yokohama Print: B2B-платформа заказа маркетинговых материалов для дилерской сети
Кейс Yokohama

Yokohama Print: B2B-платформа заказа маркетинговых материалов для дилерской сети

Дилерская сеть заказывала баннеры, стенды и POS-материалы по телефону — поток заявок обрабатывали почти 50 сотрудников. Мы заменили это self-service-порталом, где право на материал, лимит и согласование встроены в оформление заказа, а исполнение платформа планирует сама: со склада, из типографии или разделив заказ между источниками.

Корпоративные порталыDAMS — управление цифровыми активами
PHPMagentoSymfonyMySQL
Резервная навигационная система морского судна без GPS
Работа Логистическая компания

Резервная навигационная система морского судна без GPS

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

Кастомная система
Кассово-складская система с прогнозированием закупок
Работа ООО «Монолит»

Кассово-складская система с прогнозированием закупок

Единая касса, склад и планирование закупок для ООО «Монолит» — компании из трёх магазинов: продукты, стройматериалы и автозапчасти. У каждого направления свой склад и свой ассортимент, но продажи, остатки, партии и заказы поставщикам живут в общей платформе. Каждая пробитая на кассе позиция сразу меняет остаток и попадает в расчёт следующей закупки.

ERP и управление предприятиемПрогнозирование спроса, сроков и отказов
Первый разговор — бесплатно

Расскажите, что хотите изменить

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

Что будет на встрече
  1. 01 Опишите задачу своими словами
  2. 02 Уточним цель и ограничения
  3. 03 Предложим решение и следующий шаг
длительность 45–60 мин