Yearly Reviewプラグインが新しいトピックを 계속 생성합니다

こんにちは!

フォーラムで年次レビューが作成されました。トピックの名前が変更され、年次レビュープラグインは、新しい年次レビューを作成する必要があるかどうかを判断するために同じタイトル名をチェックするため、24時間後に別のレビューが作成されました。

新しいレビューを削除し、最初のレビューをデフォルトのタイトルに変更しました。

しかし、プラグインは24時間後に新しいトピックを作成し続けています。

データエクスプローラーの結果は次のとおりです。

SELECT created_at, title, fancy_title
FROM topics
WHERE title like '%2022%année en cours de révision%'
AND deleted_at IS NULL
ORDER BY created_at DESC
created_at title fancy_title
2023-01-04T14:52:19.345Z 2022 : l'année en cours de révision 2022 : l’année en cours de révision
2023-01-01T10:09:20.503Z 2022 : l'année en cours de révision 2022 : l’année en cours de révision

:information_source: 実際には3回新しいレビューが作成されました。これは、タイトル内の引用符と引用符の間の違い[1]によるものかもしれませんが、そのため3日間の日付差があり、結果は2つしかありません。しかし、最初に作成されたものだけを残したいと思います。

デフォルトのタイトルの既存のトピックがあるにもかかわらず、プラグインがトピックを作成し続ける理由と、それを停止する方法についてのアイデアはありますか? 2023年末にプラグインを無効にしてから再度有効にしたらどうなりますか? 再有効化してから24時間後にトピックが作成されますか?
さらに、それは最もエレガントな解決策ではないので、問題がどこから来るのか正確に知りたいです :thinking:

問題が特定され、新しい年次レビューの作成が防止されるまで、今後数日から数週間、プラグインを無効にします。


  1. ここでの逸話を参照してください: A few questions about the yearly review plugin ↩︎

「いいね!」 1

作成者を別のユーザーに変更しましたか?
コードは、システムユーザーによって作成されたそのタイトルのトピックを検索します。

「いいね!」 1

こんにちは!
共同管理者です。名前を変更しただけで、著者は変更していません。
システムユーザーを著者とする同じ名前のトピックが2つあった場合、最後のものが採用されますか?

「いいね!」 1

それは1つを「取得」するのではなく、そのようなトピックが存在するかどうかを確認し、存在しない場合は作成します。
1つまたは2つ(または999)あっても、新しいものは作成されません。

「いいね!」 2

どこかで問題が発生しているようです。すでにトピックが存在するのに、新しいトピックが作成され続けています :thinking:

「いいね!」 1

@Maxence_Cが言ったように、タイトルのみが変更されたため、著者は引き続き@systemです。

私の知る限り、この条件は満たされています。 :person_shrugging:

「いいね!」 3

yearly_review.topic_title を更新しましたか、それともトピックの名前を変更しただけですか?

「いいね!」 1

最初の年次レビューのトピックのタイトルを変更し、作成から24時間以上経過してからデフォルトに戻しました。
yearly_review.topic_title は変更していません。

「いいね!」 3

トピックのタイトルがトピックが最初に公開されたときに設定されたタイトルと完全に一致する場合、新しいレビュー トピックは次の行によって公開が防止されるはずです。

return if Topic.where(user: Discourse.system_user, title: title).exists?

ただし、問題の原因がタイトルが完全に一致しないことである場合、問題はトピックがフランス語で公開されていることに関連している可能性があります。ジョブが実行されるときにここで title に何が設定されているかを知ることができれば幸いです。

title = I18n.t("yearly_review.topic_title", year: review_year)

英語のタイトルとフランス語のタイトルを照合しようとしているのではないでしょうか。フランス語はサイトのデフォルトのロケールですか?

編集:トピックがフランス語のタイトルで公開されている場合、上記のコードの title はフランス語で設定されているはずです。したがって、それが問題の原因である可能性は低いです。

「いいね!」 4

それらは同一です。ただし、topic data explorer が返した 2 つのトピックのわずかな違いを見落としている場合は除きます。必要であれば、さらにデータを提供できます。

これは Rails コンソールで実行すべきですか、それとも他の場所で実行すべきですか?

はい、そうです。


もう一度確認するためにプラグインを再度有効にし、次に作成される年次レビュー(もしあれば)に関する追加情報を収集できるかどうかを確認します。

「いいね!」 2

手動でジョブをトリガーしたところ、トピックが作成されました。再度トリガーしても、年次レビューは新規作成されません。

最初のトピックから返信を新しいトピックに移動し、最初のトピックを削除すれば、この問題を回避できるはずです。

しかし、ここで何が起こっているのか、データベースで確認できる内容にもかかわらず、要件が満たされていないように見える理由について、非常に興味があります。

「いいね!」 1

私もです。何が起こっているのかよくわかりませんが、既存のトピックを確認するこの処理が少し不安定なようです。

return if Topic.where(user: Discourse.system_user, title: title).exists?

Discourseチームの誰かが、これを改善する方法についてアイデアを持っているかどうか疑問に思っています。

複数のトピックが作成されるのを防ぐためにプラグインを無効にしなければならないのは、良いアプローチではありません。このプラグインは、トピックのスタイルに使用されるCSSを読み込みます。プラグインが無効になっている場合、CSSが読み込まれないと思います。

「いいね!」 2

追記:プラグインが新しいフランス語翻訳で更新されたため、本日、さらに新しい年次レビューが作成されました :sweat_smile:
この新しいトピックのタイトルをコピーし、削除し、元のトピックのタイトルを貼り付けて名前を変更しました。
明日、生のタイトルのコピー&ペーストにもかかわらず、新しいトピックが作成されるかどうか見てみましょう。

「いいね!」 3

この件についてフォローアップしていただきありがとうございます。複数のレビュー トピックの作成を防ぐためにトピックのタイトルに依存するのは、非常に不安定なアプローチです(私のせいです)。1 月が終わると、この問題は来年まで発生しなくなります。@JammyDodger、Discourse チームに、複数のトピックが作成されるのを防ぐためのより良い方法を検討するように伝えていただけますか。それは 2024 年 1 月までに行われるべきです。時間はあっという間に過ぎますね :slight_smile:

「いいね!」 9

そうできると思います。 :slight_smile: :+1:

「いいね!」 5

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

ちょっとしたアップデートですが、これで解決するはずです :partying_face:

「いいね!」 1