Esta API tem como objetivo facilitar o envio e gestão de feedbacks dentro de uma organização. Ela permite que funcionários compartilhem sugestões, elogios ou críticas de forma identificada ou anônima, enquanto a equipe de Recursos Humanos pode analisar os dados para promover melhorias internas.
Público-alvo: Funcionários e administradores (RH) de empresas que desejam fomentar a comunicação interna e obter insights sobre o clima organizacional.
As funcionalidades foram desenvolvidas com base nas seguintes histórias de usuário:
- Cadastro de funcionários com nome, e-mail e senha.
- Login com retorno de token JWT.
- Acesso completo aos feedbacks apenas por administradores (RH).
- Envio de feedback com conteúdo, setor e opção de anonimato.
- Visualização de feedbacks enviados pelo usuário (exceto anônimos).
- Ocultação de autor e conteúdo de feedbacks anônimos.
- Visualização de todos os feedbacks por administradores, com filtros por setor e data.
- Exclusão de feedbacks ofensivos por administradores.
- Geração de relatórios por período e setor.
- Exportação de feedbacks para CSV.
- Agrupamento de feedbacks por tipo (elogio, sugestão, crítica, reclamação).
- Java 17+
- Maven 3.8+
- Banco de dados MySQL ou H2 (dependendo da configuração)
- IDE ou terminal com suporte a Spring Boot
Execute o código abaixo ou o equivalente na IDE de sua preferência:
# Clone o repositório
git clone https://github.com/gvieira1/feedback-system-api.git
# Acesse a pasta do projeto
cd feedback-system-api
# Compile o projeto
mvn clean install
# Rode a aplicação
mvn spring-boot:runA aplicação será iniciada em: http://localhost:8080
- Cadastre um novo employee em uma requisição
POSTparaapi/users/public-register - Faça uma requisição
POSTparaapi/auth/authenticatecom um JSON contendoemailesenhacadastrado. - Um token JWT será retornado.
- Use o token no header das próximas requisições:
Authorization: Bearer <token>
A autenticação utiliza Spring Security com assinatura JWT baseada em chave pública e privada (RSA).
-
User
id,userName,email,password,rolee lista defeedbacks- Roles possíveis:
EMPLOYEE,ADMIN - Email deve ser único e válido.
-
Feedback
id,titulo,content,sector,anonymous,type,author,createdAtetags- Campos obrigatórios:
content,titulo,sectoretype anonymous:trueoculta autor no retorno.
- Usuários comuns só acessam os próprios feedbacks (exceto anônimos).
- Administradores têm acesso completo com filtros adicionais.
- Feedbacks anônimos ocultam o nome do autor.
-
Autenticação: JWT com chave pública e privada.
-
Autorização:
EMPLOYEEpode criar e visualizar seus próprios feedbacks.ADMINpode visualizar todos, aplicar filtros, excluir e gerar relatórios.
-
Autenticação:
- Login com credenciais válidas.
-
Feedback (usuário autenticado):
- Envio de feedbacks válidos.
- Retorno 400 para dados inválidos.
- Acesso negado sem autenticação.
-
Feedback (admin):
- Visualização geral e filtrada.
- Exclusão com diferentes cenários (sucesso, inexistente, sem permissão).
- Agrupamento por tipo.
- Exportação (CSV).
- Relatórios: top setores, últimos três meses, dashboard.
-
FeedbackService:
- Filtragem de feedbacks não anônimos.
- Criação com dados válidos/inválidos.
- Agrupamento por tipo.
- Conversão para DTO respeitando anonimato.
- Exclusão e tratamento de erros.
Acesse a documentação interativa da API em:
http://localhost:8080/swagger-ui.html
-
Importe a collection Postman (arquivo
postman_collection.json). -
Configure o token JWT como variável global.
-
Teste todos os endpoints disponíveis: autenticação, envio de feedback, filtros e relatórios.
Em construção...