Разработка Оптового B2B Магазина Лекарств И Правильная Интеграция В Экосистему Заказчика

Оптовые B2B магазины — это отдельный, устоявшийся тип веб-проекта, но очень неоднородный.

Каждый сайт уникален и требует индивидуального подхода.

Опыт ИНТЕРВОЛГИ позволяет нам уверенно браться за подобные проекты.

Эта статья о разработанной нами B2B-платформе для оптовых заказов лекарств для крупной фармацевтической компании (далее «ФК»).



Разработка оптового B2B магазина лекарств и правильная интеграция в экосистему заказчика



Клиент

ФК развивает российский фармацевтический рынок с 2002 года.

Компания сотрудничает с фармацевтическими дистрибьюторами, оптовиками и крупными региональными аптечными сетями в 82 регионах России.

Компания сотрудничает с 48 000 аптеками и аптечными сетями.

Компания имеет 45 офисов продаж и около 1500 сотрудников.



Цель

Цель нового проекта — упростить для аптек процедуру заказа лекарств в ФК.

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

Например, перед оформлением заказа предложите покупателю выбрать аналоги препаратов из своей корзины от ФК.

Внутренняя автоматизация и цифровизация ФК находится на высоком уровне и развивается: за последние годы мы вместе создали и развивали проекты ФК, Единый авторизационный счет (ЕСА) и Претензионный счет. Новый проект должен был органично вписаться в эту экосистему (авторизация через ESA, плавный переход между всеми площадками).



Разработка

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

Параллельно с ИНТЕРВОЛГОЙ у ФК был еще один подрядчик по разработке учетной системы (США), игравший роль «интеграционной шины» (при разработке сложного сайта без нее), написавший собственное (независимое) техническое задание, но была и значительная интеграционная часть между Битриксом и США.

Этот этап занял у нас 4 месяца.

Текущий вопрос: можно ли было это сделать быстрее, без спецификаций и гибко? Возможно, да.

Для этого были все условия: команда (и заказчик — активный участник), атмосфера, диалог и инструменты.

Но в 2019 году это все еще казалось слишком рискованным шагом для фарминдустрии.

«Ну как же можно без технического заданияЭ» — вопрос, который до сих пор не дает покоя многим руководителям, несмотря на россыпь положительных примеров гибкой разработки крупных веб-проектов (и примеров водопадной разработки, когда они не укладывались в сроки/бюджет).

Дальнейшая разработка заняла полгода с перерывами: параллельно с B2B-платформой шло создание Единой авторизационной учетной записи, без которой мы не смогли бы запуститься.

С точки зрения разработки данный проект оказался интересен следующими особенностями:

  • множество интеграций;
  • гибридная технология React+1С Битрикс;
  • повышенный контроль данных из системы управления;
  • персональные цены;
  • настройка внешнего вида сайта для каждого пользователя.



Интеграции

В данном проекте сайт на базе 1С-Битрикс интегрирован с 3 системами:
  1. Промежуточная база данных на базе MSSQL (далее PDB) с данными об аптечных сетях и грузополучателях.

    Данная PDB построена на основе данных, заполненных вручную сотрудниками аптеки – в результате возникает много опечаток, перепутанных полей и ошибок.

    Например, вы легко могли встретить аптеку с ИНН, равным «НЕ ЗНАЮ», а в поле «Телефон» можно было ввести пять цифр через запятую.

  2. Единая учетная запись авторизации (далее — ESA).

    У заказчика много партнеров с разными уровнями доступа и только этот отдельный сервис знает все обо всех.

    Если вы хотите войти в свою личную учетную запись B2B, сначала войдите в ESA. У этой двухуровневой структуры есть обратная, полезная сторона — если вы активно работаете с другими проектами ФК, вход в личный кабинет B2B произойдет автоматически (в стиле Google).

  3. Учетная система на базе Spring (далее Spring), «управляющая» товарами, ценами и остатками.

    Именно Spring играет роль интеграционной шины, собирая данные из разных учетных систем всех поставщиков, объединяя их для сайта и отправляя обратные заказы.

Общая схема интеграции представлена на схеме ниже.



Разработка оптового B2B магазина лекарств и правильная интеграция в экосистему заказчика

Другая наша команда уже была знакома со структурой PDB по предыдущему проекту для FC, передача опыта и кода между разработчиками прошла гладко :) На момент начала разработки проекта ЕКА только участвовало в проекте.

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

После релиза ESA, через три дня (на сайте почти ничего менять не пришлось), на B2B платформе заработала сквозная авторизация.

У Spring уже было базовое REST API, оно было доработано под нас (системой учета занимался другой подрядчик).

