Задача
Индивидуальная вывеска обычно заказывается перепиской. Клиент описывает размеры и материал, отправляет логотип, получает макет, просит изменения, согласует стоимость, и только после этого заказ уходит в работу. Такой цикл не масштабируется, а главное, между визуальным пожеланием клиента и производственной спецификацией остаётся разрыв, который каждый раз закрывается вручную и каждый раз может закрыться неправильно.
Перевести такой цикл на самообслуживание мешает физика. Растровый логотип, отличный на экране, разваливается на табличке шириной в метр. Контур, нарисованный мышью, не всегда можно безопасно вырезать. Крепление, доступное для алюминия, не применимо к виниловой надписи. Значит, редактор должен знать производственные ограничения и сообщать о них до оплаты. Плюс к этому платформа должна была обслуживать и разовую покупку частного клиента, и корпоративные серии с одним макетом и разными подписями, оплату по счёту и локализованные страновые витрины.
Решение
Каталог в четырёх разрезах. Войти в продукт можно по типу изделия, по материалу и технологии, по назначению или сразу по готовому дизайну. По назначению таблички делятся на дверные, парковочные, информационные, предупреждающие, фасадные, магазинные и номерные. Так покупатель может начать со своей задачи, без производственных терминов.
Универсальная модель продукта. Каждое изделие описывается не SKU, а набором взаимосвязанных параметров: тип продукции, способ изготовления, материал и его вариант, ширина и высота, стандартная или свободная форма, параметры контурной резки, основной и дополнительные цвета. К ним добавляются изображения и текст, способ крепления, количество, производственные ограничения, расчётная цена и подготовленные файлы. Правила продукта отсекают несовместимые комбинации. Самая неочевидная механика — переход на другое изделие: редактор переносит дизайн там, где это возможно, и корректирует параметры, которые новый материал или способ производства не поддерживает.
Редактор, который знает про производство. Из редактора можно переключаться между типами изделий, не возвращаясь в каталог. Ширина и высота задаются числом и интерактивными контролами, для тиража есть быстрые варианты. Графика берётся из внутренней библиотеки или загружается пользователем, поддерживаются векторные и растровые форматы. Текст добавляется отдельными объектами со шрифтом, размером, начертанием, выравниванием и цветом. Каждый остаётся редактируемым элементом макета. Формы и контур вокруг изображения связаны с производственными ограничениями, поэтому на экране пользователь видит приближённый результат изготовления. Набор допустимых цветов зависит от материала и технологии, а способы монтажа показываются только там, где они применимы. Плюс обычная рабочая механика: отмена и повтор действий, копирование, порядок слоёв, выравнивание. Внизу всегда физический размер, количество и итоговая стоимость, а если изображение выходит за безопасный масштаб — предупреждение до оформления заказа.
Предпечатная проверка на входе. Загруженный файл проходит техническую обработку: проверку типа и читаемости, получение фактических размеров, оценку разрешения при выбранном физическом масштабе, создание предпросмотра, контроль выхода за рабочую область. Оригинал хранится отдельно от экранного представления и привязывается к пользователю, макету и заказу. Файлы с неподдерживаемым содержимым или недостаточным качеством уходят в сценарий ручной проверки и без неё в печать не попадают.
Цена как функция конфигурации. Стоимость не хранится значением в карточке: она считается из типа продукта, материала, размеров, технологии, формы или контура, крепления, количества и дополнительных операций, с учётом тиражных условий. Требование к расчётному модулю было простым и жёстким: одна и та же конфигурация должна одинаково интерпретироваться в редакторе, корзине, при оформлении заказа и в административной панели, а зафиксированный расчёт — сохраняться внутри заказа.
Сохранение и передача макета. Дизайн получает устойчивую ссылку: к нему можно вернуться позже, отправить другому человеку по почте, получить его и заказать либо доработать. Сохраняется редактируемая структура: продукт, размеры, элементы холста, стили, слои, исходные файлы и производственные параметры. Для пользователя без аккаунта предусмотрен сценарий создания доступа через электронную почту. Для корпоративных серий базовый макет работает как мастер-шаблон: разные имена, номера или подписи обрабатываются как варианты одного заказа с обязательной проверкой перед производством.
Снимок конфигурации в заказе. Платёжное уведомление обрабатывается идемпотентно: повторный ответ провайдера не создаёт второй заказ и не запускает производство повторно. Заказ хранит неизменяемый снимок конфигурации, поэтому позднее изменение сохранённого дизайна не меняет уже оплаченную производственную задачу, а производственная версия файла лежит отдельно от последующих правок клиентского макета. Уже запущенный заказ остаётся воспроизводимым.
Явные состояния для исключений. Расхождения между редактором и производством переведены в состояния и очереди: контур невозможно безопасно изготовить, сохранённый дизайн использует снятый с продажи материал, два клиента одновременно редактируют общий макет, заказ оплачен, но производственный экспорт временно недоступен, одна позиция требует ручной проверки, а остальные готовы. Каждый такой случай виден в административной панели как задача.
Результат
В Sign Labs заказ персонализированной печатной продукции стал сквозным цифровым сценарием. Покупатель сам собирает визуальный макет и коммерческую конфигурацию, а система без повторного ручного набора сохраняет те же данные как производственное задание. В задание попадают данные заказа и продукта, материал, размеры, тираж, технология, цвета, контур и крепление. К ним прикладываются исходный и подготовленный файлы, предпросмотр и предупреждения.
Товарная модель и редактор централизованы, а локализованные витрины настраивают язык, домен, валюту, налоги, доставку и платёжные сценарии поверх общего производственного ядра. Событийная аналитика показывает весь путь: запуск редактора, ошибки загрузки, передачу макета, оплату и причины ручной проверки. По этим данным можно улучшать и конверсию магазина, и качество входящих производственных заданий.