Двенадцать дней рассылка не уходила. Поломки не было

В моём приложении есть рассылка «куда сходить на этой неделе». За двенадцать дней она ушла два раза. Подписаны пятнадцать человек. Я полез искать поломку: расписание, часовой пояс, права, бот. Всё работало. Функция исправна, запускается вовремя, ошибок нет. Она просто никого не находила. Чтобы получить письмо, человек должен был: заполнить интересы, указать район, где живёт, — и чтобы категория встречи совпала с его интересами, а сама встреча попала в радиус от дома. Интересы заполнили 11 из 25. Район указали 11 из 25. Оба поля необязательные — я сам так сделал, потому что лишние поля на регистрации стоят дороже, чем дают. Дальше — деталь, из-за которой я это вообще заметил. На карте сейчас десять встреч. Три из них — йога и трансформационная игра. В интересах их не выбрал НИ ОДИН человек. То есть три встречи из десяти не попадали в рассылку никому и никогда, при любой настройке. Починка оказалась в одном решении: незаполненное поле больше не значит «откажи», оно значит «не сужай». Нет интересов — все категории. Нет района — весь город. Девятнадцать писем вместо двух. Вывод, за который обидно. Сломанный код орёт: падение, ошибка, красный лог. А фильтр, который никого не нашёл, ведёт себя ровно как исправный — тихо. Отличить «работает и никому не подошло» от «работает и не могло подойти никому» по логам нельзя вообще. Такие места надо проверять не вопросом «есть ли ошибки», а вопросом «сколько людей вообще может сюда попасть». Считать не отказы, а размер множества, из которого выбираем. У меня он был восемь человек из двадцати пяти, и я об этом не знал двенадцать дней.

Двенадцать дней рассылка не уходила. Поломки не было | Сетка — социальная сеть от hh.ru