Bewährte Methode zur Automatisierung von Titeln nach Gruppe + Vertrauensstufe-Kombinationen

Hallo!

Ich habe das Plugin an meine Bedürfnisse angepasst und möchte gerne mitteilen, was ich getan habe, meinen aktuellen Workflow und ein paar Fragen/Bitten um Rat.


1. Meine Modifikationen

Dateipfad und Inhalt:

Datei: 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|
        # Überspringe Admins und Moderatoren, aktualisiere deren Titel nicht
        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

Datei: 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. Wie ich getestet habe

Ich führe diese Logik derzeit manuell über die Rails-Konsole aus, um zu überprüfen, ob die Funktion funktioniert. Sie aktualisiert Benutzertitel in großen Mengen gemäß meinen Anforderungen.


3. Problem mit dem Plugin-Einstellungs-Eintrag

Auf der Seite /admin/plugins gibt es keinen „Einstellungen“-Button für dieses Plugin. Um die Konfiguration zu ändern, muss ich derzeit direkt /admin/plugins/add-title-based-on-trust-level/settings besuchen. Gibt es eine Möglichkeit, den Einstellungsbutton oder Link auf der Plugin-Seite anzuzeigen, um den Zugriff zu erleichtern?


4. Meine aktuellen Einstellungen

Dies ist meine aktuelle JSON-Konfiguration (ich werde auch einen Screenshot anhängen):

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


5. Fragen / Mögliche Verbesserungen

  • Birgt dieser Ansatz (Durchlaufen jedes Benutzers und Aktualisieren seines Titels) Leistungsprobleme, wenn es viele Benutzer gibt? Gibt es eine bessere Vorgehensweise dafür?
  • Gibt es Ratschläge zur Optimierung, entweder für den geplanten Job oder für die Admin-Einstellungs-UI?
  • Gibt es etwas Unsicheres oder Problematisches an meiner Methode, worauf ich achten sollte?

Vielen Dank für Ihre großartige Arbeit und dieses nützliche Plugin!
Wenn Sie Vorschläge haben oder planen, die Konfiguration von Gruppen- und Vertrauensstufen-Titeln in Zukunft zu verbessern, würde ich mich freuen, Ihre Gedanken zu hören.

2 „Gefällt mir“