Backend
Visão Geral
Stack e arquitetura do gnoqcore-backend.
Stack
- Framework: Micronaut 4.x
- Linguagem: Java 21
- Build: Maven
- Banco de dados: PostgreSQL (via Hibernate JPA + Micronaut Data, migrations com Flyway) para os dados transacionais, e MongoDB para o log de Auditoria
- Pacote base:
com.erplider
Para rodar localmente (variáveis de ambiente, migrations, etc.), veja Configuração e Execução Local.
Arquitetura
O código segue Clean Architecture, com cada módulo de domínio (candidate, vacancy, client, user, etc.)
organizado em três camadas:
com.erplider.<modulo>/
├── domain/
│ └── entity/ # entidades JPA
├── application/
│ ├── dto/ # request/response DTOs
│ └── service/ # regras de negócio
└── infra/
├── controller/ # endpoints REST (@Controller)
└── repository/ # repositórios Micronaut DataAutorização
Endpoints são protegidos com a anotação @RequiresPermission("<recurso>:<ação>") (ex: candidate:delete),
interceptada via AOP. Veja Permissões.
Soft delete
A maioria das entidades de domínio (Candidate, Vacancy, Client, ClientUnit, User, Benefit, UserSession) segue um padrão consistente de exclusão reversível (soft delete) + exclusão definitiva (hard delete). Veja Soft Delete para os detalhes de endpoints e filtros.
Módulos de negócio
- Recrutamento — Candidato, Vaga e Candidatura: o núcleo do sistema, com as máquinas de estado de cada um
- Clientes — Cliente, Unidade, Contatos e Benefícios
- Usuários e Autenticação — cadastro de usuários, login, refresh token rotativo e invalidação de sessão
- Eventos e Jobs Agendados — como o status do candidato reage automaticamente às candidaturas, e a rotina diária de vagas
- Auditoria — trilha de auditoria de todas as ações do sistema (MongoDB)