메일링 리스트 모드가 활성화된 경우 음소거된 카테고리 알림

모든 카테고리가 음소거되어 있고, 모든 사용자가 기본적으로 메일링 리스트 모드로 설정된 인스턴스를 운영하고 있습니다.
음소거된 카테고리의 개별 스레드에서 메일을 받는 경우가 꽤 자주 발생합니다. 이 동작에서 패턴을 찾기가 정말 어렵습니다.

이것은 음소거된 카테고리에 대한 버그로, 이 버그와 비슷해 보입니다: Still getting notifications from muted user in mailing list mode - #5 by lkramer

(빠른) 해결책이 있을까요? 1,000명 이상의 사용자와 수백 개의 카테고리를 보유하고 있어, 작은 오류율도 꽤 짜증스럽습니다.

cc @trobiyo

더 많은 정보가 필요할 것 같습니다. 이 문제가 정말로 무작위적인가요? 그 알림들 사이에 상관관계나 유사점이 전혀 없나요?

해당 주제에 참여 경험이 있어서 음소거 설정보다 우선 적용되는 것 아닐까요? 제 추측입니다.

문제를 재현할 수 없다면 이는 엄밀히 말해 버그가 아니거나, 적어도 버그 리포트라고 보기 어렵습니다.

하지만 메일링 리스트 모드는 원래 모든 사용자에게 항상 메일을 보내도록 설계된 것이라 생각했는데, 카테고리를 음소거하거나 특정 사용자를 음소거하는 기능이 작동하는 것에 오히려 놀랐습니다. 메일링 리스트 모드를 사용하지 말고, 메일을 정말로 원하는 사용자들이 원하는 카테고리를 관찰(watch)하도록 하는 방식을 권장합니다. 원하지 않는 카테고리를 음소거하는 것보다 말이죠. 하지만 이는 상당한 작업이 될 것 같아, 이제 와서 이 권고가 유용할지는 의문입니다. :person_shrugging:

불행히도, 보낸 이메일 관리 패널에서 제목으로 검색할 수 없기 때문에 이 문제를 추적하기가 어렵습니다.

자동 추적(auto-track)은 기본적으로 '절대 안 함’으로 설정되어 있으며, 영향을 받은 사용자 중 누구도 이를 변경하지 않았습니다.

음.. ¯\_(ツ)_/¯
메일링 리스트 모드를 사용하는 유일한 실질적인 이유는 이 경우 개인 메시지도 이메일로 받을 수 있기 때문입니다 – 이는 매우 매우 매우 자주 요청되는 기능입니다.

음소거의 또 다른 장점: 수백 개의 카테고리가 있을 때 카테고리 개요 페이지가 지저분해지지 않습니다 (그리고 이전 포럼/메일링 리스트에서 이전할 때 카테고리 수를 줄이도록 장려해 보았지만, 여전히 많은 상태입니다).

네, 맞습니다. 데이터 탐색기 플러그인이 설치되어 있나요? SQL을 알고 있다면, 이를 통해 해당 보낸 메일들을 빠르게 살펴볼 수 있는 방법 중 하나가 될 수 있습니다.

네, 데이터 탐색기를 조금 사용해 봤는데, 먼저 사용자/알림 설정 방식을 설명드리겠습니다:

  1. 먼저, 일정 기간 동안 기존 메일링 리스트를 디스커스에 미러링하여 콘텐츠가 쌓이도록 했습니다.
    [참고: 이 작업은 별도의 개발 인스턴스에서 수행한 후, 게시글을 프로덕션 인스턴스로 복사했습니다]
  2. 그런 다음, 기존 메일링 리스트를 기준으로 사용자를 "구독"하도록 했습니다 → 따라서 이전 메일링 리스트 구독 내역에 따라 일부 카테고리에 자동으로 구독(감시) 상태가 되어 있을 수 있습니다.

웹사이트를 한 번도 방문한 적 없는 사용자를 하나 선택해 보았습니다. 예를 들어, 본 적도 없고, 게시글을 읽은 적도 없는 사용자입니다.
그런 다음 “사용자가 감시/추적/음소거 중인 주제 목록” 플러그인을 사용했습니다.
알림 수준 3에서는 자동으로 구독된 카테고리의 주제만 표시되는 것을 확인했습니다 - 좋습니다.
수준 1을 확인해 보면 많은 주제가 표시되는데, 이는 아마도 카테고리만 음소거되고 주제는 음소거되지 않아서 정규 = 1로 설정되어 있기 때문에 정상적인 것으로 보입니다. 하지만 어떤 이유에서인지 topic_last_visited_at 값이 항상 존재하며 주제 생성 날짜와 일치합니다.

또한, 이메일을 통해 프로덕션 인스턴스에서 단계적 사용자(staged user)로 생성된 후 활성화되었지만 웹사이트를 한 번도 방문하지 않은 사용자들도 있습니다. 이러한 사용자의 경우 알림 수준 1에서 어떤 주제도 표시되지 않습니다!

따라서 초기에 단계적 사용자(staged user)로 생성된 경우 어떤 혼란이 발생한 것 같습니다.

질문: 사용자의 주제 알림 수준을 초기화할 수 있는 방법이 있을까요?

그전에 먼저: 사용자의 주제 알림 수준을 확인할 방법이 있나요?
관리자 웹 패널에서 찾지 못했습니다. DB 레벨에서만 접근 가능한 건가요?

data-explorer을 사용하여 알림 수준을 쿼리할 수 있어야 합니다. https://meta.discourse.org/t/list-of-emails-of-users-watching-a-specific-category/198171에 유용한 쿼리가 있을 수 있으며, 이를 수정하여 사용할 수 있다고 생각합니다.

불행히도 데이터 탐색기에서는 사용자별 토픽 알림 수준을 확인할 수 없습니다.
해당 이메일을 잘못 수신하는 사용자들이 해당 카테고리에 구독되어 있지 않음을 확인했습니다.

제가 무엇을 원하시는지 잘못 이해한 것이 아니라면, 다음과 같은 방식으로 처리하면 될 것 같습니다.


-- [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를 확인해 보았더니 목록에서 제 자신을 찾을 수 없었습니다. 하지만 해당 토픽을 방문한 후 쿼리를 다시 실행하면 알림 수준(notif. level) = 1로 목록에 표시되었습니다. 이것이 예상되는 동작인가요? (자동 추적이 꺼져 있는 상태입니다!)

그다음, 수많은 사용자에게 잘못된 메일을 보내고 있던 토픽들을 조사해 보니 알림 수준 = 1인 사용자의 목록이 엄청나게 길었습니다. 이 중 일부는 실제로 웹에 로그인한 적도 없고 스레드에 참여하지도 않은 스테이징(테스트) 사용자였습니다.

마지막으로, 대량 구독이 발생한 토픽들은 대부분 사이트가 온라인으로 전환되어 사용자가 로그인할 수 있게 되기 이전 시기의 것이었습니다. 또한 구독자 수는 상당히 안정적이며, 당시 사이트의 사용자 수와 일치하는 것으로 보입니다.

참고로, 어떤 시점에 스테이징 사용자 추적이 변경 허용 설정을 활성화했다가 나중에 비활성화했습니다. 또한 기본적으로 모든 카테고리 음소거 설정도 한동안 활성화/비활성화한 적이 있습니다.
이 모든 것이 이런 혼란을 일으킨 것일까요?

결국 원치 않는 토픽에서 구독을 해제하도록 사용자에게 권고하는 것이 가장 좋을 것 같습니다.

알림 레벨 1은 '일반’이므로, 이는 예상된 결과입니다. 또한 토픽을 방문해야만 topic_users 테이블에 기록이 생성되므로, 이것도 예상된 동작입니다. :+1:

설정을 조정하면서 일부 토픽 알림 레벨을 켜두셨을 가능성이 있습니다. 음소거된 카테고리에서 토픽을 ‘감시’ 중인 사용자를 특별히 확인해 보시고, 원래 문제에서 영향을 받은 사람들이 그들인지 확인해 보실 수 있을까요?

실제로, 토픽에서 '일반’으로 표시되어 있다면 카테고리 음소거보다 우선할 것입니다. 답을 찾으신 것 같습니다. :slightly_smiling_face: 이전 설정 변경으로 인해 모든 사용자의 토픽 알림 레벨이 일괄 설정되었을 수 있으며, 다시 변경한 것은 향후의 새 토픽에만 영향을 미쳤을 것입니다.

토픽별 알림 수준은 카테고리 또는 태그의 기본 알림 수준과 충돌할 경우 항상 우선합니다.