배지 및 비공개 커뮤니티

201초기 토론7에서 제한이 있는 그룹에는 배지가 작동하지 않는다는 것을 알고 있습니다.

이 제한을 우회할 방법이 있는지 확인해 보고 있습니다. 배경 설명을 조금 드리자면 다음과 같습니다.

우리의 그룹은 99.9%가 “Members” 역할을 가진 사용자만 접근할 수 있습니다. 공개 토론이나 지원/도움을 위해 모든 사용자에게 개방된 몇몇 그룹도 있습니다. 유료 멤버 그룹으로서, 이 사적 그룹 내부의 활동을 인정할 수 있다면 정말 좋겠습니다. 130만 개 이상의 게시글 중 대부분이 이러한 그룹 내부에 있기 때문입니다.

이를 허용할 수 있는 우회 방법이나 설정이 있을까요?

4개의 좋아요

그 이유는 게시물에 참조하는 모든 배지가 badge_posts 테이블에 대해 쿼리를 실행하기 때문입니다. 해당 테이블에는 모든 사용자가 접근할 수 있는 카테고리에 있는 게시물만 포함됩니다.

네, 그것이 문제가 될 수 있다는 것을 이해합니다. 가능한 우회 방법은 사이트의 배지 쿼리를 badge_posts 테이블 대신 posts 테이블을 사용하도록 재작성하는 것입니다. 이는 사이트의 보호된 카테고리에 접근 권한이 없는 사용자가 사용자의 배지와 관련된 게시물을 보려고 할 때 문제를 일으킬 수 있지만, 귀하의 사이트에서는 많은 사용자에게 영향을 미치지 않을 것으로 보입니다. 아마도 이를 처리할 다른 방법들이 있을 수 있습니다.

7개의 좋아요

솔직히 우리 목적에 맞게는 전혀 문제가 없을 것 같습니다.

이 작업이 쉬운 건가요? 아니면 장기적으로 문제가 될 수 있나요?

1개의 좋아요

사이트의 배지 쿼리를 badge_posts 테이블 대신 posts 테이블을 사용하도록 변경하는 것은 비교적 간단합니다. 다만, 이 문제를 근본적으로 해결하려면 더 큰 변경이 필요할 수 있습니다. 예를 들어, 스태프 카테고리에 있는 게시물에는 배지가 부여되지 않아야 하며, 게시물의 제목이 유출될 우려가 있는 기타 카테고리에도 마찬가지입니다.

자신의 사이트와 유사한 구성을 가진 사이트를 위해 플러그인을 통해 새로운 Postgres 뷰를 추가할 수 있을지 고민하고 있습니다. 이렇게 추가된 뷰는 배지 쿼리에서 badge_posts 뷰를 대체하는 데 사용될 수 있습니다.

4개의 좋아요

음, 이 이론 마음에 드네요.

그 경로가 선택 사항이라면, 해당 뷰에 공개 그룹의 게시글을 모두 포함할 수 있을까요? 현재처럼 공개된 것들뿐 아니라, 특정 그룹에게만 표시되도록 설정된 그룹의 게시글도 포함하는 방식 말이에요. 저희 경우를 들면 “Members” 그룹이 해당됩니다.

회원 그룹에 대한 완벽한 해결책이 될 거예요!

2개의 좋아요

디스코urses 엔지니어들이 이러한 접근 방식에 대해 어떻게 생각하는지, 혹은 다른 제안이 있는지 한번 살펴봅시다. 이 문제가 처음 보고된 것은 아닙니다. 이 문제에 대한 일반적인 해결책을 마련하는 것이 좋겠지만, 많은 사이트에서 작동하는 좋은 해결책은 제가 제안하는 것보다 더 복잡할 수 있습니다.

4개의 좋아요

뷰를 교체하는 방식은 선호하지 않습니다.

@Mitchelsellers 님께 드리는 제 추천은 작게 시작하라는 것입니다. 특정 게시물을 언급하지 않고 배지를 수여하세요.

[made twenty super liked posts as a member] (제목은 TBD)로 시작하는 것이 좋은 출발점이 될 수 있습니다.

기본적으로 커스텀 쿼리를 사용하여 커스텀 방식으로 인정을 부여하는 방법을 생각해 보세요.

배지를 게시물에 연결하는 부분에 권한 검사를 추가하는 것은 까다로운 작업이므로, 이 경로를 권장하지 않습니다.

