Módulo de Procedimento Administrativo (PA)

TLDR: Criar um módulo de Procedimento Administrativo (PA) que permita aos administradores criar, acompanhar e gerenciar procedimentos administrativos relacionados aos membros, com trilha de auditoria e interface no ActiveAdmin.

Nota: originalmente escrita como RFC (rfcs/001_administrative_procedure_module.md). O módulo foi implementado — app/models/administrative_procedure.rb, app/admin/administrative_procedures.rb e app/services/admin_administrative_procedures_service.rb existem, e o modelo evoluiu além desta proposta (ganhou membership_id, short_description, status, complaint_side e as ações de suspender/reativar filiação). O estado atual está no diagrama de classes.

Contexto

O sistema gerenciava perfis de usuário e filiações, mas não tinha forma formal de documentar e acompanhar procedimentos administrativos relacionados aos membros. Este módulo dá uma abordagem estruturada para lidar com denúncias e procedimentos administrativos gerais.

Objetivos

  • Criar um modelo para armazenar procedimentos administrativos
  • Implementar interface no ActiveAdmin para gerenciar esses procedimentos
  • Rastrear toda alteração em procedimentos usando o gem Audited
  • Oferecer filtragem por informação do usuário e detalhe da filiação

Fora de escopo

Listado na proposta original como melhoria futura, não como escopo desta entrega:

  • Notificação por e-mail para procedimentos novos
  • Rastreamento de status do procedimento (aberto, em andamento, fechado)
  • Anexo de documentos ao procedimento
  • Integração com engine de workflow para procedimentos complexos

Mudanças

Schema

ruby create_table :administrative_procedures do |t| t.references :admin, null: false, foreign_key: { to_table: :users } t.references :user_profile, null: false, foreign_key: true t.string :procedure_type, null: false t.text :body, null: false t.timestamps end

Modelo AdministrativeProcedure

  • belongs_to um admin (User com papel de admin)
  • belongs_to um UserProfile
  • Enum procedure_type (:complaint, :general_procedure)
  • Inclui o gem Audited para rastrear alterações
  • Validações apropriadas

Integração com o ActiveAdmin

  • Filtros por e-mail do usuário, nome do usuário e número de registro da filiação
  • Index customizado exibindo a informação relevante
  • Show detalhado com o histórico de auditoria
  • Formulário de criação e edição

Internacionalização

Todas as labels, mensagens e valores de enum traduzidos para pt-BR nos arquivos de locale.

Trilha de auditoria

Com o gem Audited, rastrear toda alteração e exibir o histórico na interface do ActiveAdmin.

Plano de implementação

  1. Instalar o gem Audited
  2. Criar o modelo AdministrativeProcedure com as migrations
  3. Definir associações e validações
  4. Criar o recurso no ActiveAdmin
  5. Adicionar as traduções nos arquivos de locale
  6. Implementar a exibição do histórico de auditoria no ActiveAdmin

Considerações de segurança

  • Somente administradores devem ter acesso ao módulo
  • Toda ação deve ser registrada na trilha de auditoria
  • Informação sensível deve ser tratada de forma apropriada

Como verificar

— (não registrado na RFC original; ver a suíte de test/services/admin_administrative_procedures_service_test.rb e as ações do ActiveAdmin)

Documentação