해당 주제에 참여 경험이 있어서 음소거 설정보다 우선 적용되는 것 아닐까요? 제 추측입니다.
문제를 재현할 수 없다면 이는 엄밀히 말해 버그가 아니거나, 적어도 버그 리포트라고 보기 어렵습니다.
하지만 메일링 리스트 모드는 원래 모든 사용자에게 항상 메일을 보내도록 설계된 것이라 생각했는데, 카테고리를 음소거하거나 특정 사용자를 음소거하는 기능이 작동하는 것에 오히려 놀랐습니다. 메일링 리스트 모드를 사용하지 말고, 메일을 정말로 원하는 사용자들이 원하는 카테고리를 관찰(watch)하도록 하는 방식을 권장합니다. 원하지 않는 카테고리를 음소거하는 것보다 말이죠. 하지만 이는 상당한 작업이 될 것 같아, 이제 와서 이 권고가 유용할지는 의문입니다.
네, 데이터 탐색기를 조금 사용해 봤는데, 먼저 사용자/알림 설정 방식을 설명드리겠습니다:
먼저, 일정 기간 동안 기존 메일링 리스트를 디스커스에 미러링하여 콘텐츠가 쌓이도록 했습니다.
[참고: 이 작업은 별도의 개발 인스턴스에서 수행한 후, 게시글을 프로덕션 인스턴스로 복사했습니다]
그런 다음, 기존 메일링 리스트를 기준으로 사용자를 "구독"하도록 했습니다 → 따라서 이전 메일링 리스트 구독 내역에 따라 일부 카테고리에 자동으로 구독(감시) 상태가 되어 있을 수 있습니다.
웹사이트를 한 번도 방문한 적 없는 사용자를 하나 선택해 보았습니다. 예를 들어, 본 적도 없고, 게시글을 읽은 적도 없는 사용자입니다.
그런 다음 “사용자가 감시/추적/음소거 중인 주제 목록” 플러그인을 사용했습니다.
알림 수준 3에서는 자동으로 구독된 카테고리의 주제만 표시되는 것을 확인했습니다 - 좋습니다.
수준 1을 확인해 보면 많은 주제가 표시되는데, 이는 아마도 카테고리만 음소거되고 주제는 음소거되지 않아서 정규 = 1로 설정되어 있기 때문에 정상적인 것으로 보입니다. 하지만 어떤 이유에서인지 topic_last_visited_at 값이 항상 존재하며 주제 생성 날짜와 일치합니다.
또한, 이메일을 통해 프로덕션 인스턴스에서 단계적 사용자(staged user)로 생성된 후 활성화되었지만 웹사이트를 한 번도 방문하지 않은 사용자들도 있습니다. 이러한 사용자의 경우 알림 수준 1에서 어떤 주제도 표시되지 않습니다!
따라서 초기에 단계적 사용자(staged user)로 생성된 경우 어떤 혼란이 발생한 것 같습니다.
제가 무엇을 원하시는지 잘못 이해한 것이 아니라면, 다음과 같은 방식으로 처리하면 될 것 같습니다.
-- [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를 확인해 보았더니 목록에서 제 자신을 찾을 수 없었습니다. 하지만 해당 토픽을 방문한 후 쿼리를 다시 실행하면 알림 수준(notif. level) = 1로 목록에 표시되었습니다. 이것이 예상되는 동작인가요? (자동 추적이 꺼져 있는 상태입니다!)
그다음, 수많은 사용자에게 잘못된 메일을 보내고 있던 토픽들을 조사해 보니 알림 수준 = 1인 사용자의 목록이 엄청나게 길었습니다. 이 중 일부는 실제로 웹에 로그인한 적도 없고 스레드에 참여하지도 않은 스테이징(테스트) 사용자였습니다.
마지막으로, 대량 구독이 발생한 토픽들은 대부분 사이트가 온라인으로 전환되어 사용자가 로그인할 수 있게 되기 이전 시기의 것이었습니다. 또한 구독자 수는 상당히 안정적이며, 당시 사이트의 사용자 수와 일치하는 것으로 보입니다.
참고로, 어떤 시점에 스테이징 사용자 추적이 변경 허용 설정을 활성화했다가 나중에 비활성화했습니다. 또한 기본적으로 모든 카테고리 음소거 설정도 한동안 활성화/비활성화한 적이 있습니다.
이 모든 것이 이런 혼란을 일으킨 것일까요?
결국 원치 않는 토픽에서 구독을 해제하도록 사용자에게 권고하는 것이 가장 좋을 것 같습니다.