Задача
Вышивальная машина не воспроизводит RGB-картинку. Изображение раскладывается на ограниченную палитру нитей — по воспоминанию владельца, типовой рабочий набор это примерно восемь цветов, — и количество использованных цветов напрямую влияет на стоимость производства. При этом не каждый цвет одинаково важен: одну нить можно исключить почти без заметного изменения логотипа, а удаление другой резко ухудшает результат. Значит, для одного и того же макета существует множество комбинаций палитры с разным визуальным качеством и разной ценой, и выбирать между ними должен клиент.
До автоматизации это выглядело так: клиент присылал менеджеру изображение, тип изделия и примерное расположение декора; менеджер открывал специализированную программу для вышивального оборудования, работавшую только под Windows; вручную перебирал сочетания и количество нитей; сохранял каждую подходящую конфигурацию отдельным файлом; считал стоимость и отправлял клиенту несколько вариантов на согласование. Перебор занимал рабочее время менеджера, зависел от доступности конкретного компьютера и растягивал ожидание на несколько дней.
Решение
Магазин. Основа — Magento: каталог футболок, кепок, толстовок, поло, курток, сумок и аксессуаров с фильтрами по типу изделия, бренду, стилю, материалу, цвету, размеру и доступности; работа и с товарами Garment Decor, и с изделиями, которые предоставил сам заказчик; тиражи и ступенчатое ценообразование; корзина, промокоды, оплата, налоги и доставка; кабинет с историей и повторным заказом. Административная часть закрывает каталог и остатки, цены и акции, покупателей, заказы, статусы производства и контент.
Конструктор вместо переписки. Покупатель выбирает изделие, цвет, размер и количество, загружает логотип или фотографию, размещает изображение на изделии — масштаб, поворот, положение, — указывает область нанесения и количество цветов нитей, не подбирая технологическую комбинацию вручную, и сразу видит предварительный расчёт стоимости.
Почему RPA, а не свой алгоритм. У специализированной программы не было подходящего API и полноценных аналогов. Переписывать её алгоритмы или вмешиваться в закрытый формат файлов оборудования — риск, который не окупается. Поэтому мы автоматизировали существующий инструмент: на виртуальных Windows-серверах развернули лицензированные экземпляры программы, а робот воспроизводит работу оператора через её интерфейс — открывает заявку, загружает изображение, последовательно применяет допустимые конфигурации нитей и сохраняет подготовленные варианты.
Очередь. Между сайтом и настольной программой стоит очередь. Клиенту не нужно держать страницу открытой: после отправки в личном кабинете появляется карточка со статусом обработки, а задача выполняется в фоне на свободном экземпляре.
Сравнение вариантов. Для каждой конфигурации сохраняются визуальный результат, состав палитры и данные, необходимые для расчёта. Практически одинаковые результаты схлопываются: если удаление конкретной нити почти не повлияло на изображение, клиенту не показывают дубль. Стоимость собирается из выбранного изделия, тиража, размера и расположения вышивки, количества цветов и связанных производственных операций — формула остаётся частью производственных правил, а покупатель видит понятную вилку: как выглядит результат и сколько стоит соответствующая конфигурация.
Отдельный жизненный цикл заявки. Заявка на декор существует отдельно от позиции корзины, потому что до обработки утверждённого производственного варианта ещё не существует. У неё десять состояний: черновик конфигурации, отправлена на обработку, ожидает выполнения RPA, обрабатывается, варианты готовы, выбран макет, ожидает согласования или оплаты, передана в производство, изготовлена и отправлена, завершена либо отменена. История хранит исходный файл, параметры размещения, сгенерированные варианты, выбранную конфигурацию, стоимость и решения клиента — повторный заказ не приходится восстанавливать из переписки.
Надёжность робота. Автоматизация настольного приложения требует контролируемой среды: зафиксированы версия Windows, разрешение экрана, расположение окон и версия лицензированного ПО, задания идут по очереди с учётом числа доступных экземпляров. К этому добавлены блокировка повторного запуска одной заявки, контроль открытия нужного окна и загрузки исходного файла, тайм-ауты на продолжительные операции, повтор безопасного шага после временного сбоя, сохранение промежуточных результатов, журнал действий робота с причиной остановки и мониторинг зависших задач и состояния виртуальных машин. Если программа закрылась или перестала отвечать, заказ не теряется: задача остаётся в очереди с зафиксированным этапом и продолжается роботом или оператором.
Передача в производство. После утверждения макета в заказ уходит не только товар и количество, но и расположение декора, выбранная конфигурация нитей, согласованный визуальный вариант и связанные файлы. Это и есть страховка от расхождения между тем, что одобрил клиент, и тем, что попало на вышивальное оборудование.
Результат
Ручной перебор палитр перестал быть обязательной частью работы менеджера. Вместо нескольких дней ожидания клиент обычно получает результаты в течение нескольких часов, а в простых случаях быстрее, и весь цикл от загрузки изображения до выбора производственного варианта виден в личном кабинете. Бизнес сохранил лицензированную программу и проверенный технологический процесс, но убрал из него рутину: подготовку вариантов стало возможно масштабировать без разработки собственного аналога вышивального ПО, а менеджеры переключились с механического перебора на исключения и работу с клиентом. Для покупателя выбор одежды, размещение изображения, расчёт, согласование макета, оплата и производство собрались в один сценарий с прозрачным статусом.