На пятнадцатый день работы мы удалили общий каталог. Он был готов: поиск по товарам всех продавцов с подсказками, меню категорий, страницы разделов. Через две недели после старта всё это ушло из проекта, и площадка стала устроена иначе — у каждого поставщика свой каталог по своей ссылке.
Речь о Kup2B, площадке, где компании продают компаниям: поставщик выкладывает товары, назначает каждому клиенту его цены, клиент сам собирает заказ и получает счёт. Делали мы её для себя, спорить было не с кем, поэтому хорошо видно, какие решения определили объём работы. Экранов среди них почти нет.
Сначала — кто платит
Привычная схема торговой площадки — процент с каждой сделки. Для оптовых продаж она подходит плохо, и причин две.
Комиссия подталкивает стороны уйти. Поставщик и покупатель нашли друг друга, провели первый заказ, а второй оформили уже в мессенджере, потому что так на несколько процентов дешевле. В рознице покупатель каждый раз новый. В опте одна и та же пара компаний работает годами, и площадка получает деньги ровно один раз.
Вторая причина юридическая. Чтобы удержать процент, площадка должна принять деньги покупателя и перевести их продавцу. Это другая роль с другими обязанностями: от правил приёма платежей до ответственности за товар.
Мы выбрали подписку. Продавец платит фиксированную сумму в месяц, покупатель не платит ничего, деньги по сделке идут с расчётного счёта на расчётный счёт мимо площадки. У решения есть цена: доход не растёт вместе с оборотом клиентов, а продавцу приходится платить раньше, чем он увидел пользу. Поэтому понадобился пробный период и отдельные правила на случай неоплаты — каталог скрывается, а заказы, счета и переписка остаются доступны.
Следом пришли счета за подписку, сверка оплат с банковской выпиской, напоминания, приостановка. В первом плане не было ни одного из этих пунктов.
Общий каталог, который пришлось убрать
Первый вариант повторял маркетплейс: товары всех продавцов в одной выдаче, покупатель ищет «кабель» и сравнивает предложения. Покупателю удобно. Поставщику это означает стоять в одном списке с конкурентами и соревноваться ценой. А в опте цена складывается из договорённостей с конкретным клиентом, и показывать её рядом с чужой никто не хочет.
Была и вторая сторона. Площадка, которая сама решает, чей товар показать выше, отвечает за правила этой выдачи: по каким признакам она расставляет продавцов и не даёт ли кому-то преимущество. Вопросы к таким правилам появляются и у самих продавцов, и у антимонопольного законодательства.
После переделки продавец выбирает один из трёх режимов:
- каталог открыт всем и попадает в поисковики;
- каталог видят только покупатели, которых продавец подтвердил;
- каталог открывается по паролю — тем, кому продавец его дал.
Поиск и фильтры работают внутри одного каталога.
Минус скрывать незачем: такая площадка сама покупателей не приводит. Поставщик приходит со своими клиентами и получает инструмент для работы с ними. Тому, кто ждёт потока новых заказчиков, нужна другая модель.
Цена у каждого покупателя своя
В рознице у товара одна цена. В опте их столько, сколько клиентов: одному 15% на кабель и 5% на остальное, другому фиксированная цена на три позиции до конца года, третьему скидка от ста штук.
Мы свели это к правилам из трёх частей. Кому: всем, группе клиентов или одной компании. На что: на весь каталог, раздел, метку или отдельный товар. Как: процент от розничной цены, фиксированная цена или скидка суммой. К правилу добавляются порог по количеству и срок действия. Когда покупателю подходит несколько правил, срабатывает одно — сначала по приоритету, затем по точности: правило для конкретной компании сильнее правила для группы.
Отсюда два практических вывода. Продавцу обязательно нужен режим «посмотреть глазами клиента»: выбрать компанию и увидеть каталог с её ценами и с подписью, какое правило сработало. Без него в собственных скидках путаются уже на втором десятке правил. И цена в заказе хранится копией на момент оформления, иначе завтрашнее изменение скидки перепишет вчерашние заказы.
Если клиентов десяток, а скидка у всех одна, вся эта механика лишняя. Хватит одной колонки «оптовая цена» из 1С.
Проверить, что компания настоящая
Регистрация выглядит просто: вводите ИНН, реквизиты подтягиваются из государственного реестра. Дальше начинаются вопросы, которых в форме не видно. Действительно ли регистрируется сотрудник этой компании? Что делать, если кто-то занял чужой ИНН незаконченной регистрацией?
В итоге телефон подтверждается звонком, компания прикладывает документы, а решение принимает человек. Непроверенных компаний у одного пользователя может быть не больше трёх, чтобы чужие ИНН нельзя было занимать пачками. Покупателя проверяем только после того, как продавец подтвердил, что это его клиент. Иначе ручная проверка уходит на тех, кто зашёл посмотреть.
Ручная проверка медленная, и мы это знаем: ночью и в выходные компания ждёт. Автоматическая сверка с реестром быстрее, но она подтверждает только то, что юрлицо существует. Кто сидит за клавиатурой, реестр не знает.
То, чего на экране не видно
Больше всего времени ушло на ситуации, которые в описании задачи занимают одну строку. Менеджер дважды нажал «подтвердить заказ». Компанию отправили на проверку из двух вкладок сразу. Продавец принял запрос цены, а покупатель в ту же секунду его отменил. Каждое изменение заказа, счёта и подписки сначала запирает запись на время операции и перечитывает её. Второй запрос ждёт и видит уже новое состояние.
Отдельно пришлось думать о скорости. Страницы открытых каталогов гости получают из заранее собранных копий, и наплыв посетителей не нагружает базу данных. С закрытыми каталогами так нельзя: страница, которую должен видеть только свой покупатель, не имеет права попасть в общую копию. Ошибка здесь выглядит как утечка цен конкурентам.
За месяц в проекте набралось около тысячи автоматических проверок, они запускаются перед каждым выпуском. И всё равно первый проход по сценариям в браузере, когда кнопки нажимают так, как это делает пользователь, дал 56 замечаний.
С чего начинать разговор о площадке
Ни одно из этих решений не касается экранов. Все они про деньги, доступ и ответственность, и принимает их владелец бизнеса, а разработчик только воплощает. Меняются они дорого. Отказ от общего каталога на пятнадцатый день потянул за собой шесть переделок подряд, от категорий до тарифов. С живыми продавцами и их покупателями такой разворот без потерь уже не сделать.
Поэтому до списка страниц стоит письменно ответить на пять вопросов:
- Кто платит площадке и за что именно.
- Кто кого видит: открыты ли товары и цены посторонним.
- Как получается цена для конкретного клиента.
- Кто и как подтверждает, что участник настоящий.
- Что происходит с данными участника, который перестал платить.
Если поставщик один и клиенты у него свои, площадка не нужна вовсе: хватит закрытого портала. Что входит в такой портал и откуда берутся сроки, мы разбирали в отдельной статье.
Хорошая новость в том, что все пять ответов помещаются на одну страницу и не требуют ни одного разработчика. Мы потратили на них меньше времени, чем на любую из переделок, которые случились из-за того, что ответа не было. Когда эта страница написана, дальше становится заметно проще: понятно, что делать в первую очередь, от чего отказаться и сколько это займёт. Площадка перестаёт быть большой неопределённой затеей и превращается в обычный проект с началом и концом.