ХОРОШО обращались к API в двух случаях: по расписанию (полный раз в день, частичный раз в час) и по запросу (проверяли балансы и цены перед оформлением заказа, запрашивали актуальные прайс-листы при входе пользователя на сайт).



Гибридный сайт React+1С-Битрикс

В этом проекте мы «подружили» BUS и React-компоненты (еще до того, как это стало мейнстримом).

React нужен был на главной странице в таблице товаров.



Разработка оптового B2B магазина лекарств и правильная интеграция в экосистему заказчика

Требования к этой таблице были действительно сложными:

  • На мобильных устройствах он должен превратиться в список карточек.

  • Его можно фильтровать, сортировать, должна быть навигация по страницам - но она есть везде.

  • Его должен настраивать каждый пользователь — одним нужны одни столбцы, другим — другие.

  • Цветовая дифференциация брюк - если товар уже в корзине пользователя - цвет одной линии.

    Если товар от вашего любимого поставщика, все по-другому.

    Если не можешь купить, то третий.

  • Часть данных всегда находится на сервере, а часть необходимо запрашивать в реальном времени из Spring.
Результат предсказуем:
  • Разработка такой таблицы занимала в 2-3 раза больше времени, чем использование «традиционного» JS.
  • Фронтенд-разработчику удобно вносить правки.

  • Бэкенд-разработчику достаточно создать REST API для получения продуктов — не задумываясь об интерфейсе и внешнем виде.



Контроль данных

При такой длинной цепочке (вендор CS — Spring — Битрикс) и задержках в передаче информации доверяйте данным на 100%.



Разработка оптового B2B магазина лекарств и правильная интеграция в экосистему заказчика

Соответственно, в любой момент времени на нашем сайте могут появиться товары, у которых «минимальное количество для покупки» больше «остатков на складе», а «остаток на складе» меньше «кратности».

Чтобы избежать подобных проблем, на сайте разработана система проверки корзины на наличие противоречий.

Тип ошибки Что вывести Как рассчитать рекомендуемую сумму Пример
Доступное количество не учтено Количество, доступное для заказа =Количество доступно для заказа Заказано: 5 Количество, доступное к заказу: 2 Рекомендуется: 2
Кратность не учитывается Множественность = Текущее количество, округленное в большую сторону.

Заказано: 10 Кратность: 3 Рекомендуется: 12
Минимальный объем заказа не учитывается Минимальное количество для заказа =Минимальный объем заказа Заказано: 2 Минимальное количество заказа: 5 Рекомендуется: 5
Фрагмент технического задания с проверкой корзины на наличие ошибок и предложениями по исправлению.



Разработка оптового B2B магазина лекарств и правильная интеграция в экосистему заказчика

Ошибка при заказе в b2b интернет-магазине

Персональные цены

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

Это означает, что нам пришлось решить одну из распространенных проблем оптовых ЛК: персональное ценообразование.

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

Но здесь дело явно было в другом: МС хранит тысячи цен на каждый товар.

Чтобы не загружать на сайт миллионы записей и не пытаться поддерживать весь каталог в актуальном состоянии, мы перешли на модель «запроса цен из США в реальном времени».

Когда пользователь заходит на сайт для оформления заказа, мы заранее загружаем цены из США на то, что он видит, и немного заранее.

Цены и балансы кэшируются на сайте в течение нескольких часов.

Это создает значительную нагрузку на сеть и сеть, но эту проблему можно решить (оптимизация сети, новое оборудование, расширение интернет-канала).



Настройка внешнего вида сайта

Это что-то из разработки продукта.

Мы никогда не делали сайт для заказчика, где пользователь мог бы выбрать фон, но это было одним из требований технического задания.

Оказалось: ничего сложного, фронтенд-разработчик приложил к этой задаче максимум усилий.



Разработка оптового B2B магазина лекарств и правильная интеграция в экосистему заказчика



Результат

Площадка запущена в 2021 году и уже приносит 200 оптовых заказов в месяц.

Над проектом на постоянной основе работает только один разработчик, иногда привлекаем дополнительный персонал.

Проект вышел на оптимальное «плато»: при минимальных затратах на поддержку со стороны заказчика он получает стабильный поток заказов.

Следующий шаг — за бизнесом: привлечение новых клиентов и новых поставщиков, чтобы превратить B2B-платформу в торговую площадку.

Этот проект – не единственный крупный проект ФК.

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

Автор: Анатолий Ерофеев.

Теги: #Анализ и проектирование систем #Фармацевтика #разработка b2b магазинов #b2b портал

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.