Мы развернули инстанс, где все категории по умолчанию отключены, а все пользователи находятся в режиме рассылки.
Очень часто пользователи получают письма от отдельных тем в своих отключенных категориях. Найти закономерность в этом поведении крайне сложно.
Возможно, они участвовали в этих темах, что имеет приоритет над отключением? Такова моя догадка.
Если вы не можете воспроизвести проблему, то это не совсем баг, или, по крайней мере, это не отчёт о баге.
Но я думал, что режим «Список рассылки» предназначен для того, чтобы отправлять письма всем всем время, и меня почти удивляет, что отключение категорий или пользователей работает. Я бы рекомендовал не использовать режим «Список рассылки», а вместо этого предложить тем, кто действительно любит получать письма, следить за нужными категориями, а не отключать те, которые им не нужны. Но, судя по всему, это потребовало бы огромных усилий, поэтому, думаю, уже поздно давать эту рекомендацию.
К сожалению, поскольку я не могу выполнить поиск по теме в панели администратора «Отправленная почта», отследить это сложно.
Автоматическое отслеживание по умолчанию установлено в «Никогда», и ни один из затронутых пользователей не менял эту настройку.
Что ж.. ¯\_(ツ)_/¯
Единственная реальная причина использовать режим почтового списка в данном случае — это возможность получать собственные сообщения по почте; это очень-очень-очень частый запрос.
Ещё одно преимущество игнорирования: оно не загромождает страницу обзора категорий, когда их сотни (и да, мы пытались поощрять сокращение их количества при переходе с предыдущего форума/почтового списка).
Хорошо, я немного поработал с Data Explorer, но сначала позвольте объяснить, как мы настроили пользователей и уведомления:
Сначала мы в течение некоторого времени зеркально отображали старую рассылку, чтобы накопить контент в Discourse.
[NB: мы делали это в отдельном dev-экземпляре, а затем скопировали посты в prod-экземпляр]
Затем мы «подписали» пользователей на основе старых рассылок — следовательно, они могут автоматически быть подписаны (наблюдать) за некоторыми категориями в зависимости от их предыдущих подписок на рассылки.
Итак, я взял пользователя, который никогда не посещал веб-сайт: например, никогда ничего не видел, не читал постов и т. д.
Затем я использовал плагин «Список тем, за которыми пользователь наблюдает/следит/заглушен».
Я вижу, что на уровне уведомлений 3 отображаются только темы в категориях, на которые он был автоматически подписан — это хорошо.
Когда я проверяю уровень 1, я вижу много тем — что, вероятно, тоже нормально, так как заглушены только категории, а не темы, то есть они должны быть обычными = 1. Но по какой-то причине topic_last_visited_at всегда присутствует и соответствует дате создания темы.
Затем есть пользователи, которые были созданы как staged-пользователи в prod-экземпляре через email in, а затем активированы, но так и не посещали веб-сайт. Для таких пользователей я не вижу ни одной темы на уровне уведомлений 1!
Кажется, что для изначально staged-пользователей возник какой-то хаос.
Вопрос: есть ли способ сбросить уровни уведомлений о темах для пользователей?
Возможно, прежде чем это: есть ли способ просмотреть уровни уведомлений по темам для пользователя?
Я не нашел этого в веб-панели администратора. Доступно ли это только на уровне БД?
К сожалению, в обозревателе данных нельзя увидеть уровни уведомлений о темах для каждого пользователя.
Я проверил, что пользователи, получающие эти ложные письма, не подписаны на соответствующие категории.
Должно подойти что-то вроде этого, если я правильно понял, что вам нужно?
-- [params]
-- int :topic_id
SELECT tu.user_id,
tu.notification_level
FROM topic_users tu
WHERE tu.topic_id = :topic_id
ORDER BY tu.notification_level DESC
Я проверил ID темы, которую никогда не посещал, и не нашёл себя в списке. Однако, когда я зашёл в эту тему и снова выполнил запрос, я появился в списке с уровнем уведомлений = 1. Это ожидаемое поведение? (обратите внимание, что автоматическое отслеживание отключено!)
Затем, для тем, которые вызывали спам-письма для очень многих пользователей, я обнаружил огромный список пользователей с уровнем уведомлений = 1. Некоторые из них — это тестовые аккаунты, которые никогда не входили в систему через веб-интерфейс и также не участвовали в обсуждении.
Наконец, я выяснил, что темы с массовыми подписками были созданы в основном до запуска сайта и возможности входа пользователей. Кроме того, количество подписчиков довольно стабильно и, похоже, соответствует числу пользователей, которые были на сайте в тот период.
Стоит отметить, что в какой-то момент я включил настройку allow changing staged user tracking, но затем отключил её. Также я включал и отключал настройку mute all categories by default.
Может быть, всё это как-то вызвало эту путаницу?
В итоге, возможно, мне стоит просто предложить пользователям отписаться от нежелательных тем.
Уровень уведомлений 1 — это «Обычный», так что это ожидаемо. И запись в таблице topic_users появляется только после посещения темы, так что это тоже ожидаемо.
Похоже, вы могли включить некоторые уровни уведомлений по темам, когда настраивали параметры. Могли бы вы проверить конкретно тех, кто наблюдает за темой в отключенной от уведомлений категории, и посмотреть, являются ли они теми, кто затронут в вашей первоначальной проблеме?
На самом деле, если в теме они помечены как «Обычный», я думаю, это переопределит отключение уведомлений в категории. Возможно, вы уже нашли ответ. Думаю, ваше предыдущее изменение настроек могло массово установить уровень уведомлений по темам для всех, а повторное изменение затронуло только новые темы вперёд.