{"id":30026364,"url":"https://github.com/phaalonso/sessao-votacao","last_synced_at":"2025-08-06T10:52:36.951Z","repository":{"id":296964868,"uuid":"995132905","full_name":"phaalonso/sessao-votacao","owner":"phaalonso","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-03T02:51:39.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-03T02:53:45.933Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phaalonso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-03T02:45:20.000Z","updated_at":"2025-06-03T02:51:42.000Z","dependencies_parsed_at":"2025-06-03T16:49:06.137Z","dependency_job_id":"a90e9189-7b5e-4cbf-8ece-ca6291acb56e","html_url":"https://github.com/phaalonso/sessao-votacao","commit_stats":null,"previous_names":["phaalonso/sessao-votacao"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/phaalonso/sessao-votacao","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phaalonso%2Fsessao-votacao","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phaalonso%2Fsessao-votacao/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phaalonso%2Fsessao-votacao/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phaalonso%2Fsessao-votacao/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phaalonso","download_url":"https://codeload.github.com/phaalonso/sessao-votacao/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phaalonso%2Fsessao-votacao/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269067341,"owners_count":24354259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-06T02:00:09.910Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-06T10:52:35.386Z","updated_at":"2025-08-06T10:52:36.933Z","avatar_url":"https://github.com/phaalonso.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sistema de votação\n\n- [x] Cadastrar uma nova pauta\n- [x] Abrir sessão de votação\n- [X] Receber votos dos associados\n  - [X] Controle de concorrência para impedir problema na contabilização dos votos\n  - [ ] Validar primeiro se o voto existe (evita lock na linha e segurar outra requisição)\n- [ ] CRUD associado (?)\n- [ ] Testes\n  - [ ] Corrigir problema no uso do testcontainers\n    - Necessário, pois estou utilizado `+ interval ':duration minutes'`, caso não seja solucionado é necessário mudar a forma de atualização\n  - [ ] Testes das rotas\n- [ ] Tarefas Bonus\n  - [ ] Validar CPF do associado \n  - [ ] Publicar resultados no Kafka \n    - [ ] Adicionar um status na votação\n    - [ ] Job que verifica as sessões que estão abertas e `NOW() \u003e session_end`\n      - Job pode ser usado para invalidar o cache, garantindo que as consultas do item de performance verifiquem o resultado final da votação\n  - [ ] Performance \n    - [ ] Testes de performance\n    - [ ] Índice para consulta das votações\n    - [ ] Cache da sessão de votação (TTL de 1s)\n      - 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\n      - Para atualizar o cache quando a votação for finalizada precisaria incluir um status e algum processo de atualização (cronjob)\n  - Versionamento da API\n    - 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\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphaalonso%2Fsessao-votacao","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphaalonso%2Fsessao-votacao","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphaalonso%2Fsessao-votacao/lists"}