diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..e4fba2183 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/frontend/src/__apps/leitura-materia/main.js b/frontend/src/__apps/leitura-materia/main.js index 04a304e86..d6474507a 100644 --- a/frontend/src/__apps/leitura-materia/main.js +++ b/frontend/src/__apps/leitura-materia/main.js @@ -78,7 +78,10 @@ new Vue({ // eslint-disable-line try { const data = JSON.parse(message.data) if (data.type === 'data') { - this.painelStore().applyData(data) + // applyData() espera o payload cru, não o envelope {type, + // payload} (mesmo ajuste de painel/votacao/voto-individual + // main.js). + this.painelStore().applyData(data.payload) } } catch (e) { console.error('Leitura materia WS parse error:', e) diff --git a/frontend/src/__apps/painel/main.js b/frontend/src/__apps/painel/main.js index b2fcf03ad..ca9cd8931 100644 --- a/frontend/src/__apps/painel/main.js +++ b/frontend/src/__apps/painel/main.js @@ -79,7 +79,7 @@ new Vue({ // Toda a lógica de estado (flags, sessão, parlamentares, matéria, // resultado e votos) vive no store Pinia. O header/footer leem a // sessão do store — não há mais escrita via $refs. - this.painelStore().applyData(data) + this.painelStore().applyData(data.payload); } catch (e) { console.error('Error applying painel data', e) } @@ -106,8 +106,9 @@ new Vue({ this.ws.addEventListener('message', (message) => { try { - const data = JSON.parse(message.data) - + // console.log(`Data received from ws: ${JSON.stringify(message.data)}`); + const data = JSON.parse(message.data); + console.log(JSON.stringify(data)); if (data.type === 'data') { this.updateState(data); } else if (data.type === 'pong') { diff --git a/frontend/src/__apps/painel/ws/normalizePainel.js b/frontend/src/__apps/painel/ws/normalizePainel.js index a9af299e2..633dd7eaa 100644 --- a/frontend/src/__apps/painel/ws/normalizePainel.js +++ b/frontend/src/__apps/painel/ws/normalizePainel.js @@ -75,12 +75,14 @@ export function normalizePainelData (raw) { nome_parlamentar: asString(o.nome, '') })) + console.log(d.sessao_iniciada); + return { // sessao_iniciada vem de sessao.iniciada is not False (True ou None // contam como "iniciada" — sessões legadas ficaram com None, mesma // convenção de restringe_sessoes_visiveis() no backend). sessao_aberta: !!d.sessao_iniciada && !d.sessao_finalizada, - painel_aberto: d.status_painel != null ? !!d.status_painel : DEFAULT_STATE.painel_aberto, + painel_aberto: d.status_painel != null ? !!d.status_painel : DEFAULT_STATE.painel_aberto, mostrar_voto: d.mostrar_voto != null ? !!d.mostrar_voto : DEFAULT_STATE.mostrar_voto, message: asString(d.msg_painel, DEFAULT_STATE.message), diff --git a/frontend/src/__apps/painel/ws/painelSocket.js b/frontend/src/__apps/painel/ws/painelSocket.js index dbdc81104..156619bed 100644 --- a/frontend/src/__apps/painel/ws/painelSocket.js +++ b/frontend/src/__apps/painel/ws/painelSocket.js @@ -38,5 +38,4 @@ export function nextBackoffDelay (currentDelayMs) { } export const DISCONNECTED_MESSAGE = - 'Conexão em tempo real perdida. Verifique se o Redis e o Daphne (ou ' + - '"./manage.py runserver") estão em execução. Tentando reconectar…' + 'Conexão em tempo real perdida. Tentando reconectar…' diff --git a/frontend/src/__apps/votacao-simbolica/main.js b/frontend/src/__apps/votacao-simbolica/main.js index 90659d8fa..03776ea13 100644 --- a/frontend/src/__apps/votacao-simbolica/main.js +++ b/frontend/src/__apps/votacao-simbolica/main.js @@ -83,7 +83,10 @@ new Vue({ // eslint-disable-line try { const data = JSON.parse(message.data) if (data.type === 'data') { - this.painelStore().applyData(data) + // applyData() espera o payload cru, não o envelope {type, + // payload} (mesmo ajuste de painel/votacao/voto-individual + // main.js). + this.painelStore().applyData(data.payload) } } catch (e) { console.error('Votacao simbolica WS parse error:', e) diff --git a/frontend/src/__apps/votacao/main.js b/frontend/src/__apps/votacao/main.js index 500e93b7c..95a2de986 100644 --- a/frontend/src/__apps/votacao/main.js +++ b/frontend/src/__apps/votacao/main.js @@ -201,7 +201,13 @@ const v = new Vue({ // eslint-disable-line updateState (data) { try { // Toda a normalização/aplicação de estado vive no store Pinia. - this.painelStore().applyData(data) + // applyData() espera o payload cru (normalizePainelData() lê + // d.sessao_iniciada etc. diretamente) — não o envelope {type, + // payload} inteiro da mensagem WS, senão sessao_aberta/ + // painel_aberto nunca saem de DEFAULT_STATE e a tela não renderiza + // nada. Mesmo ajuste já feito em painel/main.js e voto-individual/ + // main.js. + this.painelStore().applyData(data.payload) } catch (e) { console.error('Error updating state:', e) } diff --git a/frontend/src/__apps/voto-individual/main.js b/frontend/src/__apps/voto-individual/main.js index d1fc1fd61..59d6c14f8 100644 --- a/frontend/src/__apps/voto-individual/main.js +++ b/frontend/src/__apps/voto-individual/main.js @@ -85,7 +85,8 @@ new Vue({ const data = JSON.parse(message.data) if (data.type === 'data') { // Atualiza o display compartilhado da matéria (sessao/materia) - this.painelStore().applyData(data) + console.log(`${JSON.stringify(data.payload)}`); + this.painelStore().applyData(data.payload) // E dispara a checagem do estado pessoal — sem poll periódico, // isto é a única forma de saber que algo mudou. this.fetchStatus() diff --git a/frontend/src/components/leitura-materia/LeituraMateria.vue b/frontend/src/components/leitura-materia/LeituraMateria.vue index 971fd30a8..f384fd70c 100644 --- a/frontend/src/components/leitura-materia/LeituraMateria.vue +++ b/frontend/src/components/leitura-materia/LeituraMateria.vue @@ -3,13 +3,13 @@ Leitura de Matéria
- [[ error_message ]] + {{ error_message }}
- Matéria: [[ materia.texto ]] + Matéria: {{ materia.texto }}
- Ementa: [[ materia.ementa ]] + Ementa: {{ materia.ementa }}

diff --git a/frontend/src/components/votacao-simbolica/VotacaoSimbolica.vue b/frontend/src/components/votacao-simbolica/VotacaoSimbolica.vue index 8a0b9d248..1d129948d 100644 --- a/frontend/src/components/votacao-simbolica/VotacaoSimbolica.vue +++ b/frontend/src/components/votacao-simbolica/VotacaoSimbolica.vue @@ -3,17 +3,17 @@ Votação Simbólica
- [[ error_message || localError ]] + {{ error_message || localError }}
- Matéria: [[ materia.texto ]] + Matéria: {{ materia.texto }}
- Ementa: [[ materia.ementa ]] + Ementa: {{ materia.ementa }}

- Total presentes: [[ totalPresentes ]] (com presidente) + Total presentes: {{ totalPresentes }} (com presidente)
- Total votantes: [[ totalVotantes ]] (com presidente) + Total votantes: {{ totalVotantes }} (com presidente)

@@ -42,7 +42,7 @@ diff --git a/frontend/src/components/voto-individual/VotoIndividual.vue b/frontend/src/components/voto-individual/VotoIndividual.vue index bbcec1be2..755b9b536 100644 --- a/frontend/src/components/voto-individual/VotoIndividual.vue +++ b/frontend/src/components/voto-individual/VotoIndividual.vue @@ -1,18 +1,18 @@