Core Docs
Backend

Auditoria

Trilha de auditoria de todas as ações do sistema, armazenada no MongoDB.

Módulo audit. Diferente do resto do backend (PostgreSQL), a auditoria é gravada no MongoDB (AuditEntity, @MappedEntity) — um log append-only, sem update/delete.

O que é gravado

Cada entrada guarda:

  • actorId — id do usuário logado que fez a ação (extraído do JWT)
  • action — um valor do enum AuditAction: CREATE, UPDATE, SOFT_DELETE, HARD_DELETE, RESTORE, APPROVE, REJECT, CLOSE, REOPEN, ASSIGN, REVOKE
  • resource — nome da classe da entidade afetada (ex: VacancyEntity)
  • beforeState / afterState — snapshot em JSON do estado antes/depois da mudança
  • success — se a operação teve sucesso
  • occurredAt, ipAddress, userAgent

Como uma ação vira log

A anotação @Audit(action = AuditAction.X, resource = Y.class) no método do service dispara um interceptor AOP que captura o estado antes/depois via AuditContext, o ator (JWT), IP e User-Agent da requisição — sem precisar escrever nada manual no método de negócio.

@Audit(action = AuditAction.HARD_DELETE, resource = CandidateEntity.class)
@Transactional("default")
public void forceDeleteCandidateById(UUID candidateId) { ... }

Consultando o log

GET /gnoqcore/v1/audit (permissão audit:read), paginado, com page, size, orderBy (default occurredAt) e sortDirection (default DESC). É essa listagem que alimenta a tela Auditoria do frontend (/audit-log, admin only).

On this page