Касса самообслуживания в телефоне —экспресс-скан

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

 

Наши европейские коллеги еще во время весенних эпидемиологических ограничений сделали ставку на развитие систем класса Scan&Go — достаточно быстро обеспечили безопасность клиентов и добились хороших результатов с точки зрения продаж. В апреле мы внимательно проанализировали их опыт и решили, что стоит запустить собственный проект такого типа и развернуть его в магазинах сетей под управлением X5 Group.

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

 Рассказываем, как мы подошли к этому проекту и что смогли осуществить.

Отправная точка

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

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

Все эти, казалось бы, побочные вопросы в сумме представляли существенный объем работ, поэтому каждым из них занималась отдельная команда ИТ-специалистов.

Если сравнивать с другими технологическими компаниями, наш масштаб, конечно, не стоит преувеличивать. Тысячи магазинов и условно пятнадцать тысяч позиций в ассортиментной матрице в каждом — вполне подъемная нагрузка. Но в нашем случае основную сложность представляла работа с замкнутым ИТ-ландшафтом каждой из точек продаж, входящих в сеть X5 Retail Group.

 

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

Нельзя просто так взять и мобильникам покупателей предоставить прямой доступ в системы магазина. Во-первых – безопасность, во вторых, стабильность работы оффлайн касс не должна пострадать. Мы приняли решение разрабатывать новые системы, которые предоставят нам эти возможности.

 

В ряде случаев мы столкнулись с нестабильным каналом связи и были вынуждены учитывать разброс по оборудованию и его мощности в той или иной локации. Все-таки в первую очередь железо обслуживало локальные процессы и не предназначалось для интеграции с централизованными сервисами в режиме близком к реалтайм.

 

— Сергей Кузнецов, начальник управления корпоративной архитектуры бизнес доменов 

 

На проработку этих и других вопросов, которые мы разберем подробнее по ходу рассказа, у команд было всего три месяца, но начинать с нуля им не пришлось. К тому времени, когда руководство приняло решение о скорейшем масштабировании нашей Scan&Go-системы, департамент инноваций уже протестировал прототип мобильного приложения и кабинет для администрирования на небольшом сегменте магазинов. Этот опыт нам пригодился — позволил проанализировать «путь клиента» и получить обратную связь.

 Возможности для покупателей

 Базовая задумка с точки зрения customer journey выглядела следующим образом. Первое, что мы должны были предложить клиенту, это — быстрая и удобная авторизация с учетом его возможного участия в программах лояльности различных магазинов нашей сети. Далее следовал самостоятельный сбор корзины, а значит — распознавание товаров по штрих-кодам с помощью камеры смартфона и соответствующей библиотеки приложения, плюс — отображение фотографий, текстового описания и актуальных цен в магазине, где находится клиент. Заключительный шаг представлял собой проведение оплаты и для нас трансформировался во взаимодействие с локальными ИТ-системами магазинов, эквайринг с помощью банка-партнера и обмен данными с ФНС силами наших онлайн-касс с последующей отправкой электронного чека покупателю.

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

 Единая система идентификации

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

Проблема состояла в том, чтобы свести воедино информацию из целого ряда источников, где данные по клиентам были представлены различным образом и зачастую дублировались. С другой стороны, среди них не было платежных реквизитов, поэтому слияние могло повлиять исключительно на корректность полей с именем/возрастом и не представляло какого-либо серьезного риска. В качестве клиентских идентификаторов мы выбрали номера телефонов и «подтянули» по ним активированные карточки по всем нашим программам лояльности. Данные собирали из двух типов баз — PostgreSQL и Oracle — в Tarantool Data Grid. Его роль в общей системе сервисов будет понятна по ходу материала.

Помимо этого мы реализовали специальный SDK для нативных платформ приложений на iOS и Android. Он позволит интегрировать новые мобильные приложения с X5 ID согласно стандартному Authorization code flow Grand-type.

 Чтобы переход действующих приложений на X5 ID был максимально гладким для пользователей, мы решили оставить текущий подход к аутентификации и добавили рядом новую — по X5 ID. По мере перехода клиентов на вторую опцию мы откажемся от старой системы авторизации и оставим только вариант с X5 ID.

 

— Маслов Сергей, корпоративный архитектор домена «Развивающиеся бизнесы»

 Мобильное приложение 

 

