Features de provas#35
Open
rafael-pf wants to merge 334 commits into
Open
Conversation
…t-react-exams into feat/generate-pdf
Feat/generate pdf
feat(provas-individuais): backend working and frontend pull data from server
Feat/autocorrection
…n and dedicated styling.
…exams into feat/autocorrection
…t-react-exams into feat/ai-autocorrection
…ng-assistant-react-exams into feat/autocorrection
…t-react-exams into feat/ai-autocorrection
Feat/ai autocorrection
feat(responses): Update frontend and backend
…t-react-exams into tests/make_stronger_tests
Tests/make stronger tests
fix: GUI tests
…exams into feat/autocorrection
Feat/autocorrection
test(autocorrection): Fixed all tests
Tests/exam response registration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request - Teaching Assistant
📝 Descrição
O que foi feito:
Implementação completa do sistema de gerenciamento de provas, incluindo todas as funcionalidades necessárias para o ciclo completo de criação, aplicação e correção de provas:
1. Criação e Manutenção de Questões
GET /api/questions,POST /api/questions,PUT /api/questions/:id,DELETE /api/questions/:id2. Criação e Manutenção de Provas
isValidpara abrir/fechar)GET /api/exams,POST /api/exams,PUT /api/exams/:examId,DELETE /api/exams/:examId3. Geração de Provas para Estudantes
POST /api/exams/:examId/generate?classId=:classId4. Geração de PDFs
GET /api/exams/:id/zip?classId=:classId&quantity=:quantity&date=:date5. Submissão de Respostas de Provas
responses.jsonPOST /api/exams/:examId/responses,GET /api/exams/:examId/responses6. Correção de Provas
POST /api/correct/:examId,POST /api/trigger-ai-correction,POST /api/question-ai-correctionPor que foi feito:
Este conjunto de funcionalidades forma o núcleo do sistema de avaliação, permitindo que professores criem e gerenciem provas de forma eficiente, que estudantes respondam provas de forma segura, e que o sistema realize correções automáticas e assistidas por IA. A implementação garante integridade dos dados, segurança através de autenticação/autorização, e validações que previnem erros comuns.
📌 Observações
Impacto:
Riscos identificados:
pdfkite pode ter limitações com textos muito longosDecisões técnicas:
examsManagerequestionsManagerpara gerenciamento centralizado de dadosexams.json,questions.json,responses.json,exam-generations.json)📦 Área afetada
Frontend (Client - React):
Backend (Server - Express/Node.js):
Funcionalidades:
Infraestrutura:
🔧 Tipo de mudança
🧪 Testes
Testes automatizados
Por nível de teste:
Por área testada:
Cobertura:
Testes implementados:
🔬 Testes Unitários (Jest)
Modelo de Questões (
server/tests/unit/questions.model.test.ts):Classe Exams (
server/tests/unit/exam.class.test.ts):Funções Auxiliares (
server/tests/unit/getOpenQuestionsForExam.test.ts):Geração de Provas (
server/tests/unit/dataService.generation.test.ts):Atualização de Notas (
server/tests/unit/updateResponseAnswerScore.test.ts):Serviços de IA (
server/tests/unit/AIServiceFactory.test.ts,server/tests/unit/aiCorrectionHelpers.test.ts):Algoritmos (
server/tests/unit/algorithms.test.ts):🔗 Testes de Integração
Submissão de Respostas (
server/tests/integration/responses.integration.test.ts):Provas (
server/tests/integration/provas.test.ts):provas-individuais-backend.feature)Questões (
server/tests/integration/questions.integration.test.ts):Correção Automática (
server/tests/integration/autocorrection-closed.test.ts):Correção por IA (
server/tests/integration/question-ai-correction.test.ts,server/tests/integration/trigger-ai-correction.test.ts):Geração de PDFs (
server/tests/integration/pdfContent.test.ts):Versões de Provas (
server/tests/integration/examVersion.test.ts):Fluxo Completo de Provas (
server/tests/integration/examFlow.test.ts):🔌 Testes de Serviço (Rotas)
Rotas de Respostas (
server/tests/services/responses.routes.test.ts):Rotas de Questões (
server/tests/services/questions.routes.test.ts,server/tests/services/questions.validation.test.ts):Rotas de Provas (
server/tests/services/exams.routes.test.ts):Geração (
server/tests/services/generation.test.ts):🎯 Testes de Aceitação (Cucumber)
Frontend (GUI):
Gerenciamento de Provas (
client/src/features/provas-individuais-gui.feature):Gerenciamento de Questões (
client/src/features/question-management.feature):Geração de PDFs (
client/src/features/pdf-generation.feature):Correção Automática (
client/src/features/autocorrection.feature):Correção por IA (
client/src/features/ai-correction.feature):Backend (API):
Criação de Provas (
server/tests/features/create-exam-unit.feature):Registro de Respostas (
server/tests/features/examresponseregistration.feature):Provas Individuais (
server/tests/features/provas-individuais-backend.feature):Geração de PDFs (
server/tests/features/pdf-generation/success.feature,server/tests/features/pdf-generation/validation.feature):Correção Automática (
server/tests/features/autocorrection-closed-service.feature):Trigger de Correção por IA (
server/tests/features/trigger-ai-correction.feature):Como revisar e testar
Configuração do Ambiente:
.envdo servidor (server/.env):Notas sobre as variáveis:
API_BASE_URL: URL base da API (padrão:http://localhost:3005)GEMINI_API_KEY: Obrigatória apenas em produção. Em desenvolvimento, o sistema funciona sem ela (com avisos).QSTASH_TOKEN: Opcional. Se não configurado, o sistema usa processamento local.QSTASH_BASE_URL: Para desenvolvimento local, configure comohttp://localhost:8000quando usar o QStash CLI.QSTASH_QUEUE_NAME: Nome da fila no QStash (padrão:questions)QSTASH_WEBHOOK_URL: URL do webhook que receberá as correções (padrão:${API_BASE_URL}/api/question-ai-correction)Variáveis opcionais com valores padrão:
PORT: Porta do servidor (padrão:3005)NODE_ENV: Ambiente de execução (padrão:development)GEMINI_TIMEOUT: Timeout para requisições ao Gemini em ms (padrão:120000)GEMINI_MAX_RETRIES: Número máximo de tentativas (padrão:3)# Em um terminal separado, execute o QStash CLI em modo desenvolvimento npx @upstash/qstash-cli@latest devIsso iniciará o QStash localmente na porta 8000 (padrão), permitindo testar a funcionalidade de correção por IA em fila sem depender do serviço cloud da Upstash.
Testes Unitários (Server):
Testes E2E (Client):
Testar manualmente:
1. Criação de Questões:
2. Criação de Provas:
3. Geração de Provas para Estudantes:
curl -X POST "http://localhost:3005/api/exams/1/generate?classId=cls-1"4. Geração de PDFs:
curl -X GET "http://localhost:3005/api/exams/1/zip?classId=cls-1&quantity=5&date=2025-01-15" \ --output provas.zip5. Submissão de Respostas (Estudante):
6. Visualizar Respostas (Professor):
7. Correção de Questões Fechadas:
8. Correção por IA de Questões Abertas:
Cenários de erro a testar:
Criação de prova sem questões (deve retornar 400)
Criação de prova com questões inexistentes (deve retornar 400)
Submissão para prova inexistente (deve retornar 404)
Submissão para prova fechada (deve retornar 410)
Submissão com respostas incompletas (deve retornar 400)
Submissão duplicada (deve retornar 409)
Geração de PDF sem questões (deve retornar 400)
Servidor:
http://localhost:3005Cliente:
http://localhost:3004📸 Screenshots/GIFs
N/A - Esta PR inclui funcionalidades de backend e frontend. Screenshots podem ser adicionados em PRs futuras focadas em UI/UX.
✅ Checklist
🔗 Issues relacionadas