그룹의 알림을 절차적으로 무효화하기

요약: 2024년 2월 구글은 허용 가능한 스팸 비율을 0.3%로 변경합니다. 도메인이 블랙리스트에 등재되는 것을 방지하기 위해 발신 이메일 양을 줄이고자 합니다. (1,000통 중 3통의 스팸 신고가 접수되면 도메인이 블랙리스트에 오름). 특정 그룹에 대해 ‘첫 게시물 보기(watching first post)’ 설정을 절차적으로 변경해야 합니다.

저희 비영리 단체는 물리적 조직으로, 디스코urs를 통해 회원/커뮤니티 참여를 촉진하고 있습니다. 특히, 저희 조직과 관련된 필수 알림(회의 의안, 투표, 중요 업데이트)에 대해 신규 회원을 옵트인(opt-in) 처리하고 있습니다. 법적으로 이러한 이메일을 발송할 수 있고 의무도 있습니다.

  • 현재: 회원 포털이 API를 통해 새로운 디스코urs 사용자를 추가하고, 회원이 정당한 자격을 유지하는 동안 ‘current_members’ 그룹에 배정합니다.
  • ‘current_members’ 그룹은 카테고리: 첫 게시물 보기(Watching First Post): 공식 공지(Official Announcements)로 설정되어 있습니다.

이 부분은 잘 작동하고 있습니다.

  • 회원이 탈퇴/만료되면, 우리는 (API를 통해) 다양한 권한을 위해 그들을 ‘former_members’ 그룹으로 이동시킵니다. 회원이 만료/탈퇴/기타 사유로 나갈 경우, 커뮤니티에 여전히 참여할 수 있도록 ‘공개 비회원(public non member)’ 권한 레벨로 계정을 활성 상태로 유지합니다.
  • 목표: 그룹 추가 시 ‘첫 게시물 보기’ 옵션을 제거하는 것입니다.
스크린샷


그룹 설정에는 보기가 할당되어 있지 않습니다.


그룹 구성원에게 여전히 보기가 설정되어 있습니다.

  • 그룹으로 이동하는 것은 추가적(additive)인 것 같습니다. 그룹 추가에 기반하여 ‘제거’ 추적을 지정하는 방법이 있을까요?
  • 그룹 소속으로 인해 추가된 추적 설정을 제거하는 방법이 있을까요? (예: 그룹 탈퇴 시, 추가된 것을 되돌리기).

대안으로 @태깅을 사용할 수 있지만, 실수로 남용하기가 매우 쉽습니다. 그룹이 알림 수준을 관리하도록 하는 것이 가장 쉬울 것입니다.

그렇게 해야 할 것 같습니다. 사용자가 탈퇴할 때 해당 관찰 중인 카테고리를 제거하는 것입니다. Discourse API를 역공학하여 관찰 중인 카테고리를 변경하는 API 호출을 찾을 수 있습니다.

문제는 이 같은 상황에 처한 사용자가 수백 명이라는 점입니다. 향후를 대비해 설정하는 것은 좋은 점이지만, 명시적인 null 빈 리스트를 지원할 수 있다면 훌륭한 기능이 될 것입니다.

그렇다면 만료된 그룹의 사용자들에서 감시(watch)를 제거하는 레일즈 명령이 해결책이 될 수 있습니다. 그룹의 설정을 변경하면 모든 멤버에게 적용할 것인지 묻는지 기억이 나지 않습니다. 그 방법을 시도해 보실 수 있습니다 (만료된 그룹이 해당 카테고리를 감시하도록 한 다음, 그 감시를 제거하는 방식).

한번 시도해 볼게요. 워치를 추가하면 재귀가 발생한다는 건 알고 있어요. 존재하지 않는 워치를 삭제하는 방법을 찾을 수 없었거든요. 말씀하신 대로 추가와 삭제의 문제일 수도 있겠네요.

이것이 바로 마법입니다. 플래그가 없는 그룹에 항목을 추가하는 것은 해당 플래그의 삭제를 주장(assert)하지 않습니다 - 그렇게 하면 유지보수가 악몽이 될 테니까요… 하지만 플래그를 소급 적용한 뒤 그룹에서 플래그를 제거하는 방식은 제가 대략 1년에 한 번만 이 작업을 하면 되는 한, 괜찮은 우회책이 됩니다.

#feature-request - 그룹 추가 시 ‘nullify’(무효화) 카테고리나 태그를 주장(assert)할 수 있는 기능이 있으면 좋겠습니다.