Уведомления из отключенных категорий при включении режима списка рассылки

Мы развернули инстанс, где все категории по умолчанию отключены, а все пользователи находятся в режиме рассылки.
Очень часто пользователи получают письма от отдельных тем в своих отключенных категориях. Найти закономерность в этом поведении крайне сложно.

Похоже, это баг Still getting notifications from muted user in mailing list mode - #5 by lkramer, но для отключенных категорий.

Есть ли какое-нибудь (быстрое) решение? У нас более 1000 пользователей и несколько сотен категорий — даже небольшая доля ошибок довольно раздражает.

cc @trobiyo

Боюсь, нам потребуется больше информации. Действительно ли эта проблема случайна? Нет ли никакой корреляции или сходства между этими уведомлениями?

Возможно, они участвовали в этих темах, что имеет приоритет над отключением? Такова моя догадка.

Если вы не можете воспроизвести проблему, то это не совсем баг, или, по крайней мере, это не отчёт о баге.

Но я думал, что режим «Список рассылки» предназначен для того, чтобы отправлять письма всем всем время, и меня почти удивляет, что отключение категорий или пользователей работает. Я бы рекомендовал не использовать режим «Список рассылки», а вместо этого предложить тем, кто действительно любит получать письма, следить за нужными категориями, а не отключать те, которые им не нужны. Но, судя по всему, это потребовало бы огромных усилий, поэтому, думаю, уже поздно давать эту рекомендацию. :person_shrugging:

К сожалению, поскольку я не могу выполнить поиск по теме в панели администратора «Отправленная почта», отследить это сложно.

Автоматическое отслеживание по умолчанию установлено в «Никогда», и ни один из затронутых пользователей не менял эту настройку.

Что ж.. ¯\_(ツ)_/¯
Единственная реальная причина использовать режим почтового списка в данном случае — это возможность получать собственные сообщения по почте; это очень-очень-очень частый запрос.

Ещё одно преимущество игнорирования: оно не загромождает страницу обзора категорий, когда их сотни (и да, мы пытались поощрять сокращение их количества при переходе с предыдущего форума/почтового списка).

Верно. Установлен ли у вас плагин Data Explorer? Если вы знаете SQL, это может быть одним из способов быстро изучить эти отправленные письма.

Хорошо, я немного поработал с Data Explorer, но сначала позвольте объяснить, как мы настроили пользователей и уведомления:

  1. Сначала мы в течение некоторого времени зеркально отображали старую рассылку, чтобы накопить контент в Discourse.
    [NB: мы делали это в отдельном dev-экземпляре, а затем скопировали посты в prod-экземпляр]
  2. Затем мы «подписали» пользователей на основе старых рассылок — следовательно, они могут автоматически быть подписаны (наблюдать) за некоторыми категориями в зависимости от их предыдущих подписок на рассылки.

Итак, я взял пользователя, который никогда не посещал веб-сайт: например, никогда ничего не видел, не читал постов и т. д.
Затем я использовал плагин «Список тем, за которыми пользователь наблюдает/следит/заглушен».
Я вижу, что на уровне уведомлений 3 отображаются только темы в категориях, на которые он был автоматически подписан — это хорошо.
Когда я проверяю уровень 1, я вижу много тем — что, вероятно, тоже нормально, так как заглушены только категории, а не темы, то есть они должны быть обычными = 1. Но по какой-то причине topic_last_visited_at всегда присутствует и соответствует дате создания темы.

Затем есть пользователи, которые были созданы как staged-пользователи в prod-экземпляре через email in, а затем активированы, но так и не посещали веб-сайт. Для таких пользователей я не вижу ни одной темы на уровне уведомлений 1!

Кажется, что для изначально staged-пользователей возник какой-то хаос.

Вопрос: есть ли способ сбросить уровни уведомлений о темах для пользователей?

Возможно, прежде чем это: есть ли способ просмотреть уровни уведомлений по темам для пользователя?
Я не нашел этого в веб-панели администратора. Доступно ли это только на уровне БД?

Вы должны иметь возможность запрашивать уровни уведомлений с помощью data-explorer. Я думаю, что в List of emails of users watching a specific category может быть полезный запрос, который вы сможете доработать.

К сожалению, в обозревателе данных нельзя увидеть уровни уведомлений о темах для каждого пользователя.
Я проверил, что пользователи, получающие эти ложные письма, не подписаны на соответствующие категории.

Должно подойти что-то вроде этого, если я правильно понял, что вам нужно?


-- [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

Спасибо за это, @JammyDodger!

Я проверил ID темы, которую никогда не посещал, и не нашёл себя в списке. Однако, когда я зашёл в эту тему и снова выполнил запрос, я появился в списке с уровнем уведомлений = 1. Это ожидаемое поведение? (обратите внимание, что автоматическое отслеживание отключено!)

Затем, для тем, которые вызывали спам-письма для очень многих пользователей, я обнаружил огромный список пользователей с уровнем уведомлений = 1. Некоторые из них — это тестовые аккаунты, которые никогда не входили в систему через веб-интерфейс и также не участвовали в обсуждении.

Наконец, я выяснил, что темы с массовыми подписками были созданы в основном до запуска сайта и возможности входа пользователей. Кроме того, количество подписчиков довольно стабильно и, похоже, соответствует числу пользователей, которые были на сайте в тот период.

Стоит отметить, что в какой-то момент я включил настройку allow changing staged user tracking, но затем отключил её. Также я включал и отключал настройку mute all categories by default.
Может быть, всё это как-то вызвало эту путаницу?

В итоге, возможно, мне стоит просто предложить пользователям отписаться от нежелательных тем.

Уровень уведомлений 1 — это «Обычный», так что это ожидаемо. И запись в таблице topic_users появляется только после посещения темы, так что это тоже ожидаемо. :+1:

Похоже, вы могли включить некоторые уровни уведомлений по темам, когда настраивали параметры. Могли бы вы проверить конкретно тех, кто наблюдает за темой в отключенной от уведомлений категории, и посмотреть, являются ли они теми, кто затронут в вашей первоначальной проблеме?

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

Уровень уведомлений, специфичный для темы, всегда имеет приоритет, когда он конфликтует с уровнем уведомлений по умолчанию для категории или тега.