Meilleure pratique pour automatiser les titres par combinaisons de groupes et de niveaux de confiance

Salut !

J’ai modifié le plugin pour qu’il corresponde à mes besoins, et j’aimerais partager ce que j’ai fait, mon flux de travail actuel, et quelques questions/demandes de conseils.


1. Mes Modifications

Chemin et contenu du fichier :

Fichier : 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|
        # Ignorer les administrateurs et les modérateurs, ne pas mettre à jour leurs titres
        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

Fichier : 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. Comment j’ai testé

J’exécute actuellement cette logique manuellement via la console Rails pour vérifier si la fonction fonctionne. Elle met bien à jour les titres des utilisateurs en masse selon mes exigences.


3. Problème d’entrée des paramètres du plugin

Il n’y a pas de bouton « Paramètres » pour ce plugin sur la page /admin/plugins. Actuellement, pour modifier la configuration, je dois visiter directement /admin/plugins/add-title-based-on-trust-level/settings.
Existe-t-il un moyen de faire apparaître le bouton ou le lien des paramètres sur la page des Plugins pour un accès plus facile ?


4. Mes paramètres actuels

Voici ma configuration JSON actuelle (je joindrai une capture d’écran également) :

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


5. Questions / Améliorations possibles

  • Cette approche (parcourir tous les utilisateurs et mettre à jour leur titre) risque-t-elle de poser des problèmes de performance s’il y a beaucoup d’utilisateurs ? Existe-t-il une meilleure pratique pour cela ?
  • Des conseils d’optimisation, que ce soit pour le travail planifié ou pour l’interface utilisateur des paramètres d’administration ?
  • Y a-t-il quelque chose d’insécurisé ou de problématique dans ma méthode dont je devrais me méfier ?

Merci beaucoup pour votre excellent travail et ce plugin utile !
Si vous avez des suggestions, ou si vous prévoyez d’améliorer la configuration des titres par groupe + niveau de confiance à l’avenir, j’aimerais beaucoup connaître vos réflexions.

2 « J'aime »