Большой каталог, где почти у каждой позиции есть варианты: объём, оттенок, иногда формат упаковки. Остатки и цены ведутся в 1С, ассортимент меняется постоянно, часть позиций регулярно снимается с производства.
Два больных места были названы сразу: после обмена товар иногда пропадал из каталога целиком, а снятые позиции удалялись вместе со своими страницами.
Разбор начала с обмена, потому что именно он ломал каталог. Типовой обмен при сбое выгрузки воспринимает пустой ответ как «остатков нет» и обнуляет склад по всему каталогу. Защита простая и обязательная: нули не записываются, если источник ответил ошибкой или пустым списком, а перед первым обменом делается сопоставление позиций с отчётом о тех, что не сопоставились. Сначала отчёт, потом обмен.
Варианты вынесены в торговые предложения по оттенку и объёму с выбором прямо в карточке и с корректной сменой цены, изображения и наличия. Фильтр перестроен под то, как ищут косметику: тип кожи, назначение, линейка, а состав вынесен в отдельное поле с поиском по ингредиенту.
Снятые позиции не удаляются. Страница остаётся, товар переводится в «нет в наличии», и на ней показывается аналог. Удаление страницы — это потеря ссылок, закладок и поискового трафика, накопленного годами, и восстановить его нельзя.
Каталог живёт из 1С: цены и остатки приходят автоматически, а сбой выгрузки больше не обнуляет склад.
Оттенки и объёмы выбираются в карточке, страницы снятых товаров не отдают ошибку и ведут к аналогу.