요약의 개수가 잘못된 값으로 표시되는 문제 해결

여러분, 안녕하세요.

Discourse 인스턴스를 업데이트한 후, 프로필 요약을 볼 때 해결된 항목의 수치가 올바르지 않은 것 같습니다. 예시:

최근 몇 가지 변경 사항이 있었고, 그 중에는 깨진 버그도 포함되어 있음을 이미 인지했습니다:

올바른 수치는 여전히 사용 가능하므로, 데이터를 새 테이블로 마이그레이션하는 과정에서 뭔가 문제가 있었던 것 같습니다.

1개의 좋아요

문의해 주셔서 감사합니다. 확인해 보겠습니다.

1개의 좋아요

Discourse에서 솔루션(해결책)을 카운트하는 방식에 일부 불일치가 있습니다. 이전에는 이미 삭제된 토픽과 게시글도 포함하여 카운트하고 있었습니다.

마이그레이션 이전에는 다음과 같이 표시했습니다:

John은 27개의 솔루션을 가지고 있습니다. 사람들이 그의 게시글을 27번 솔루션으로 표시했기 때문입니다.

이 데이터는 UserActions 테이블에 저장됩니다.

마이그레이션 이후에는 다음과 같이 카운트합니다:

John은 20개의 솔루션을 가지고 있습니다. 그의 게시글이 솔루션으로 지정된 토픽이 20개이기 때문입니다.

이 데이터는 SolvedTopics 테이블에 저장되며, 존재하는 삭제되지 않은 토픽과 직접적인 연결을 가집니다.

여기에는 미묘한 차이가 있습니다. 첫 번째 시나리오에서는 솔루션 게시글이나 해당 토픽이 여전히 존재하는지에 대한 검증이 이루어지지 않았습니다.

어떤 숫자를 표시하는 것이 더 나은지 팀과 상의해 보겠습니다. 개인적으로는 여전히 존재하는 토픽에 대해서만 솔루션을 카운트하는 방식을 선호합니다.

3개의 좋아요

이것이 문제의 원인일 수는 없다고 확신합니다. 일부 경우에는 숫자가 많아지는 것이 아니라 오히려 적어지기 때문이죠, 맞습니까? 다른 예시를 하나 더 드리겠습니다.
→ 틀린 경우: Profile - SGS - Garuda Linux Forum
→ 맞는 경우:
The image displays a user profile section showing that the user joined on April 15, 2020, has read 600 hours of content, and posted 4 hours ago, with a current streak of 5 consecutive days. (Captioned by AI)

이 카운팅 메커니즘이 해결된 게시물 수를 두 배 이상으로 늘릴 수 있다는 것은 제게는 불가능해 보입니다. 또한 (물론 확인되지 않았지만) 이전 예시에서 삭제된 게시물의 수가 그렇게 많았을 것이라고는 강력히 의심합니다.

감사합니다!

음, 맞아요. 485와 90은 차이가 너무 큽니다.

방금 버그를 찾은 것 같습니다(다만 위에서 언급한 불일치에 대한 설명은 여전히 사실입니다) –

이전 구현에서는 존(John)의 요약에서 해결(solution) 수가 존의 게시물을 누군가가 해결로 표시한 횟수로 계산되었습니다.

  def solved_count
    UserAction.where(user: @user).where(action_type: UserAction::SOLVED).count
  end

새로운 구현에서는 존의 사용자 요약에서 해결 수가 존이 게시물을 해결로 표시한 횟수로 계산됩니다.

  def solved_count
    DiscourseSolved::SolvedTopic.where(accepter: @user).count
  end

이것이 큰 차이를 설명합니다. "해결 수"의 정의가 '답변한 횟수’에서 '수락한 횟수’로 변경되었습니다.

버그를 수정하겠습니다. 보고해 주셔서 다시 한번 감사합니다!

프로파일 팝업과 사용자 요약에서 사용되는 다른 계산 방법들도 업데이트하겠습니다.

4개의 좋아요

@ondrej 님께 감사드립니다. Solution badge not working? 링크도 함께 알려주셨네요. 이 마이그레이션 이전부터 일부 불일치가 발생하고 있었던 것 같습니다. 다행히도 Discourse와 우리 플러그인 간에 더 일관된 번호 체계로 마이그레이션할 예정입니다.

4개의 좋아요

정말 감사합니다! :slight_smile:

4개의 좋아요

이제 수정 및 표준화되었습니다 - https://github.com/discourse/discourse-solved/pull/352

4개의 좋아요

이 주제는 2일 후 자동으로 닫혔습니다. 더 이상 새 답글을 작성할 수 없습니다.