Если говорить про выбор библиотеки для распознавания штрих-кодов, то мы в первую очередь смотрели на скорость сканирования в условиях ограниченной освещенности и учитывали возможности камер по всему многообразию смартфонов. В итоговом тестировании участвовала бесплатная библиотека Zxing и платная от Scandit. Первая показала себя хорошо и подошла для разработки прототипа без акцента на качество сканирования, но особенности камер различных моделей смартфонов она учитывала не в полной мере. Поэтому мы остановились на Scandit, которая делала это лучше. Далее мы представили результаты сравнительного теста в формате упрощенной таблички:

Модели телефонов

Скорость сканирования при хорошем освещении

Скорость сканирования при плохом освещении

до $150

Равные значения

Равные значения

от $150 до $350

Равные значения

Scandit лучше

модели дороже $350

Scandit лучше

Scandit лучше

 

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

Микросервисы

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

Кассы выдают уникальный результат с учетом цен и промомеханик в отдельном магазине. Помимо этого они идентифицируют покупателя по карте лояльности и адаптируют стоимость корзины в зависимости от его «истории».

Мы воссоздали такую систему в облаке сразу для всех магазинов. Понятное дело, что тут стояла задача ее масштабирования для существенного числа покупателей.

— Андрей Маклаков, начальник управления разработки и сопровождения платформы интеграционных решений

Мы занялись этой задачей, исходя из потребностей как цифровых, так и других продуктов нашей сети, в работе которых расчет корзины в облаке мог бы пригодиться. В ходе подготовительного этапа мы сразу отказались от монолитной архитектуры, чтобы уйти от проблемы бутылочного горлышка и ее неповоротливости с точки зрения последующих изменений. Вместо этого мы «разобрали» компьютер-кассу на микросервисы, а их скоуп определили в зависимости от use-кейсов в других проектах сети X5 Group.

Как только пользователь сканирует штрихкод, он подается на вход сервису Goods (PGSQL, Python), который знает все мастер-данные о товаре и ограничениях по его продаже — например, если речь идет об алкогольной продукции. На выходе мы получаем ID товара и идем с ним в сервис Price(Tarantool Data Grid), где получаем цены на товары — их может быть несколько. Далее в ход идет микросервис промомеханик (PGSQL, Python) и только потом Basket Engine (Python), который производит расчет каждой позиции и общей суммы корзины покупателя.

 На вход Basket Engine идет список товаров, на выходе — дополнения для каждого из них по стоимости, «старой цене», «новой цене», результатам применения промо-механик по комбинациям товаров, участвующих в акциях, плюс — общая стоимость корзины. Все корзины мы сохраняем в сервис Basket (PGSQL, Python) для истории.

 Микросервисы мы можем задействовать не только для «Экспресс-скана», но и для других продуктов вроде умной тележки со считывателем и отдельным бэкендом, который подключается к Basket Engineи Fiscal Broker (о нем поговорим в следующем подразделе). Стоит заметить, что все сервисы готовы обслуживать более двух тысяч запросов в секунду и горизонтально масштабируемы.

— Сергей Кузнецов, начальник управления корпоративной архитектуры бизнес доменов

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

 Оплата и Фискализация

Как только клиент завершает сбор корзины и узнает ее стоимость, он может перейти к оплате.

 Если в магазине установлены кассы самообслуживания, то собранную корзину можно одним движением передать на любую из них – достаточно выбрать способ «Оплата на КСО» и просто поднести к сканеру кассы появившийся на экране мобильного телефона QR-код.

 Но самой удобной, конечно, является оплата из самого мобильного приложения через привязанную в нём банковскую карту. Одно нажатие кнопки – и покупка оплачена! При этом, все данные карты обрабатывает наш банк-партнер с помощью веб-вью, «Экспресс-скан» к ним не притрагивается, так как для этой работы требуется сертификация по стандарту PCI DSS. Используется надёжный и проверенный временем интернет-эквайринг.