작고 쉬운 것부터 시작하세요.

5개의 좋아요

저희도 그렇게 하면 전혀 문제가 없을 것 같습니다.

이 작업을 수행하는 데 좋은 팁이 있을까요?

1개의 좋아요

여기서 0단계는 원하는 배지, 배지 이름, 그리고 개념적 정의를 영어로 개요를 작성하는 것일 것입니다.

3개의 좋아요

네, 이 문제를 해결하겠습니다!

1개의 좋아요

기존 배지 쿼리를 살펴보고 badge_posts 테이블의 게시물을 대상으로 하는 쿼리가 어떤 것인지, 또는 보호 카테고리에서 게시물을 제외하는 다른 방법이 있는지 파악하려고 했습니다.

다음 배지들은 특정 게시물을 쿼리하며, 비공개 카테고리에서의 활동으로는 부여되지 않습니다:

  • Editor
  • First Flag
  • First Like
  • First Link
  • First Quote
  • First Share
  • First Emoji
  • First Mention
  • First Onebox
  • First Reply By Email
  • Reader
  • Wiki Editor
  • Great Share
  • Good Share
  • Helpdesk
  • Nice Share
  • Welcome
  • Famous Link
  • Great Reply
  • Great Topic
  • Good Reply
  • Good Topic
  • Hot Link
  • Nice Reply
  • Nice Topic
  • Popular Link

다음 배지들은 특정 게시물을 쿼리하지 않으며, 비공개 카테고리에서의 활동으로 부여될 수 있습니다:

  • Licensed
  • Autobiographer
  • Certified
  • New User of the Month
  • Read Guidelines
  • Admired
  • Champion
  • Crazy in Love
  • Devotee
  • Empathetic
  • Aficionado
  • Anniversary
  • Campaigner
  • Gives Back
  • Higher Love
  • Respected
  • Appreciated
  • Enthusiast
  • Out of Love
  • Promoter
  • Thank You
  • Leader
  • Regular
  • Basic
  • Member
  • Staff
  • Profile Picture

이와 유사한 내용은 이미 Appreciated(20개 게시물에 1개 좋아요)와 Respected(100개 게시물에 2개 좋아요) 배지로 커버되고 있습니다. 이러한 쿼리의 몇 가지 변형이 추가될 수 있습니다. 예를 들어, 20개 게시물에 10개 좋아요를 주는 방식입니다. 슈퍼 좋아요를 받은 토픽에 대해 부여되는 배지도 좋은 아이디어일 수 있습니다 - 이는 Great Topics 배지와 동등한 역할을 하게 됩니다. 예를 들어, 사용자가 10개의 좋아요를 받은 10개의 토픽을 생성했을 때 부여될 수 있습니다.

게시물 링크가 없는 단일 게시물 또는 토픽에 대한 활동으로 부여되는 배지를 추가하는 것이 의미가 있을지 확신하지 못합니다. 예를 들어, 다음 SQL을 사용하여 대체 First Like 배지를 만들 수 있습니다:

SELECT pa1.user_id, pa1.created_at granted_at
FROM (
  SELECT pa.user_id, min(pa.id) id
  FROM post_actions pa
  JOIN posts p on p.id = pa.post_id
  WHERE post_action_type_id = 2
  GROUP BY pa.user_id
) x
JOIN post_actions pa1 on pa1.id = x.id

이 쿼리가 작동하려면 “When a user acts on a post” 쿼리 대신 “Update daily” 트리거를 사용해야 합니다. 배지 페이지에서는 배지를 받은 사용자들과 배지가 부여된 시간이 함께 표시됩니다. 배지가 부여된 게시물에 대한 링크는 제공되지 않습니다:

이러한 접근 방식은 주로 보호 카테고리가 있는 사이트에서 의미가 있을까요? 의미가 있다면, 현재 badge_posts 테이블을 대상으로 하는 몇 가지 쿼리를 복제하는 데 사용할 수 있을 것입니다.

4개의 좋아요

이건 정말 멋진 한 걸음이라고 생각해요!

이전에 말씀드린 건에 대해 다시 한번 여쭤보고 싶었어요.

이런 방식의 구현에 대해 혹시 의견이 있으신가요?

이 일정을 상기시켜 주셔서 감사합니다! 보호된 카테고리의 게시물을 노출하지 않으면서 유용할 것이라고 생각하는 배지 목록을 작성하기 시작하겠습니다.

