Skip to content

Corrige status de prova para 'finished' quando aluno finaliza durante…#75

Merged
biancastephani merged 5 commits intodevelopmentfrom
fix/exam-status
Mar 30, 2026
Merged

Corrige status de prova para 'finished' quando aluno finaliza durante…#75
biancastephani merged 5 commits intodevelopmentfrom
fix/exam-status

Conversation

@franciscojuliao-star
Copy link
Copy Markdown

Descrição

Corrige o problema onde o status da prova aparecia como "não enviado" quando o aluno finalizava a prova durante o período ativo, mas antes do término.

Problema

  • Cenário: Prova disponível de 20/07 a 28/07
  • Comportamento esperado: Aluno finaliza em 25/07 → deve mostrar "finalizado"
  • Comportamento atual: Aluno finaliza em 25/07 → mostra "não enviado" até 29/07
  • Dados no banco: academic_allocation_users.status = 1 e exam_user_attempts.complete = true

Solução Implementada

Adiciona verificação para exibir status 'finished' quando:

  • Aluno finalizou a prova (complete=TRUE)
  • Ainda não possui nota (grade IS NULL)
  • Está dentro do período da prova

Detalhes Técnicos

  • Arquivo: app/models/score.rb (linha 699)
  • Posicionamento: Após verificação de 'not_finished' (linha 698)
  • Condição: Usa grade IS NULL em vez de status=1 para maior precisão
  • Lógica: Forma par complementar com a verificação de 'not_finished'

Como Testar

  1. Criar uma prova com período ativo (ex: hoje até amanhã)
  2. Fazer a prova como aluno e clicar em "Finalizar"
  3. Verificar o status da prova antes do término do período
  4. Deve aparecer "Finalizado" (não mais "Não enviado")

Copy link
Copy Markdown
Member

@biancastephani biancastephani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uma prova pode ter 1-N tentativas.
Com a correção feita, o sistema não me permite realizar novas tentativas, mesmo que eu possa.
Talvez a melhor situação seja a 'retake', analisar se isso é o suficiente

- Altera controller para retornar JSON ao invés de redirect
- Corrige validação de tentativas no cálculo de status
- Melhora comportamento do modal ao finalizar prova
@franciscojuliao-star
Copy link
Copy Markdown
Author

Correção feita.

O erro "undefined method total_time for ExamUserAttempt" ocorria porque
o código chamava diretamente o atributo total_time, que é interno do modelo.
O método público correto é get_total_time.

IMPORTANTE: Executar migração pendente para a branch

A tabela exam_user_attempts não possui as colunas total_time e start_tmp.
Essas colunas são adicionadas pela migração:

  db/migrate/20251112165314_add_start_tmp_exam_user_attempt.rb

Que adiciona:
  - start_tmp (datetime)
  - total_time (integer, default: 0)

rode rails db:migrate
@biancastephani biancastephani merged commit 0dd544f into development Mar 30, 2026
@biancastephani biancastephani deleted the fix/exam-status branch March 30, 2026 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants