Приложение для DIY-сети: региональные цены, склады и услуги в одном заказе
Покупатель DIY-сети — сети магазинов стройматериалов и товаров для дома — выбирает товар в одном городе, забирает его со склада в другом и нередко просит распилить материал или подобрать колер прямо в заказе. Поэтому приложение такой сети работает как интерфейс к ценам, остаткам и сервисным работам конкретной точки, и требования к данным здесь строже, чем в каталоге одного интернет-магазина. Разберём правила, которые стоит заложить до старта разработки: по ценовым зонам, по складам и по услугам внутри заказа.
Зачем DIY-сети собственное приложение
Ремонт — это серия закупок, растянутая на недели: грунтовка, через три дня профиль, ещё через неделю ламинат и плинтус. Такой сценарий держится на сохранённом списке материалов и на точных данных о наличии в городе покупателя.
В DIY-сегменте приложение закрывает четыре задачи, которые мобильный сайт решает слабо:
- Повторные закупки по одному объекту. История заказов и списки материалов превращают разрозненные визиты в один проект.
- Самовывоз крупногабаритных товаров. Машину и грузчиков планируют заранее, поэтому нужны статус готовности заказа и адрес склада выдачи.
- Сервисные работы. Распил, колеровка и обрезка полотна оформляются вместе с товаром.
- Профессиональные покупатели. Прорабы и мастера закупаются регулярно повторяющимися наборами: им важны артикулы, упаковки целиком и повтор корзины.
Региональные цены: как они устроены в каталоге
Привязка цены к торговой точке
В федеральной сети один артикул стоит по-разному в разных городах: отличаются логистика, арендная ставка, местные акции и состав ассортимента. Поэтому цена в приложении привязывается к торговой точке или ценовой зоне, а не к пользователю и не к его устройству.
Отсюда следует порядок работы интерфейса: город выбирается до первой цены, которую видит покупатель, переключатель города остаётся заметным на всех экранах каталога, а при его смене пересчитываются цена, наличие и состав акций, а не только адрес магазина.
Способы определить город покупателя
| Способ | Что получает покупатель | Ограничение |
|---|---|---|
| Выбор города вручную при первом запуске | Цены и наличие выбранного города с первого экрана | Ошибка в выборе видна только на кассе |
| Геолокация с подтверждением | Город подставляется сам, покупателю остаётся подтвердить | Доступ к геолокации даёт не каждый: нужен запасной сценарий |
| Город из профиля и истории заказов | Выбор переносится между устройствами и работает при повторных покупках | Требует авторизации; после переезда покупателя данные устаревают |
| Привязка к конкретному магазину или пункту выдачи | Цена и наличие совпадают с той точкой, куда покупатель поедет | Каталог сужается: во всех точках сети продаётся не весь ассортимент |
Расхождения с кассой и локальные акции
Цена в приложении и цена на кассе берутся из одного прайс-листа, иначе спор на кассе выигрывает покупатель, а доверие к приложению теряет сеть. По локальным акциям в карточке указывается и условие, и территория действия: акция «в магазинах Поволжья» без такой пометки читается как федеральная.
Остатки и склады: что видит покупатель
Четыре источника наличия
Наличие складывается из нескольких источников, и для покупателя это разные обещания: «есть в зале» означает «приезжай сегодня», «есть на складе сети» — «подождём перемещение». Одна цифра наличия без указания источника приводит покупателя в магазин, где товара нет.
Источники наличия и последствия задержек
| Источник наличия | Что показывать покупателю | Что происходит при задержке обновления |
|---|---|---|
| Торговый зал магазина | Готов к покупке сегодня, с указанием магазина | Покупатель приезжает, товар уже продан — отмена на месте |
| Склад при магазине | Готов к выдаче после подготовки заказа | Заказ собирают позже обещанного в приложении срока |
| Региональный распределительный центр | Привезём из другого города, срок перемещения отдельно | Срок доставки меняется уже после оформления заказа |
| Поставка от поставщика | Под заказ, с диапазоном срока вместо точной даты | Ожидание растягивается, покупатель отменяет заказ сам |
Устойчивость этой части держится на трёх решениях:
- Подтверждение наличия в момент оформления. Плановой выгрузки недостаточно: между выгрузками товар успевает уйти через кассу магазина.
- Резерв остатка под оплаченный заказ. Без резерва крупногабаритную позицию приходится отменять после того, как покупатель заплатил.
- Признак «мало» вместо точного числа. Остаток в единицах меняется в течение дня и всё равно разойдётся с фактом на полке.
Поведение при сбое обмена
Отдельно описывается поведение приложения при недоступности обмена. Устаревшие данные с пометкой времени обновления полезнее пустой карточки товара, но продавать по ним крупногабаритные позиции и сервисные работы не стоит.
Услуги в одном заказе: распил, колеровка, доставка
Параметры сервисных позиций
Сервисные работы в DIY-сегменте оформляются внутри заказа, вместе с товаром. В приложении услуга описывается как позиция со своими параметрами, ценой и местом выполнения.
- Распил листовых и погонных материалов. Параметры — размеры, количество резов, кромление; результат зависит от оборудования конкретного магазина.
- Колеровка краски. Параметры — код цвета по вееру, база, объём и тип состава; смешивание идёт там, где есть колеровочная машина.
- Доставка и подъём. Параметры — адрес, этаж, наличие лифта, вес и габариты; тариф зависит от зоны и объёма.
- Подрезка и сборка. Параметры — размеры полотна или комплектация; доступна не во всех точках.
Требования к данным и интерфейсу
Параметры услуги задают четыре требования к интерфейсу и к данным:
- Привязка услуги к точке. Заказ с колеровкой не уходит в магазин без колеровочной машины.
- Пересчёт срока готовности. Срок меняется при добавлении услуги, а не после оформления заказа.
- Условия возврата до оплаты. Распиленный лист и колерованная краска изготовлены под покупателя, и правила возврата он видит на шаге оплаты.
- Контроль единиц измерения. Стоимость считается по параметрам, которые покупатель ввёл сам: метры вместо миллиметров ломают и смету, и загрузку цеха.
Функции приложения для DIY-сети
Базовый набор закрывает путь покупателя от выбора города до получения заказа:
- Выбор города и точки получения с пересчётом цен и наличия.
- Каталог с ценой и наличием выбранной точки, а не усреднёнными по сети.
- Поиск по артикулу, названию и фотографии упаковки — покупатель приходит с остатком материала в руках.
- Калькуляторы расхода плитки, обоев, краски и сыпучих материалов с переводом результата в упаковки.
- Услуги как позиции заказа с параметрами и пересчётом срока готовности.
- Самовывоз и доставка крупногабаритных товаров с выбором даты и подъёмом.
- Списки материалов по объектам и повтор корзины целиком для повторных закупок.
- Карта лояльности и статус заказа от оплаты до выдачи.
Интеграции с системами сети
Приложение DIY-сети почти целиком состоит из обмена данными с внутренними системами. К учётной системе оно обращается через серверную часть: она принимает выгрузки, хранит их и отдаёт приложению быстрые ответы.
- Учётная система (как правило, 1С) — источник истины по номенклатуре, ценам и остаткам; принимает заказы обратно.
- Система управления складом (WMS) — статусы подготовки заказа и адрес выдачи.
- Кассовое ПО и программа лояльности — единый баланс баллов и единая цена с кассой.
- Приём платежей — банковские карты и Система быстрых платежей, с правилами возврата по изготовленным под заказ позициям.
- Службы доставки — расчёт тарифа по габаритам и весу, передача условий подъёма.
- Маркетплейсы — если сеть торгует и там, остатки учитывают эти продажи.
Два правила обмена важнее остальных. Заказ передаётся в учётную систему с защитой от повторной отправки: при потере связи покупатель нажимает кнопку второй раз, и без защиты в системе появляются дубли. Справочники единиц измерения и упаковок согласуются один раз для всех каналов: товар, который продаётся в метрах квадратных, упаковками и поштучно, без общего правила пересчёта даёт разные суммы в приложении и на кассе.
Ограничения, которые стоит принять до старта
Часть задач приложение не решает — это стоит обсудить до начала разработки, а не на приёмке.
- Качество мастер-данных. Габариты, вес и состав упаковки берутся из учётной системы; без них приложение не рассчитает ни доставку, ни расход материала.
- Разные прайс-листы в унаследованных системах. Если цены живут в нескольких несвязанных системах, сначала согласуется источник истины, потом настраивается обмен.
- Отсутствие программных интерфейсов у части систем. Часть кассовых и складских решений отдаёт данные только файловой выгрузкой, и это ограничивает частоту обновления остатков.
- Точность наличия в зале. Зальный остаток зависит от дисциплины инвентаризации: приложение делает расхождения заметными, но не устраняет их.
- Срок модерации в сторах. Срочные правки правил акции или условий услуги быстрее выпускать на серверной стороне.
Этапы разработки
Порядок работ определяется данными: интерфейс строится вокруг того, что реально отдают системы сети.
Инвентаризация данных и правил
Команда описывает, где лежат цены по зонам, какие есть источники наличия, какие услуги доступны в каких точках и в каком виде это отдаётся наружу. Здесь же фиксируются правила отображения: что считается наличием, а что — заказом под клиента.
Проектирование сценариев
Выбор города, каталог точки, добавление услуги с параметрами, самовывоз и доставка крупногабаритного товара. Каждый сценарий проверяется на отказах: нет связи с учётной системой, город не определён, товар закончился в момент оплаты.
Дизайн интерфейса
Макеты ключевых экранов и состояний: наличие по источникам, параметры услуги, предупреждение о смене города, условия возврата изготовленных под заказ позиций. Состояния ошибок рисуются вместе с основными экранами.
Серверная часть и обмен
Слой между приложением и системами сети: приём выгрузок, хранение каталога, подтверждение наличия, передача заказов с защитой от дублей, журнал обменов для разбора расхождений.
Разработка приложения, тестирование и выпуск
Приложение разрабатывается под iOS и Android и проверяется на реальных устройствах и на данных нескольких регионов: ошибки в ценовых зонах видны только при сравнении городов. Публикация идёт в основные сторы и, по необходимости, в другие сторы под целевую аудиторию сети. Срок модерации задают сами сторы, и его учитывают в плане запуска.
Чек-лист готовности данных
Эти вопросы стоит задать своим службам до оценки проекта: ответы определяют и объём работ, и срок.
- Сколько в сети ценовых зон и где хранится их соответствие городам?
- Какие источники наличия показывать покупателю и как часто они обновляются?
- Можно ли резервировать остаток под оплаченный заказ и на какое время?
- В каких точках доступны распил, колеровка, подрезка и сборка?
- Заполнены ли габариты, вес и упаковка у товаров под доставку?
- Какая система считается источником истины по цене при расхождении?
- Как передаются возвраты по индивидуально изготовленным позициям?
Итог: правила на одной странице
Ключевые правила проекта
| Область | Правило | Что ломается при нарушении |
|---|---|---|
| Цены | Цена привязана к точке или зоне, совпадает с кассовой | Спор на кассе и отказ от заказа |
| Наличие | Источник наличия назван, остаток резервируется | Поездка покупателя впустую, отмена после оплаты |
| Услуги | Услуга — позиция заказа с параметрами и точкой | Заказ уходит в магазин, который не может его выполнить |
| Обмен данными | Один источник истины по цене, защита заказа от дублей | Дубли заказов и расхождения между каналами |
| Мастер-данные | Габариты, вес и упаковка заполнены до старта | Доставка и калькуляторы расхода считают неверно |
Для DIY-сети приложение остаётся оптимальным форматом собственного канала: он удерживает проект покупателя между закупками и показывает цену и наличие именно его города. Оправданный первый шаг — пройти чек-лист готовности данных со службами, которые отвечают за учётную систему, склад и розничные цены. Их ответы покажут объём работ и места, где данные придётся привести в порядок.
Частые вопросы
Как в приложении показывать разные цены по регионам?
Цена привязывается к торговой точке или ценовой зоне, а не к пользователю. Приложение определяет город покупателя, сопоставляет его с зоной из учётной системы и запрашивает прайс-лист этой зоны. Город выбирается до первой цены, которую видит покупатель, и остаётся заметным в интерфейсе: при его смене пересчитываются каталог, цены и акции. Если город не определён, корректнее показать выбор города, чем подставить цену по умолчанию.
Как синхронизировать остатки магазина и склада с приложением?
Остатки передаются из учётной системы и системы управления складом по расписанию, а наличие в момент оформления подтверждается отдельным запросом. Для DIY-сети обычно учитываются четыре источника: торговый зал, склад при магазине, региональный распределительный центр и поставка под заказ. Для каждого заранее определяют, что увидит покупатель и какой срок выдачи обещает приложение. Отдельно задаётся правило резерва: без него заказ на крупногабаритный товар отменяется уже после оплаты.
Можно ли оформить распил и колеровку в мобильном приложении?
Да, если услуга описана как позиция заказа со своими параметрами. Для распила это список размеров и количество резов, для колеровки — код цвета, база и объём, для доставки — адрес, этаж и подъём. Каждая услуга привязывается к конкретной точке: не все магазины сети колеруют краску и пилят материал. Услуга влияет на срок готовности и на условия возврата, поэтому правила по изготовленным под заказ позициям показываются до оплаты.
Как подключить приложение к 1С для цен и остатков?
Приложение обращается к учётной системе через серверную часть: она принимает выгрузки номенклатуры, цен по зонам и остатков, хранит их и отдаёт приложению. Учётная система остаётся источником истины по цене и наличию, серверная часть отвечает за скорость ответа и за поведение при недоступности обмена. Заказ передаётся обратно с защитой от повторной отправки, иначе при потере связи в системе появляются дубли.
Что делать, если город покупателя определён неверно?
Нужен заметный переключатель города и явное сообщение о том, что при смене города меняются цены, наличие и акции. Определение по геолокации стоит подтверждать: покупатель может оформлять заказ из командировки на свой домашний город. Отдельно описывается сценарий, когда в корзине уже лежат товары: часть позиций в новом городе может отсутствовать или стоить иначе. Корректнее показать такие позиции и дать выбор, чем молча пересчитать корзину.
Какие функции нужны в приложении строительного гипермаркета?
Базовый набор закрывает путь покупателя от выбора города до получения заказа: выбор города и точки, каталог с ценой и наличием этой точки, поиск по артикулу и по фотографии упаковки, калькуляторы расхода материала, услуги как позиции заказа, самовывоз и доставка крупногабаритных товаров, повторный заказ по истории, карта лояльности и статус заказа. Профессиональным покупателям добавляют списки материалов по объектам и повтор корзины целиком.
Чем приложение DIY-сети отличается от приложения обычного интернет-магазина?
Отличий три. Цена и наличие зависят от географии: один артикул имеет разную цену в разных ценовых зонах. Товар физически тяжёлый, поэтому сценарий получения — самовывоз со склада или адресная доставка с подъёмом, и ошибка в остатках стоит дороже, чем в обычном каталоге. Часть позиций изготавливается под покупателя: распиленный материал и колерованная краска становятся индивидуальным заказом со своими сроками и условиями возврата.
