Карантин и ценовые коридоры: защита от аномальных цен
Автоматическая переоценка — это скорость, но и риск: поставщик опечатался в прайсе, и цена товара рушится в десять раз; или два поставщика дают цены, различающиеся вдвое, — кому верить? Карантин ловит такие аномалии на каждом прогоне переоценки и выносит их на ваше решение, а ценовые коридоры запоминают решения, чтобы одно и то же не спрашивалось повторно.
Когда товар попадает в карантин
Два независимых детектора; пороги настраиваются на странице Отчёты:

- Скачок цены (Порог резкого изменения цены, %, по умолчанию 50): новая цена главного каталога отличается от прежней сильнее порога. Сравнивается уже итоговая цена — после наценок, РРЦ и минимальной маржи.
- Выбился один прайс (Порог разброса у поставщиков, %, по умолчанию 50): цена поставщика отклоняется от медианы всех предложений сильнее порога. Нужно минимум два поставщика. Умная фильтрация ложных тревог: поставщик не считается выбросом, если его цена стабильна от прайса к прайсу («он всегда такой») или попадает в ранее одобренный коридор.
Что уже изменилось, видно там же, во вкладке Резкие изменения цен. В поле Период выберите последний прогон, отдельный прогон или период — сутки, неделю, месяц или свои даты. За период каждый товар показан одной строкой: цена в начале периода, последняя цена, сколько раз она менялась и самый резкий разовый скачок. В список попадает товар, у которого итог или разовый скачок превысил порог, — так видна и цена, которая подпрыгнула и вернулась обратно. История прогонов хранится 30 дней.
Страница «Карантин»
Пункт меню Карантин с бейджем числа ожидающих. Вкладки На рассмотрении / Одобренные / Отклонённые / Все, фильтры по причине (Скачок цены / Выбился один прайс / Разошлись все прайсы), по поставщику и по состоянию цены, поиск по артикулу и диапазону цены.
Что означает каждая причина
- Скачок цены — цена главного каталога изменилась сильнее порога. Вниз — заблокирована, вверх — применена.
- Выбился один прайс — один поставщик ушёл от середины остальных предложений. Цена каталога при этом считается как обычно, запись — сигнал проверить прайс.
- Разошлись все прайсы — отклонилась больше половины предложений. Это чаще всего значит, что к одной карточке привязаны разные товары: смотреть такие записи стоит в первую очередь, раскрыв список поставщиков.
- Скачок и выброс прайса — совпали обе причины сразу.
Фильтры: поставщик и состояние цены
Очередь на разбор почти всегда приходит от одного прайса — например, после подключения нового поставщика в карантин попадают тысячи карточек за один прогон. Два фильтра собирают из этой очереди ровно ту работу, которую вы делаете сейчас:
- Поставщик — список тех, кто есть в очереди, с числом записей у каждого. Для причины «выбился прайс» это тот, кто выбился; для скачка — тот, кто стал лучшим поставщиком товара.
- Цена: Применена — новая цена уже стоит в главном каталоге и ушла на витрину: здесь деньги, и разбирать это стоит первым. Цена: Заблокирована — цена осталась прежней и ждёт решения.

В таблице по каждой записи видно всё для решения:
- Цена сейчас и Предложена с пометкой «цена применена» (синяя) или «цена заблокирована» (красная);
- Изм.% / Разброс% — насколько и в какую сторону;
- Поставщики: для скачка — «был:» / «стал:» (смена лучшего поставщика); для разброса — «outlier:» (кто выбился), «медиана:» и «пред.:» (его прошлая цена);
- стрелка раскрытия показывает все предложения поставщиков по товару — прямо отсюда можно удалить ошибочную связь.
Решения: одобрить или отклонить
- ✓ Одобрить: заблокированная цена применяется; применённая — подтверждается. Для разброса заодно создаётся ценовой коридор вокруг цены поставщика-выброса.
- ✗ Отклонить: применённая цена откатывается к старой; заблокированная просто остаётся старой.
- Массово: ✓ Одобрить все / ✗ Отклонить все либо чекбоксами — Одобрить выбранные (N).
- Быстрые кнопки есть и в Каталоге — карантинные строки подсвечены красным с бейджами «⚡ скачок» / «↔ разброс».
Ценовые коридоры: память решений
Коридор создаётся при одобрении разброса: система запоминает «согласованную» цену этого поставщика по этому товару ± допуск. Пока следующие прайсы поставщика держатся в коридоре, повторный карантин по нему не срабатывает.
- Коридор при одобрении разброса, % — ширина допуска (по умолчанию ±5%);
- Срок действия коридора, дней — 0 = бессрочно; с истечением срока защита снимается, и при сохранившемся отклонении товар вернётся в карантин;
- повторное одобрение того же поставщика перезаписывает коридор новой ценой и продлевает срок.
Для скачков память устроена иначе: система запоминает «отпечаток» набора поставщиков и закупок. Отклонили скачок — при неизменных входных данных он не будет спрашиваться снова; как только закупки реально изменились, проверка сработает заново.
Рецепты настройки
- Консервативно (дорогой ассортимент): скачок 20–30%, разброс 30%, коридор ±5% на 30 дней.
- По умолчанию: 50/50 — ловит только грубые аномалии, почти не шумит.
- Отключить проверку: поставьте порог 0 (например, разброс 0, если поставщик один и разброс не актуален).
Частые вопросы
Товар «застрял» — цена не обновляется
Проверьте карантин: у записи со скачком вниз цена заблокирована до решения. Одобрите или отклоните — и следующий прогон снова начнёт управлять ценой.
Один и тот же товар возвращается в карантин по разбросу
Либо истёк коридор, либо цена поставщика ушла за его пределы, либо вы отклонили разброс (отклонение коридор не создаёт — «память» есть только у одобрений). Если поставщик систематически «особый», одобрите разброс — коридор погасит повторы.
Слишком много записей после первой переоценки
Нормально для старта: истории цен ещё нет, стабильность поставщиков не посчитана. Разберите первую волну массовыми кнопками — дальше сработают коридоры и фильтр стабильности, шум резко упадёт.
Где посмотреть созданные коридоры?
Отдельного экрана пока нет — коридор виден по эффекту (повторный карантин не возникает). Срок и ширина задаются в порогах на странице «Отчёты».