Fases 4, 5 e 6 — Job 1h + Auditoria + Consolidação + Wizard de validação

This commit is contained in:
2026-06-11 12:02:50 -03:00
parent b77fc0122c
commit 90ed705ed8
29 changed files with 1617 additions and 616 deletions

View File

@@ -1,22 +1,29 @@
# app/models/auditoria_log.rb
class AuditoriaLog < ApplicationRecord
belongs_to :user, optional: true
belongs_to :user, optional: true # opcional caso user seja deletado
validates :acao, presence: true
ACOES = %w[criar editar finalizar arquivar excluir login logout].freeze
validates :acao, presence: true
validates :entidade, presence: true
scope :recentes, -> { order(created_at: :desc) }
scope :do_usuario, ->(user) { where(user: user) }
scope :por_user, ->(user_id) { where(user_id: user_id) }
scope :por_entidade, ->(entidade) { where(entidade: entidade) }
# Cria um log de auditoria de forma simples
# AuditoriaLog.registrar(current_user, 'criar_consolidacao', ip, detalhes: '...')
def self.registrar(user, acao, ip = nil, detalhes: nil)
def self.registrar(user:, acao:, entidade:, entidade_id: nil,
dados_anteriores: {}, dados_novos: {}, request: nil)
create!(
user: user,
acao: acao,
ip: ip,
detalhes: detalhes
user_id: user&.id,
acao: acao.to_s,
entidade: entidade.to_s,
entidade_id: entidade_id,
dados_anteriores: dados_anteriores,
dados_novos: dados_novos,
ip_address: request&.remote_ip,
user_agent: request&.user_agent
)
rescue ActiveRecord::RecordInvalid => e
Rails.logger.warn("AuditoriaLog falhou: #{e.message}")
rescue => e
Rails.logger.error("[AuditoriaLog] Erro ao registrar: #{e.message}")
end
end