Далее, когда система получает от банка подтверждение об успешной оплате корзины, в дело вступает брокер фискализации (fiscal broker) — еще один универсальный компонент, который был сразу разработан с возможностью использования во всех цифровых проектах компании. Он получает на вход информацию об оплаченной корзине (Чек1 на схеме), обеспечивает гарантированную и практически моментальную регистрацию чеков на облачной ферме фискальных накопителей в полном соответствии со всеми требованиями 54-ФЗ, возвращает готовый фискальный чек для отображения клиенту в мобильном приложении, а затем обеспечивает доставку информации о совершённой покупке в информационную систему того конкретного магазина, в котором клиент взял товар с полки. 

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

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

 Не говоря уже о том, что наши классические информационные системы никогда не были рассчитаны на разделение в учёте выручки по каким-то разным проектам. Раньше всё было просто: есть магазин и есть его продажи, наличные и безнал, товары и услуги. А с наступлением эры цифровых сервисов ситуация значительно усложнилась: выручка по безналу составила за день, допустим, 100 руб. Отлично. Но как понять, что 50 руб. относятся к стационарным кассам, ещё 30 рублей – это доставка, а ещё 20 - «Экспресс Скан»? Созданные десятилетие назад информационные системы не могли дать ответа на этот простой вопрос. А потом ещё обязательно нужно выполнить сверки этих продаж с банковскими выписками по счетам каждого проекта в отдельности, и отчётность построить, и проводки сформировать… На самом деле, потребовался колоссальный объём сначала аналитики, а затем доработок ПО и интеграционного тестирования, чтобы внести нужные изменения во все без исключения программные продукты компании.

 Ну, и конечно, для замыкания контура, обеспечивающего «цифровые чеки», пришлось развернуть внутри нашей локальной сети полноценную ферму облачной фискализации. Уже сейчас, через неполный год после запуска – это несколько тысяч фискальных регистраторов в двухюнитовых модулях, заполняющих серверные стойки от пола до потолка. Стоят ровными рядками, моргают лампочками. А цепочка stateless компонентов брокера фискализации в ритме метронома распределяет между ними полученные от цифровых проектов заготовки чеков и раскидывает потребителям готовые фискальные документы.

Да, пока объём этих чеков не поражает воображение: чуть больше сотни чеков в секунду – это совсем немного. Но именно созданные в рамках проекта «Экспресс Скан» компоненты новой цифровой экосистемы Х5 открыли дорогу как для быстрого масштабирования существующих цифровых проектов, так и простому и лёгкому запуску всё новых и новых сервисов, которые станут доступны посетителям наших магазинов в самом ближайшем будущем. 

 — Михаил Кучеренков, руководитель лаборатории инноваций Х5

Фискальные регистраторы облачной фермы
Фискальные регистраторы облачной фермы

Что дальше

 За счет всех этих решений мы обошлись минимальными изменениями в действующих core-системах (синим цветом на схеме) и получили существенную экономию времени с точки зрения time-to-market для новинок вроде «Экспресс-скана». В дальнейшем мы продолжим развитие ИТ-продуктов сети X5 Retail Group на основе разработанных микросервисов, новой системы фискализации, CDN для статического контента и нового сервиса X5 ID.

Запуск сервиса «Экспресс-скан» был осуществлен в рекордные сроки: от старта работ до запуска пилотных 30 магазинов прошло всего 3,5 месяцев. На текущий момент это самое масштабное применение технологии Scan&Go в food retail не только в России, но и во всем мире. Мы запустили 1200 магазинов в качестве пилота технологии и объем тиражирования более 17 тысяч магазинов группы компании

Запуск проекта стал вызовом для всей команды не с технологической, но и организационной, коммуникационной точек зрения: в условиях карантина, перехода в онлайн режим работы проектная команда в более чем 80 человек смогла выстроить высокоэффективные коммуникации и достичь цели. Не будем говорить, что это было легко, но мы получили прекрасные результаты. Я горжусь работой команды и считаю «Экспресс скан» одним из интереснейших кейсов в своем проектном опыте  

 

— Леонтьева Татьяна, руководитель направления инновационных проектов и продуктов департамент инноваций Х5

 

 

Источник: https://habr.com/ru/company/X5RetailGroup/blog/568864/

Интересные статьи

Интересные статьи

Хочу поделиться опытом автоматизации экспорта заказов из Aliexpress в несколько CRM. Приведенные примеры написаны на PHP, но библиотеки для работы с Aliexpress есть и для...
Периодически мне в разных вариантах задают вопрос, который «в среднем» звучит так: «что лучше: заказать интернет-магазин на бесплатной CMS или купить готовое решение на 1С-Битрикс и сделать магазин на...
Бизнес-смыслы появились в Битриксе в начале 2016 года, но мало кто понимает, как их правильно использовать для удобной настройки интернет-магазинов.
От скорости сайта зависит многое: количество отказов, брошенных корзин. Согласно исследованию Google, большинство посетителей не ждёт загрузки больше 3 секунд и уходит к конкурентам. Бывает, что сайт ...
Практически все коммерческие интернет-ресурсы создаются на уникальных платформах соответствующего типа. Среди них наибольшее распространение получил Битрикс24.