Skip to content

Corrige travas e concorrência na votação nominal do painel - #3855

Open
edwardoliveira wants to merge 2 commits into
3.1.xfrom
fix/painel-registro-votacao-trava
Open

Corrige travas e concorrência na votação nominal do painel#3855
edwardoliveira wants to merge 2 commits into
3.1.xfrom
fix/painel-registro-votacao-trava

Conversation

@edwardoliveira

Copy link
Copy Markdown
Contributor

Resumo

Corrige o fluxo de votação nominal entre a Mesa e os tablets dos parlamentares, eliminando efeitos colaterais em requisições GET, condições de corrida e estados em que o painel ou o registro de votos ficavam travados.

Principais mudanças

  • separa a abertura, o bloqueio, a reabertura, o cancelamento e o encerramento da votação nominal;
  • usa transações e bloqueio da matéria para serializar votos dos tablets e a apuração da Mesa;
  • impede votos duplicados por parlamentar e matéria no banco de dados;
  • normaliza votos duplicados existentes antes de criar as restrições de unicidade;
  • garante no banco que exista no máximo uma matéria aberta de cada tipo;
  • impede alteração direta de votacao_aberta e registro_aberto pela API e desabilita o acesso administrativo inseguro aos modelos envolvidos;
  • adiciona polling leve para atualização automática dos tablets e da tela da Mesa;
  • remove o ETag incompleto do painel, evitando respostas 304 que ocultavam mudanças de presença, oradores ou configuração;
  • valida valores de voto e rejeita submissões após bloqueio ou encerramento;
  • corrige a serialização dos dados da Casa Legislativa na API e-Cidadania;
  • melhora mensagens de estado, tooltips e a exibição de parlamentares que não votaram.

Migrações

  • 0070 adiciona unicidade dos votos por parlamentar e matéria, preservando deterministicamente o voto canônico em dados duplicados;
  • 0071 fecha matérias abertas duplicadas antes de adicionar as restrições de votação aberta.

Testes

  • 25 testes focados aprovados para votação nominal, painel, migrações e serialização da API;
  • git diff --check aprovado;
  • compilação dos arquivos Python alterados aprovada.

edwardoliveira and others added 2 commits August 21, 2026 13:28
O painel só deve marcar "Não votou" quando a matéria tem voto nominal
de fato. Para Leitura, Simbólica, Secreta ou quando não há matéria
aberta (ex.: sessão solene), tipo_votacao chega como 'Leitura' ou fica
ausente na resposta, e o parlamentar nunca recebe um voto — o que
antes caía no fallback de show_voto() e rotulava incorretamente todos
os presentes como "Não votou".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant