Feature: Avaliação de Submissões
Introdução ao documento
Documenta o fluxo de avaliação de submissões pelo facilitador (professor).
Versionamento
- Versão do documento: 1.0.0
- Última atualização: 2026-03-04
- Responsável: Time Dhedalos
Referencial teórico
Visão geral
O facilitador avalia uma submissão existente: atualiza status para evaluated, atribui nota, registra comentário e opcionalmente anexa novos arquivos. O sistema notifica o participante sobre a avaliação.
Atores
- Facilitador (professor) — executa a avaliação via app mobile ou painel admin
- Participante (aluno) — recebe notificação da avaliação
- Sistema (Novu) — envia notificação
submission-evaluated
Pré-condições
- Submissão existente com status
submittedousubmitted_external— Evidência:app/Models/DeliverableSubmission.php:15 - API Key válida — Evidência:
app/Http/Middleware/ApiKeyMiddleware.php:15 - Workflow Novu
submission-evaluatedcadastrado na tabelanovu_keys— Evidência:app/Services/NotificationService.php:23
Fluxo principal
- App mobile envia
POST /api/submissions/{id}com API Key + dados de avaliação- Evidência:
routes/api.php:22,app/Http/Controllers/Api/SubmissionController.php:340
- Evidência:
- Controller localiza submissão por ID
- Atualiza campos:
status→evaluated,score,facilitator_comment,evaluated_at- Evidência:
app/Http/Controllers/Api/SubmissionController.php:340
- Evidência:
- Se há novos arquivos,
SubmissionFileService::replaceFiles()processa upload- Evidência:
app/Services/SubmissionFileService.php:14
- Evidência:
NotificationService::sendNotification()enviasubmission-evaluatedao participante- Evidência:
app/Services/NotificationService.php:23
- Evidência:
- Retorna JSON da submissão atualizada (HTTP 200)
Fluxos alternativos
- Submissão não encontrada: Retorna HTTP 404.
- Submissão já avaliada: Permite reavaliação (sobrescreve status/nota/comentário).
- Falha Novu: Avaliação persiste mesmo que notificação falhe.
Regras de negócio
- Status final: Avaliação muda status para
evaluatede registraevaluated_atcom timestamp.- Evidência:
app/Http/Controllers/Api/SubmissionController.php:340
- Evidência:
- Score: Campo
scoreé tinyint unsigned (0-255), default 0.- Evidência:
app/Models/DeliverableSubmission.php:15
- Evidência:
- Arquivos opcionais: Facilitador pode enviar novos arquivos durante avaliação (substituem anteriores).
- Evidência:
app/Services/SubmissionFileService.php:14
- Evidência:
Estados possíveis
submitted/submitted_external→evaluated(transição principal)evaluated→evaluated(reavaliação)
Endpoints envolvidos
POST /api/submissions/{id}— avaliar submissão (openapi.yaml)- Evidência:
routes/api.php:22
Dados impactados
deliverable_submissions— camposstatus,score,facilitator_comment,evaluated_at(model.md)submission_files— novos arquivos se enviados (model.md)
Pendências
- ⚠️ PENDÊNCIA: Documentar se existe validação de range para
score(0-100? 0-10?). - ⚠️ PENDÊNCIA: Verificar se reavaliação é intencional ou se deveria haver bloqueio após primeira avaliação.