グループと信頼レベルの組み合わせによるタイトル自動化のベストプラクティス

こんにちは!

私のニーズに合わせてプラグインを修正しましたので、行ったこと、現在のワークフロー、およびいくつか質問/アドバイスを共有したいと思います。


1. 私の修正内容

ファイルパスと内容:

ファイル: app/jobs/scheduled/update-all-titles.rb

# frozen_string_literal: true

module AddTitleBasedOnTrustLevel
  class UpdateTitles < ::Jobs::Scheduled
    every SiteSetting.update_title_frequency.hours

    def execute(args)
      group_titles = JSON.parse(SiteSetting.group_trust_level_titles || "{}")

      User.find_each do |user|
        # 管理者とモデレーターはスキップし、タイトルを更新しない
        next if user.admin? || user.moderator?

        group_id = user.primary_group_id
        next unless group_id

        group = Group.find_by(id: group_id)
        next unless group

        group_key = group.name.downcase
        tl = user.trust_level

        titles = group_titles[group_key]
        next unless titles.is_a?(Array)
        next unless tl >= 1 && tl <= 4

        new_title = titles[tl]
        next unless new_title.present?

        user.update_column(:title, new_title) if user.title != new_title
      end
    end
  end
end

ファイル: config/settings.yml

plugins:
  add_title_based_on_trust_level_enabled:
    default: false
    client: true
  group_trust_level_titles:
    default: '{"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"], "developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]}'
    type: string
    client: true
    multiline: true
  update_title_frequency:
    default: 24
    type: integer

2. テスト方法

現在、rails console を介してこのロジックを手動で実行し、機能が動作するかどうかを確認しています。要件に従って、ユーザーのタイトルが一括で更新されます。


3. プラグイン設定エントリの問題

/admin/plugins ページにこのプラグインの「設定」ボタンが表示されません。現在、設定を変更するには、直接 /admin/plugins/add-title-based-on-trust-level/settings にアクセスする必要があります。
設定ボタンまたはリンクをプラグインページに表示して、アクセスしやすくする方法はありますか?


4. 現在の設定

これが私の現在のJSON設定です(スクリーンショットも添付します):

{
  "designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"],
  "developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]
}


5. 質問 / 可能な改善点

  • このアプローチ(すべてのユーザーをループしてタイトルを更新する)は、ユーザーが多い場合にパフォーマンスの問題を引き起こすリスクはありますか?これに対するより良いベストプラクティスはありますか?
  • スケジュールジョブまたは管理設定UIの最適化に関するアドバイスはありますか?
  • 私の方法に、注意すべき安全でない点や問題点はありますか?

素晴らしい仕事とこの便利なプラグインに心から感謝いたします!
提案があれば、または将来的にグループ+信頼レベルのタイトル設定を改善する予定があれば、ぜひご意見をお聞かせください。

「いいね!」 2