- Ниша
- Электротехника, опт и розница
- Регион
- Москва и область
- Срок
- 16 недель
- Команда
- 4 человека: аналитик, дизайнер, два разработчика
- Год
- 2025
Каталог на 9 200 позиций, где менеджер собирает заказ за четыре минуты вместо четырнадцати
Точка отсчёта
Цифры ниже сняты до начала работ по данным клиента, а не по нашим оценкам.
Сайт стоял на конструкторе четвёртый год. Товары заводили руками, поэтому в каталоге лежало 640 позиций из 9 200 складских, а остальное менеджеры отправляли прайсом в Excel. Остатки обновлялись раз в сутки ночью, и половина заказов приходила на то, чего уже нет.
Отдельная проблема была с подбором. Автоматы, кабель и щитовое оборудование выбирают по характеристикам — номинал, число полюсов, кривая отключения. На сайте был только поиск по названию, и клиент, который знает, что ему нужно, всё равно звонил менеджеру.
- Позиций на сайте из 9 200 складских
- 640
- Сборка одного заказа менеджером
- 14 мин
- Отказы на странице поиска
- 38%
- Заявки с сайта, в месяц
- 11
Порядок работ
Этапы шли последовательно: каждый следующий опирался на решение, принятое в предыдущем, и переставить их местами было нельзя.
- 01
Разбор номенклатуры и характеристик
3 неделиВыгрузили 9 200 позиций из 1С и свели характеристики к 12 полям, по которым реально выбирают. Треть значений пришлось нормализовать: «16А», «16 А» и «16 ампер» лежали в одном поле как разные строки.
- 02
Прототип каталога и корзины
2 неделиСобрали кликабельный прототип на реальных данных и посадили за него двух менеджеров и трёх клиентов. После этого из фильтра убрали четыре поля, которыми никто не пользовался, и добавили ввод артикулов списком.
- 03
Обмен с 1С
4 неделиОстатки и цены по договору каждые 15 минут, номенклатура — раз в сутки. Обмен односторонний: сайт ничего не пишет в 1С, кроме заказа, поэтому сбой на сайте не может испортить учёт.
- 04
Вёрстка, поиск, сборка
5 недельКаталог собирается статически, поиск и подбор работают на Typesense. Страницы категорий рендерятся на сборке, поэтому LCP не зависит от того, сколько человек сейчас на сайте.
- 05
Приёмка и перенос
2 неделиПеренесли 640 старых адресов на новые редиректами один к одному, отдали доступы, исходники и инструкцию контент-менеджеру. Две недели вели оба сайта параллельно.
Что получилось на экране
Подписи описывают кадр целиком. Сами скриншоты подставим, когда клиент согласует публикацию интерфейса.
Что изменилось в цифрах
Сравнение месяц к месяцу с тем же периодом прошлого года: у ниши сезонность, и без поправки на неё цифры были бы завышены.
| Показатель | До | После | Итог |
|---|---|---|---|
| Сборка одного заказа менеджером | 14 мин | 4 мин | −71% |
| Заявки с сайта, в месяц | 11 | 26 | ×2,4 |
| Отказы на странице поиска | 38% | 12% | −26 пунктов |
| LCP каталога на 4G | 4,2 с | 1,4 с | −67% |
| Задержка остатков | 24 ч | 15 мин | обмен по расписанию |
| Позиций доступно на сайте | 640 | 9 200 | весь склад |
Ноябрьская просадка — наша ошибка в подборе, разбор ниже. Декабрь и январь в этой нише всегда выше среднего: закрываются годовые сметы.
Три недели поиск отдавал не то
Такая секция есть в каждом нашем кейсе. Проект, в котором нечего сюда написать, обычно значит, что мы плохо помним, как он шёл.
Через полтора месяца после запуска клиент сказал, что менеджеры снова считают заказы в Excel. Мы полезли в логи поиска и увидели, что 1 400 позиций не находились по характеристикам вообще. Причина была в нашей же нормализации: мы свели «16А» и «16 А» к числу 16, но не учли позиции, где номинал записан дробью — «6,3 А». Парсер отбрасывал такие значения молча, без ошибки, и позиция уходила в индекс без номинала.
Нашли не сразу, потому что смотрели не туда: первые дни искали проблему в Typesense, а она была на шаг раньше, в выгрузке. Исправили за пять дней, ещё за два переиндексировали каталог. Но три недели, с середины октября до начала ноября, часть каталога работала хуже старого сайта — это видно на графике.
После этого случая любой парсер данных клиента у нас обязан падать с ошибкой на непонятном значении, а не пропускать его. И на приёмке мы теперь сверяем не выборку, а полное число позиций с заполненными характеристиками — с числом из 1С.
Больше всего я боялся, что получится красивый сайт, с которым менеджеры не будут работать. Сейчас заказ на сорок позиций собирается быстрее, чем я успеваю дойти до кофемашины. История с поиском в октябре мне не понравилась, но нашли и починили сами, без моих напоминаний — это дороже, чем «всё идеально».
На чём собрано
- Фронтенд
- AstroTypeScriptCSS без фреймворка
- Данные
- PostgreSQLTypesense
- Интеграции
- 1С:Управление торговлейЮKassa
- Инфраструктура
- DockernginxGitHub Actions
Ссылку даём по запросу: в каталоге видны оптовые цены по договорам, и клиент не хочет, чтобы их листали конкуренты.