🚀 Global Solution 2025 - O Futuro do Trabalho
🎓 *Disruptive Architectures: Java Advanced
A Includ.IA Cognitive Engine é o núcleo inteligente da plataforma Includ.IA. Uma solução backend robusta que orquestra Inteligência Artificial Generativa, processamento de dados em tempo real e algoritmos de compatibilidade (Match) para eliminar vieses em processos seletivos.
- 💡 Visão Geral
- 🛠 Arquitetura Técnica
- 🚀 Como Executar Localmente
- 🔌 API Reference (Payloads JSON)
- ⚡ Testando o WebSocket
- 👥 Integrantes
O sistema foi projetado para resolver a exclusão no mercado de trabalho através de tecnologia:
- Recrutamento às Cegas (Blind Recruitment): Dados sensíveis (CPF, Endereço, Gênero) são mascarados nas etapas iniciais.
- IA Generativa Integrada:
- Vagas: Reescreve descrições para remover termos excludentes (etarismo, machismo).
- Candidatos: Gera resumos profissionais focados estritamente em Hard e Soft Skills.
- Matchmaking Engine: Algoritmo que cruza competências, localização (raio em km) e modelo de trabalho para gerar um Score de Compatibilidade.
- Core: Java 21 + Spring Boot 3.
- Persistência: Oracle Database (Relacional) + JPA/Hibernate.
- Performance: Redis para cache de Feed e Sessões.
- Assincronismo: RabbitMQ para processamento de Matches e Notificações.
- Comunicação: REST API (Cliente/Servidor) e WebSocket (STOMP) para Chat.
- IA: Cliente HTTP integrado a microserviço Python/Azure para inferência de modelos LLM (Gemini/GPT).
- Docker e Docker Compose instalados.
-
Clone o repositório:
git clone https://github.com/seu-time/IncludIA-Java.git cd IncludIA-Java -
Suba a Infraestrutura (Oracle, Redis, RabbitMQ):
docker-compose up -d
Aguarde o Oracle Database inicializar (pode levar alguns minutos).
-
Execute a Aplicação:
./gradlew clean bootRun
🟢 API Online:
http://localhost:8080📄 Swagger UI:
http://localhost:8080/swagger-ui.html
Utilize os exemplos abaixo para testar os endpoints no Swagger ou Postman.
Registrar Candidato (POST /auth/register-candidate)
{
"nome": "Alex Pereira",
"cpf": "12345678900",
"email": "alex@email.com",
"senha": "SenhaForte@123",
"resumoPerfil": "Desenvolvedor Full Stack com foco em Java e React.",
"cep": "01310100",
"logradouro": "Av. Paulista",
"numero": "1000",
"bairro": "Bela Vista",
"cidade": "São Paulo",
"estado": "SP",
"raioBuscaKm": 30
}Registrar Recrutador (POST /auth/register-recruiter)
{
"nome": "Julia Recruiter",
"email": "julia@techjobs.com",
"senha": "SenhaForte@123",
"empresaId": "cole-o-uuid-da-empresa-aqui"
}Login (POST /auth/login)
{
"email": "alex@email.com",
"senha": "SenhaForte@123"
}Criar Empresa (POST /empresas)
{
"nomeOficial": "Inovação Tech SA",
"nomeFantasia": "InovaTech",
"cnpj": "12345678000199",
"localizacao": "São Paulo, SP",
"descricao": "Empresa líder em soluções de IA para o varejo.",
"cultura": "Focada em diversidade, inovação e work-life balance.",
"fotoCapaUrl": "[https://exemplo.com/capa.jpg](https://exemplo.com/capa.jpg)"
}Criar Vaga (POST /vagas)
Nota: A IA processará a
descricaoOriginalautomaticamente para torná-la inclusiva.
{
"titulo": "Engenheiro de Software Java",
"descricaoOriginal": "Procuramos um ninja que respire código e não tenha hora para sair.",
"localizacao": "São Paulo, SP",
"tipoVaga": "TEMPO_INTEGRAL",
"modeloTrabalho": "HIBRIDO",
"salarioMin": 9000.00,
"salarioMax": 14000.00,
"beneficios": "Vale Refeição, Plano de Saúde, Gympass",
"experienciaRequerida": "Experiência com microserviços",
"skillIds": [
"uuid-da-skill-java",
"uuid-da-skill-docker"
]
}Feed de Candidatos (Tinder) (GET /vagas/{idVaga}/candidates-feed)
Retorna a lista de candidatos ordenados por compatibilidade (Score) para a vaga especificada.
Adicionar Experiência (POST /profile/experience)
{
"tituloCargo": "Desenvolvedor Backend Júnior",
"tipoEmprego": "ESTAGIO",
"dataInicio": "2023-01-15",
"dataFim": "2024-01-15",
"descricao": "Desenvolvimento de APIs REST e manutenção de legado.",
"empresaId": "uuid-da-empresa-opcional"
}Adicionar Educação (POST /profile/education)
{
"nomeInstituicao": "FIAP",
"grau": "BACHARELADO",
"areaEstudo": "Análise e Desenvolvimento de Sistemas",
"dataInicio": "2024-02-01",
"descricao": "Foco em arquitetura de software e IA."
}Adicionar Idioma (POST /profile/language)
{
"nomeIdioma": "INGLES",
"nivelProficiencia": "AVANCADO"
}Dar Like/Dislike (Candidato ou Recrutador) (POST /swipe/candidate ou /swipe/recruiter/{vagaId})
{
"targetId": "uuid-do-alvo-(vaga-ou-candidato)",
"isLiked": true
}Enviar Mensagem (POST /chats/{chatId}/messages)
{
"conteudo": "Olá! Gostaria de agendar uma entrevista.",
"receiverId": "uuid-do-destinatario"
}Para validar a comunicação em tempo real sem um frontend móvel:
- Crie um arquivo
index.htmllocalmente. - Insira o script de conexão SockJS + STOMP.
- Conecte em:
http://localhost:8080/ws(ou link do deploy). - Inscreva-se no tópico:
/topic/chat/{CHAT_ID}. - Ao enviar uma mensagem via API (Swagger), ela aparecerá instantaneamente no console do navegador.
- RM 555213 - Luiz Eduardo Da Silva Pinto