PostAlerter에는 일반 게시글이 저장된 후 발송되는 알림을 위한 일련의 체크 및 트리거 시스템이 포함되어 있으며, after_save_post 메서드에서 시작됩니다.
저는 Follow 플러그인을 작업하면서 해당 메서드와 씨름해 왔고(구체적으로 discourse-follow/plugin.rb at main · discourse/discourse-follow · GitHub 참조), 다른 사람들의 의견이 궁금한 몇 가지 생각과 질문이 있습니다.
PostAlerter의 특성상 이 논의는 Follow 플러그인을 넘어선다고 생각합니다. 아래에서 제안하는 내용들은 assign 플러그인이나 polls 플러그인 등 다른 여러 플러그인에도 관련이 있을 수 있다고 봅니다.
현재 제 생각은 다음과 같습니다(아래 항목에 대해 PR을 작성하는 것도 기꺼이 하겠습니다):
-
after_save_post메서드에 훅 또는 이벤트 트리거를 추가하여, 해당 메서드의 체크 및 카운터 컨텍스트 내에서 알림을 보낼 사용자를 추가(또는 추가하지 않음)할 수 있도록 하는 것이 좋겠습니다. 알림을 보낼 때 세 가지 핵심 고려 사항은 다음과 같습니다:- 특정 게시글에 대해 사용자에게 알림을 보내야 하는가
- 특정 게시글에 대해 이미 사용자에게 알림을 보낸 적이 있는가
- 사용자에게 게시글에 대한 알림을 어떻게 보내야 하는가 (즉, 사용자의 설정을 존중하는 방식)
각 항목은
after_save_post메서드의 컨텍스트 내에서 평가하는 것이 더 쉬울 것입니다. -
알림 유형의 조정된 사용. 현재 PostAlerter에는 특정 체크 및 카운터에서 반복되거나 필터링되는 몇 가지 알림 유형 상수가 있습니다. 예를 들어
NOTIFIABLE_TYPES와COLLAPSED_NOTIFIABLE_TYPES가 있습니다.현재 일반적인
:custom알림 유형이 있지만,custom을 유형 상수에 추가하면custom알림 유형의 모든 사용에 영향을 미치므로after_save_post컨텍스트에서는 특히 유용하지 않습니다.참고로 assign 플러그인은 현재
:custom알림 유형을 사용하고 있지만, 이는 작은 작업(일반 게시글이 아닌)에 대한 알림에만 사용되며, 쿼리에는 사용하지 않습니다(어떤 플러그인이나 서비스든 사용할 수 있으므로 메시지 필드를 사용하여 assign 알림을 조회합니다).