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

Что компания делает в таких случаях? Просит покупателя прислать фото, на котором будет понятно какого кусочка не хватает, и информацию о продукте - название, артикул, количество деталей. Потом проверяется склад с остатками, находятся нужные детали, отправляются почтой. Почтой России, серьезно! Автоматизация такого процесса, и отстроение от затрат времени сотрудников Steppuzzle, помогла бы сильно разгрузить службу поддержки.
Решение было найдено в виде разработки мобильного приложения. Перед тем как продолжить, посмотрите на фото. Попробуйте догадаться, где среди кусочков тот, который получился после применения созданной нами технологии.

Ответ есть в конце статьи. А пока продолжим.
Задача приложения - сгенерировать пазлинку нужного размера и формы, с возможностью отправить ее сразу на печать или сохранить изображение. В коробку с пазлом, в свою очередь, будет заложен кусочек переплетного картона. Распечатанная картинка клеится на картон (клей также в комплекте), вырезается, вставляется в пазл. И вопрос решён.

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

- показываем экран выбора общей формы пазлинки. Для каждой из четырех сторон, три варианта - прямая линия, выпуклая, впалая;
- даем "навестись" на изображение. Двигая и увеличивая картинку пазла, чтобы внутрь созданной области попал нужный участок картинки;
- придаем пазлинке уникальную форму. Для этого, появляются точки, направляющие и сдерживающие. Они работают по принципу кривых Безье, взяты нами из практики рисования компьютерной графики. Используются для создания плавных изгибов, что нам и было нужно. Перемещая направляющие точки, пазлинка изменяется так, как нужно пользователю;
- результат можно отправить сразу на принтер с wi-fi или сохранить в галерее.
Тестировочный этап
Любой программный проект должен быть полностью проверен. С такими необычными функциями, должно быть уделено внимание и всяким необычным сценариям. В создании приложения с генерацией пазла, тестирование стало чуть ли не главным фактором создания на выходе качественного продукта.
Мы понимаем, от тестирования возникает ощущение, что в заказной разработке эта часть процесса не должна касаться клиента. Мол, нужно выдать результат с первого раза, без нареканий. Если что-то не так - контролируйте это сами. Тем не менее, такая процедура есть, никуда от этого не деться. Наш опыт показывает - продукт, особенно сложный, без этого не получается. Поэтому, мы показываем, что такой этап у нас есть, на него нужен ресурс в виде денег и времени, и он является частью организованного в компании процесса. Спорить об этом - дело вкуса.
Вот что в итоге получилось:

Как обещали, ответ на задачку:

Справились? Молодцом!
Если нет - молодцы мы :)
В любом случае, работаем дальше.