그룹 + 신뢰도 조합으로 제목 자동화하는 모범 사례

안녕하세요!

제 필요에 맞게 플러그인을 수정했고, 제가 무엇을 했는지, 현재 워크플로우, 그리고 조언을 구하는 몇 가지 질문/요청을 공유하고 싶습니다.


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|
        # Skip admins and moderators, do not update their titles
        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에 대한 최적화에 대한 조언이 있을까요?
  • 제 방법에서 주의해야 할 안전하지 않거나 문제적인 부분이 있나요?

훌륭한 작업과 유용한 플러그인을 제공해 주셔서 정말 감사합니다.
제안이 있거나, 향후 그룹+신뢰 등급 기반 칭호 구성을 개선할 계획이 있다면 여러분의 생각을 듣고 싶습니다.