新しいレビューキュー(2019)に関するフィードバック

レビューシステムへの提案:ユーザーのミュートを解除する投稿を承認する際、そのイベントに対するユーザーノートを追加していただけないでしょうか。「@ユーザー名がこのアカウントのミュートを解除しました」といった内容であれば非常に役立ちます。現在、ノートには物語の半分しか表示されていません。

「いいね!」 3

それらはすべて削除してしまうのがいいですよ。私はそうしています。たいてい誤りですし、ノイズになるような注釈は好きではありません。

「いいね!」 2

レビューキューから「保留中の投稿」タイプで、投稿数が非常に多いユーザーの削除を試みると、502 タイムアウトが発生します。

上限がどこまでかは不明ですが、本日行ったテストでは、動作しなかった最低ラインは投稿数288件のアカウントでした。

例えば、監視ワードリスト(「監視ワード → 承認が必要」)に含まれる単語を含む投稿がフラグ付けされ、「保留中の投稿」としてキューに追加された場合のシナリオです。

現在利用可能なオプションは以下の通りです:
投稿を承認 | 投稿を却下 | ユーザーを削除 | 編集

これらの保留中の投稿タイプに「沈黙」および「停止」オプションを追加できれば非常に役立つと考えます。例えば、「投稿を却下+ユーザーを沈黙」または「ユーザーを停止」といった組み合わせです。これにより、管理者はレビューキューから直接、ユーザーを沈黙・停止させるか、履歴から完全に削除するかを選択できるようになります。

また、レビューキューから投稿数x件以上のユーザーを削除することが502エラーにより現実的でない場合、沈黙や停止を代替オプションとして用意することは非常に喜ばしいことです。

「いいね!」 3

さらにいくつかの情報:

レビューキューから「トピック別」を開くと、以下のエラーが表示されます:

サーバーエラー
/review/topics の読み込み中に発生
エラーコード: 500 Internal Server Error

なお、レビューキューには約 3 万件の項目があり、その多くは私が Akismet をアンインストールする前に同プラグインによって追加された古い項目です。

スクロール/ページネーションの問題(おそらくこちらではなく別の場所で投稿すべきだったかもしれません): Review Queue Pagination/Infinite Scrolling after Taking an Action

(type: Queued Post) 項目および「ユーザー削除」オプションを使用する際に 502 タイムアウトエラーが発生する件について。投稿数 166 のアカウントでも同様のエラーが発生することを確認しました。

アイデア:

  1. レビューキューのどこかに、ユーザーの管理画面へ直接リンクする機能があれば、時間の節約になるでしょう。

  2. 現在、「レビューが必要な項目が x 件あります」という毎日届くリマインダーメールをオプトアウト(受信拒否)することはできないようです。オプトアウトできるようにすると便利です。

「いいね!」 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

レビューキューで多くの透明な画像が表示されています。一部は正常に機能しますが、約半数が問題を起こしています。一部の画像は、検査時に以下のような表示になり、何も表示されません。

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

これは、CDN + S3 を使用している場合も、ローカルストレージのみを使用している場合も発生しています。

「いいね!」 1

はい、この問題はキューに入れられた投稿にのみ影響します。

修正を含む PR がレビュー待ちのため、まもなく画像が表示されるようになります。

マージ後にご連絡いたします。

「いいね!」 4

修正は tests-passed および stable ブランチで利用可能です。

ただし、却下されたキューイング済み投稿の画像がレビューキューに表示されないという別の問題が依然として存在します。システムはそれらを保持する必要がないため、自動的に削除します。これについては、その理由を説明するテキストに置き換える予定です。

「いいね!」 8

@Roman さん、修正いただきありがとうございます!

他にも、テストが通過した後のバグの可能性があるものがあります。レビューキューで投稿を受け入れ、その後戻って却下した場合、その投稿はサイト上で引き続き一覧表示され、閲覧可能のままになります。

編集:このコメントの下2段落には、レビューキュー関連のオプションとサイト全体のレート制限に関する別の可能性のある問題についても説明されています:Discourse No Bump - #27

「いいね!」 1

「自動キュー処理年齢」について気づいた点があります。デフォルト設定の「自動キュー処理年齢」の日数よりもはるかに古いアイテムがいくつかのレビューキューに多数存在するのですが、それらが自動的に処理されていないようです。どのアイテムも自動処理されていないように見えます。何か見落としているのかもしれません。

また、レビューキューを「作成日時(降順)」でソートすると 500 エラーが発生します。他のすべての「並び替え」フィルターは正常に動作します。

「いいね!」 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、データベースに残っている古いレビュー対象タイプに関連して、まだバグがあるようです。

「いいね!」 4