https://github.com/phaalonso/sessao-votacao
https://github.com/phaalonso/sessao-votacao
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/phaalonso/sessao-votacao
- Owner: phaalonso
- Created: 2025-06-03T02:45:20.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-03T02:51:39.000Z (about 1 year ago)
- Last Synced: 2025-08-03T02:53:45.933Z (11 months ago)
- Language: Java
- Size: 16.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Sistema de votação
- [x] Cadastrar uma nova pauta
- [x] Abrir sessão de votação
- [X] Receber votos dos associados
- [X] Controle de concorrência para impedir problema na contabilização dos votos
- [ ] Validar primeiro se o voto existe (evita lock na linha e segurar outra requisição)
- [ ] CRUD associado (?)
- [ ] Testes
- [ ] Corrigir problema no uso do testcontainers
- Necessário, pois estou utilizado `+ interval ':duration minutes'`, caso não seja solucionado é necessário mudar a forma de atualização
- [ ] Testes das rotas
- [ ] Tarefas Bonus
- [ ] Validar CPF do associado
- [ ] Publicar resultados no Kafka
- [ ] Adicionar um status na votação
- [ ] Job que verifica as sessões que estão abertas e `NOW() > session_end`
- Job pode ser usado para invalidar o cache, garantindo que as consultas do item de performance verifiquem o resultado final da votação
- [ ] Performance
- [ ] Testes de performance
- [ ] Índice para consulta das votações
- [ ] Cache da sessão de votação (TTL de 1s)
- Não vejo necessidade de atualizar o cache a cada voto, um TTL de alguns segundos deve ser OK, desde que seja atualizado quando a votação for finalizada
- Para atualizar o cache quando a votação for finalizada precisaria incluir um status e algum processo de atualização (cronjob)
- Versionamento da API
- A API pode ser versionada utilizando uma versão na url base do serviço (ex: `/v1/pautas`), sendo possível utilizar o mesmo serviço com algumas versões (incluindo endpoints a serem depreciados) ou mais de um serviço rodando com um gateway controlando qual vai ser acessado