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 enumAuditAction:CREATE,UPDATE,SOFT_DELETE,HARD_DELETE,RESTORE,APPROVE,REJECT,CLOSE,REOPEN,ASSIGN,REVOKEresource— nome da classe da entidade afetada (ex:VacancyEntity)beforeState/afterState— snapshot em JSON do estado antes/depois da mudançasuccess— se a operação teve sucessooccurredAt,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).