Feedback on the new Review Queue (2019)

검토 시스템에 대한 제안입니다: 음성이 해제된 사용자의 게시물을 승인할 때, 해당 이벤트에 대한 사용자 노트를 추가할 수 있을까요? '@username 이 계정의 음성을 해제했습니다'와 같은 형식이 매우 유용할 것입니다. 현재는 노트에서 이야기의 절반만 확인할 수 있습니다.

3개의 좋아요

그냥 아예 삭제하는 게 더 낫다고 생각해. 나도 그렇게 해. 어차피 대개 오류인 경우가 많고, 신호를 더해주지 않는 소음성 메모는 별로 좋아하지 않으니까.

2개의 좋아요

리뷰 대기열에서 ‘Queued Post’ 유형의 경우, 게시글이 상당히 많은 사용자를 삭제하려고 하면 502 타임아웃 오류가 발생합니다.

상한선이 얼마인지 정확히 알 수는 없지만, 오늘 테스트해 본 결과 작동하지 않은 최소 게시글 수는 288개였습니다.

예를 들어, 감시 단어(Watched Words) → 승인 필요(Require Approval) 목록에 포함된 단어가 포함되어 게시글이 플래그(유형: Queued Post)가 지정된 시나리오를 생각해 볼 수 있습니다.

현재 제공되는 옵션은 다음과 같습니다:
게시글 승인 | 게시글 거부 | 사용자 삭제 | 편집

이러한 대기 게시글 유형에 침묵(silence) 및 정지(suspend) 옵션을 추가하면 매우 유용할 것 같습니다. 예를 들어, 게시글 거부 + 침묵 또는 정지 같은 방식입니다. 이를 통해 관리자는 리뷰 대기열에서 사용자를 침묵/정지시키거나, 이력에서 완전히 삭제하는 것 사이에서 선택할 수 있게 됩니다.

또한, 게시글 수가 x개를 초과하는 사용자를 리뷰 대기열에서 삭제하는 것이 502 오류로 인해 불가능하다면, 침묵 및 정지를 대안 옵션으로 제공하는 것이 정말 좋겠습니다.

3개의 좋아요

추가 정보:

리뷰 대기열에서 '주제별 그룹화’를 열면 다음 오류가 발생합니다:

서버 오류
/review/topics 로드 중
오류 코드: 500 Internal Server Error

참고로 리뷰 대기열에는 약 30,000개의 항목이 있으며, 그중 많은 오래된 항목들은 Akismet을 제거하기 전에 Akismet에 의해 추가된 것입니다.

–

스크롤/페이지네이션 문제 (여기에 게시하는 것이 더 적절했을 것 같습니다): Review Queue Pagination/Infinite Scrolling after Taking an Action

–

(type: Queued Post) 항목과 사용자 삭제 옵션 사용 시 발생하는 502 타임아웃에 대해 말씀드리자면, 166개의 게시글이 있는 계정으로 오류를 재현할 수 있음을 확인했습니다.

–

제안:

  1. 리뷰 대기열 어딘가에서 해당 사용자의 관리자 페이지로 바로 이동할 수 있는 링크가 있다면 유용한 시간 절약 기능이 될 것입니다.

  2. 현재 'x개의 항목이 검토를 기다리고 있습니다’라는 일일 리마인더 이메일 수신 거부(opt-out)가 불가능한 것으로 보입니다. 수신 거부를 선택할 수 있으면 유용할 것입니다.

2개의 좋아요

/logs를 확인해 주시고, 어떤 오류인지 알려주시겠어요?

3개의 좋아요

음, 이게 문제인 것 같습니다:

