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.rbeapp/services/admin_administrative_procedures_service.rbexistem, e o modelo evoluiu além desta proposta (ganhoumembership_id,short_description,status,complaint_sidee 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_toum admin (Usercom papel de admin)belongs_toumUserProfile- 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
- Instalar o gem Audited
- Criar o modelo
AdministrativeProcedurecom as migrations - Definir associações e validações
- Criar o recurso no ActiveAdmin
- Adicionar as traduções nos arquivos de locale
- 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
- Diagrama de classes —
AdministrativeProceduree suas relações - Fix: falha silenciosa na suspensão de filiação via PAD