Авито сам пишет продавцу «оплатите подписку». Наш сторож решил, что это покупатель

У нашей системы для продавцов на Авито есть фоновая задача, которая следит, чтобы ни одно сообщение покупателя в чате не провисело без ответа дольше контрольного времени. Раз в несколько минут она проходит по каждому подключённому кабинету, смотрит на последнее входящее сообщение и на то, прочитано ли оно площадкой, и если с перепиской что-то не так — шлёт карточку в рабочую группу «AVITOMA команда».
У нашей системы для продавцов на Авито есть фоновая задача, которая следит, чтобы ни одно сообщение покупателя в чате не провисело без ответа дольше контрольного времени. Раз в несколько минут она проходит по каждому подключённому кабинету, смотрит на последнее входящее сообщение и на то, прочитано ли оно площадкой, и если с перепиской что-то не так — шлёт карточку в рабочую группу «AVITOMA команда».

Утром 7 октября по одному из кабинетов — это ДОСТАВЬ-КА, курьерский сервис — за ночь накопилось шесть почти одинаковых карточек. Почти, потому что в каждой был свой диагноз: то «причина не установлена», то «переписка отвечает через раз», и при этом вебхук для этого кабинета сторож переподписывал каждый день, хотя накануне уже переподписывал тот же самый. Диагноз внутри одной ночи менялся буквально каждый час — такую ленту быстро перестают читать, а это ровно то, чего мониторинг не должен допускать.

Открыли сам чат, который сторож считал проблемным. Последнее сообщение, которое он принял за входящее, датировано 6 октября — но живой покупатель в этой переписке молчал ещё с 25 сентября. Строка, которую система читала как письмо клиента, оказалась служебной: «Перейдите на подписку с API мессенджера…» — Авито сама кладёт её в чат, когда у кабинета нет оплаченного тарифа с доступом к API мессенджера. Для API это обычное сообщение от собеседника, для нашего сторожа — покупатель, которому не ответили почти две недели.

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

Правка легла в один PR четырьмя пунктами. Системные заглушки Авито исключили из подсчёта входящих — теперь строка про неоплаченную подписку не выглядит письмом клиента ни для одной проверки. Смену диагноза стали объявлять только тогда, когда новое семейство вердиктов держится два прогона подряд и при этом отличается от того, что мы уже объявили карточкой в прошлый раз, а не от случайного соседнего значения. Переподписку вебхука вывели из списка событий, которые сами по себе рождают карточку, — это рутинная техническая операция, а не инцидент, о котором нужно знать живым людям. И вердикт «переписку не читает сам клиент» теперь применяется только к кабинетам с оплаченной подпиской на API мессенджера — на бесплатных и неоплаченных это было неправдой по определению: там и читать нечем.

PR ушёл в прод 7 октября около восьми утра. Кабинет, который выдавал по шесть карточек за ночь, с этого момента молчит — если там действительно нет проблемы, карточки не будет вовсе, а если появится настоящая, диагноз в ней больше не будет скакать каждый час.

Если вы строите мониторинг поверх API маркетплейса, биллинга или любого внешнего сервиса, из этой истории стоит забрать два вопроса к собственной системе. Первый — не путает ли она служебные сообщения площадки (напоминания об оплате, системные баннеры, автоответы) с реальной активностью живого собеседника; такие строки обычно приходят по тому же каналу, что и настоящие сообщения, и ничем не помечены как служебные. Второй — не объявляет ли она тревогу на каждое мелкое дрожание входных данных, если сам внешний сервис отвечает нестабильно. Без гистерезиса — требования, чтобы новый диагноз подтвердился пару раз подряд, прежде чем о нём сообщать людям, — лента алертов быстро превращается в шум, и именно в этом шуме тонет та тревога, которая окажется настоящей.

11