ActiveRecord::SubclassNotFound (단일 테이블 상속 메커니즘이 하위 클래스를 찾을 수 없습니다: ‘ReviewableAkismetPost’. 이 오류는 ‘type’ 열이 상속 시 클래스를 저장하는 용도로 예약되어 있기 때문에 발생했습니다. 상속 클래스를 저장하는 용도로 사용할 의도가 없다면 해당 열을 다른 이름으로 변경하거나, Reviewable.inheritance_column을 재정의하여 해당 정보를 저장할 다른 열을 지정하십시오.)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/inheritance.rb:234:in `rescue in find_sti_class’

2개의 좋아요

Akismet 플러그인이 최신 버전인지 확인해 주시겠어요? 아니라면 업데이트해 주세요.

4개의 좋아요

다른 검토 유형에 의해 추가된 오래된 항목은 검토 가능한 정의가 사라진 경우(예: 플러그인 삭제) 읽을 수 없을 수 있습니다. 에러가 삭제 이후에 발생하기 시작한 것으로 보입니다:

4개의 좋아요

Akismet이 현재 설치되어 있지 않다고 확인합니다. 꽤 전에 제거했거든요.

1개의 좋아요

오, 흥미롭네요. @featheredtoast 님이 의심하듯 말이죠. @Roman 님, 레코드는 남아 있는데 플러그인이 제거된 경우 어떻게 처리하는 게 좋다고 생각하시나요?

4개의 좋아요

다음과 같은 방식으로 필터링해야 하는 리뷰 가능한 타입을 결정할 수 있다고 생각합니다:

class Reviewable < ActiveRecord::Base
  def self.exclude_types
     db_types = Reviewable.distinct.pluck(:type)

     @exclude_types ||= db_types - Reviewable.types
  end
  
...
end

그 다음 이 타입들을 사용해 기본 스코프를 적용할 수 있습니다. 테이블에 type 인덱스를 추가해야 할 가능성이 높습니다.

5개의 좋아요

@Roman 시간이 될 때 이거 처리해줄 수 있어?

5개의 좋아요

리뷰 대기열에서 보이지 않는 이미지가 많이 발견되고 있습니다. 일부는 정상적으로 작동하며, 대략 50:50 비율입니다. 일부는 검사 시 다음과 같은 내용이 표시되고 아무것도 렌더링되지 않습니다:

src="/images/transparent.png" alt="" data-orig-src="upload://fwf1zrfwefWEqGer2W3xz1ed.jpeg"

CDN + S3를 사용하는 인스턴스와 로컬 스토리지만 사용하는 인스턴스 모두에서 발생하는 문제입니다.

1개의 좋아요

네, 문제는 대기 중인 게시물에만 영향을 미칩니다.

수정 사항이 포함된 PR이 검토를 기다리고 있으며, 곧 이미지가 다시 표시될 것으로 예상됩니다.

병합이 완료된 후 알려드리겠습니다.

4개의 좋아요

수정된 버전이 tests-passed 및 stable 채널에 배포되었습니다.

다만, 거부된 대기열의 게시 이미지들이 검토 대기열에 여전히 표시되지 않는 문제가 남아 있습니다. 시스템은 이러한 이미지를 더 이상 유지할 필요가 없으므로 자동으로 삭제합니다. 향후 이를 설명하는 텍스트로 대체할 예정입니다.

8개의 좋아요

@Roman! 그 문제를 수정해 주셔서 정말 감사합니다.

tests-passed에서 버그일 수 있는 다른 문제도 있습니다. 시나리오: 검토 대기열에서 게시물을 승인한 후, 다시 돌아가서 거절하는 경우. 이 게시물은 사이트에 목록으로 남아 있고 계속 표시됩니다.

수정: 이 댓글의 아래 두 단락은 검토 대기열 관련 옵션과 사이트 전체 속도 제한에 관한 또 다른 가능한 문제를 설명합니다: Discourse No Bump - #27

1개의 좋아요

‘자동 대기열 처리 기간(auto handle queued age)’과 관련하여 또 다른 문제를 발견했습니다. 몇몇 검토 대기열에는 ‘자동 대기열 처리 기간’ 설정(기본값 사용)보다 훨씬 오래된 항목들이 많이 있는데, 이 항목들이 자동으로 처리되지 않는 것 같습니다. 어떤 항목도 자동으로 처리되지 않는 것으로 보입니다. 제가 무언가를 놓치고 있는 건지 모르겠습니다.

또한, 검토 대기열을 ‘생성일(내림차순, Created At (reverse))’으로 정렬하면 500 오류가 발생합니다. 다른 ‘정렬 기준(order by)’ 필터들은 모두 정상적으로 작동합니다.

1개의 좋아요

정렬 순서를 변경했을 때 어떤 오류가 발생하는지 로그를 확인해 주시고 알려 주시겠어요?

3개의 좋아요

감사합니다 @eviltrout, 네 물론이죠. 제가 확인하는 에러는 다음과 같습니다:

ActiveRecord::SubclassNotFound (단일 테이블 상속 메커니즘이 하위 클래스를 찾을 수 없습니다: ‘ReviewableAkismetPost’. 이 에러는 ‘type’ 열이 상속 시 클래스를 저장하는 용도로 예약되어 있기 때문에 발생합니다. 상속 클래스를 저장하는 용도로 사용하지 않으려면 해당 열을 다른 이름으로 변경하거나, Reviewable.inheritance_column을 오버라이드하여 해당 정보를 저장할 다른 열을 지정하세요.)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/inheritance.rb:234:in `rescue in find_sti_class’

참고로, 해당 포럼에서는 Akismet 플러그인이 이미 꽤 오래 전에 제거되었습니다.

2개의 좋아요

아, 아직도 그 문제와 관련이 있는 거군요. @Roman 데이터베이스에 그 오래된 리뷰 가능 유형(reviewable types)이 남아 있는 것과 관련된 버그가 여전히 있는 것 같습니다?

4개의 좋아요