Задача
В медицинской интернет-торговле ошибка выбора стоит дороже, чем неудобный возврат. Человек, который заказывает калоприёмники или катетеры на месяц вперёд, при неверном размере остаётся без нужного средства ухода. Часть позиций вдобавок невозвратна после вскрытия упаковки, так что «закажу и посмотрю» тут не работает.
При этом покупатель приходит к товару с двух совершенно разных сторон. Один знает код производителя и хочет найти его за одно действие. Другой знает только, что ему нужно после операции, и начинает с направления ухода. Третий вообще покупает не для себя: это сиделка или родственник со своими платёжными и адресными данными. Четвёртый оплачивает заказ через программу покрытия и ждёт документ, который примет страховая.
Магазин должен обслуживать всех четверых и при этом не ставить диагнозов.
Решение
Каталог в нескольких срезах. Товар одновременно живёт в дереве направлений ухода, на странице бренда, в результатах поиска и в подборках, а SKU при этом не дублируется. Каталог глубокий. В разделе стомийных изделий отдельно существуют однокомпонентные и двухкомпонентные системы, дренируемые и закрытые калоприёмники, уростомные изделия, адгезивные пластины (skin barriers) и фланцы. Рядом с ними кольца, пасты и пудры, ирригация, детские позиции, аксессуары и поддерживающие пояса. Урологический раздел различает катетеры для периодической катетеризации, предварительно смазанные, закрытой системы (closed-system) и постоянные. Названия брендов нормализуются, чтобы варианты написания не дробили выдачу.
Поиск, который не теряет цифры. Он одинаково обслуживает запрос по коду производителя, SKU, бренду, частичному названию и категории. Понимает медицинские и бытовые синонимы, размер, тип упаковки и написание с дефисом, пробелом или без них. Точное совпадение по коду приоритетнее маркетингового контента, а числа и единицы измерения не отбрасываются: две похожие модели могут отличаться только диаметром или количеством в коробке.
Фильтры по смыслу категории. Набор фильтров зависит от направления ухода: параметр, полезный для катетера, не появляется в повязках только потому, что существует в общей базе атрибутов. URL фильтра при этом сохраняется и индексируется по SEO-правилам, не порождая бесконечные дубли страниц.
Упаковка как обязательный атрибут. Позиция хранит внутренний SKU, код производителя, единицу упаковки (штука, коробка, короб) и количество внутри. Записаны также размеры и диаметры, форма и материал, атрибуты совместимости, возвратный статус и требование документа, если оно есть. Длинное техническое название не сокращается так, чтобы из него пропал размер, вариант или упаковка. В строку заказа кладётся снимок выбранного SKU с параметрами: изменение каталога потом не переписывает то, что человек уже купил.
Совместимость компонентов. Мешок калоприёмника, фланец, коннектор или аксессуар должны соответствовать размеру и линейке базового изделия. Для этого используются структурированные атрибуты совместимости, ссылки на совместимые товары, серия изделий производителя и коды размера и фланца, а при очевидном несовпадении покупатель получает предупреждение и выход на специалиста поддержки. Система помогает найти подходящую позицию, но не предлагает клиническую замену.
Два пути оплаты. Обычное оформление заказа идёт стандартно, а прямой расчёт с программой покрытия (direct billing) вынесен в отдельный поток. Клиент выбирает этот способ, и система запрашивает только необходимые подтверждающие данные. Проверяются право на покрытие и допустимость товара, заказ получает статус «ожидает проверки» или «одобрен». Покрываемая и непокрываемая части фиксируются раздельно, при необходимости предлагается доплата другим способом. Ошибка проверки не имеет права перевести заказ в «оплачен» или «готов к отгрузке». Всё решение сохраняется в журнале аудита.
Документ для страховой. Детализированный счёт содержит продавца и реквизиты заказа, покупателя, дату, наименование, код производителя, количество и упаковку. Ещё в нём стоимость, скидка и налог, состояние оплаты и собственный номер счёта. Документ доступен после нужного состояния заказа и не меняется задним числом, когда обновляется каталог.
Возвраты по товару. Общая политика сочетается с правилом на уровне позиции. Товар с пометкой No Returns не должен неожиданно принять автоматический RMA только потому, что остальной ассортимент возвращается.
Повторный заказ. История заказов показывает точные SKU и упаковки прошлого заказа, а повтор собирает новую корзину по актуальным ценам и остаткам и заменяет недоступные строки. Суммы старой покупки при этом не копируются.
Knowledge Centre без самолечения. Статьи об уходе за ранами и стомой, о недержании и урологии хранят автора и рецензента, дату обновления, источники, дисклеймер и связь с товарами. Отзывы проходят модерацию, которая отделяет опыт использования от недопустимого медицинского совета и персональных данных.
Результат
Покупатель находит нужный расходник по коду, бренду или направлению ухода, видит упаковку и размер до оплаты и повторяет покупку за одно действие. Клиент программы покрытия получает документ, с которым можно подать заявку, либо оплачивает через прямой расчёт с раздельным учётом покрытой и непокрытой части.
Операционная команда работает в одной административной панели: каталог и атрибуты, импорт с проверкой обязательных полей и дублей кода производителя. Там же заказы, платежи, отгрузки и возвраты, модерация отзывов, контент и проверка прямых расчётов. Каждый пограничный случай, от заменённого производителем артикула до повторного платёжного уведомления, получил явный статус и безопасное продолжение без скрытой автоматической подмены.