2개의 좋아요

저희 포럼은 로그인 필수로 시작했으며, 최근 일부 공개 카테고리를 추가하고 기존 카테고리는 trust_level_0 사용자들의 접근을 제한하도록 설정했습니다.

따라서 기존 사용자들의 포럼 접근 방식에는 변화가 없었지만, 위 목록에 있는 모든 배지가 취소되었습니다. 저희 포럼은 크지 않은 편이지만, 사용자들로부터 받은 피드백을 보면 배지 시스템이 완전히 망가진 것처럼 느껴지는 것 같습니다. 이러한 설정을 유지하려면 사실상 배지 시스템을 비활성화해야 할 것 같습니다.

카테고리 접근을 제한할 경우 기존 배지가 취소된다는 점을 설정 화면 어딘가에 더 명확하게 안내해 주었으면 합니다. 저희에게는 전혀 예상치 못한 상황이었습니다.

더 일반적으로 말씀드리자면, 우선순위를 이해하기 어렵습니다. 카테고리 권한과 배지 시스템 모두 Discourse의 핵심 기능으로 소개되고 있습니다. 하지만 현재 상태로는 이 두 가지를 함께 사용하기가 거의 불가능합니다. 배지가 일반적으로 접근 가능한 게시물에만 표시되는 장점은 다른 사용자들이 어떤 게시물에 배지가 수여되었는지 볼 수 있다는 것일까요? 저에게는 이것이 상대적으로 그렇게 중요한 기능이 아닙니다. 왜 이러한 가시적인 링크를 제거하고, 각 사용자의 배지에 관련된 게시물은 해당 사용자 본인에게만 표시하도록 하지 않을까요?

3개의 좋아요

아프네요! 이것은 비공개 공간이 많은 커뮤니티에서 배지 인프라가 사실상 거의 쓸모없다는 것을 의미합니다…

동의합니다.

대부분 비공개인 커뮤니티에서 배지를 유용하게 만들 수 있는 플러그인이나(지난 6년 동안) 새로운 설정이 있나요?

2개의 좋아요

기본적으로 이 기능이 작동하는 방식을 개선하는 데 찬성합니다.

이 주제는 오랜 기간 동안 조용했지만, 다른 곳에서 비슷한 변경 사항을 요구하는 목소리를 들어왔습니다.

어떤 특정 변경이 필요한지 정리하고, 다른 우선순위 중에서 어디에 해당하는지 파악하는 문제입니다.

3개의 좋아요

:flexed_biceps:

이것은 공개(공개)된 공간과 비공개(다양한 수준의 « 비공개 ») 공간, 그리고 개인 메시지 사이에서 커뮤니티 구성원의 방향성을 돕는다는 다른 주제에서 언급된 내용과 관련이 있어 보입니다.

웹의 반공개적 성격과 부분적으로 겹치는 청중을 다루는 것은 온라인 소셜 월드에서 주요 과제입니다. 이는 직관적이지 않습니다. 대부분의 커뮤니티는 커뮤니티의 공개/비공개 부분이 어떻게 다른지 사람들이 이해하도록 하는 방법에 대해 고민하게 될 것입니다. Discourse가 대부분의 커뮤니티에서 공개와 비공개의 혼합이 기본이 될 것이라고 가정하고, 커뮤니티 구성원이 이를 탐색하도록 돕는 방법을 살펴보는 것이 의미가 있을 수 있습니다.

1개의 좋아요

이 대화에는 처음 참여하지만, 배지 설정(Badge Settings) 아래에 토글을 추가하는 것이 가장 쉬울 것 같습니다. 기본값은 꺼져 있고, 켜면 모든 게시판(비공개 포함)에서 참여 배지를 조회하도록 하면 됩니다.

플러그인이나 컴포넌트가 사용할 수 있는 훅(hook)으로 남겨두면, 나중에 카테고리별 권한을 부여하여 해당 카테고리에서 배지가 집계되도록 하는 기능을 추가할 수 있을 것입니다.

2개의 좋아요

현재 공개 카테고리에서만 부여되는 배지의 문제는, 해당 배지가 배지가 부여된 토픽의 게시물을 참조한다는 점입니다. 토픽이 비공개라면 이를 공개하고 싶지 않을 것입니다.

따라서 이 기본 배지들에서 게시물 링크가 포함된 부분을 모두 제거해야 합니다.

3개의 좋아요