Skip to content

Features de turmas#37

Open
HeitorMelo wants to merge 79 commits into
pauloborba:mainfrom
HeitorMelo:main
Open

Features de turmas#37
HeitorMelo wants to merge 79 commits into
pauloborba:mainfrom
HeitorMelo:main

Conversation

@HeitorMelo
Copy link
Copy Markdown
Contributor

Pull Request - Teaching Assistant

📝 Descrição

O que foi feito:

  • Integração de múltiplas features grandes: comparação de turmas, relatórios de desempenho, importação de alunos via CSV/XLSX, e melhorias de testes automatizados.
  • Adição dos componentes ClassComparison, ClassReport, gráficos de desempenho (StatusPieChart, EvaluationBarChart) e páginas de importação de notas.
  • Implementação de endpoints e lógica backend para geração de relatórios de turmas, cálculo de médias, critérios de aprovação e importação de alunos.
  • Refatoração de tipos, interfaces e modelos para suportar novos fluxos de dados (ex: EspecificacaoDoCalculoDaMedia, Report).
  • Adição e atualização de testes automatizados: unitários (Jest), integração e E2E (Cucumber, Cypress), com After hooks para limpeza de dados.
  • Documentação expandida: guias de testes, setup do Cypress, README atualizado.
  • Ajustes de compatibilidade e scripts para facilitar execução em diferentes ambientes (Windows/Linux).
  • Correções de bugs e melhorias de performance em fluxos de matrícula, cálculo de médias e exibição de relatórios.

Por que foi feito:

  • Para entregar funcionalidades essenciais de comparação e análise de desempenho entre turmas.
  • Para permitir importação eficiente de grandes volumes de alunos, reduzindo erros manuais.
  • Para garantir robustez e confiabilidade via testes automatizados em todos os níveis.
  • Para melhorar a experiência do usuário e a manutenibilidade do código.
  • Para alinhar o projeto com padrões de documentação, automação e integração contínua.

📌 Observações

Impacto:

  • 🟢 Baixo - Mudança isolada, sem efeitos colaterais
  • 🟡 Médio - Afeta algumas funcionalidades
  • 🔴 Alto - Mudanças críticas ou estruturais

Riscos identificados:

  • Possível impacto em fluxos existentes de matrícula e relatórios devido à refatoração de modelos e endpoints.
  • Necessidade de revisão cuidadosa dos novos testes e integração contínua para evitar regressões.

📦 Área afetada

Frontend (Client - React):

  • 🖥️ Componentes React
  • 🔌 Services/API
  • 📝 Types/Interfaces TypeScript
  • 🎨 Estilos e UI

Backend (Server - Express/Node.js):

  • 🔌 API Routes/Endpoints
  • 📊 Models e lógica de negócio
  • 💾 Persistência de dados

Funcionalidades:

  • 🎓 Gerenciamento de Estudantes
  • 📋 Gerenciamento de Turmas
  • 📝 Gerenciamento de Matrículas
  • 📈 Gerenciamento de Avaliações
  • 📄 Importação de dados
  • Provas
  • Flashcards
  • Comparação de Turmas e Relatórios

Infraestrutura:

  • 🔧 Configurações (tsconfig, jest.config, cucumber.js)
  • 📦 Dependências (package.json)
  • 🚀 Scripts de build/deploy
  • 📝 Documentação (README, guias)

🔧 Tipo de mudança

  • 🐛 Correção de bug (fix)
  • ✨ Nova funcionalidade (feature)
  • ♻️ Refatoração de código
  • 📚 Atualização de documentação
  • ✅ Adição/atualização de testes
  • 🎨 Melhorias de UI/UX
  • 🔒 Correção de segurança
  • ⚡ Melhoria de performance

🧪 Testes

Testes automatizados

Por nível de teste:

  • 🔬 Testes Unitários (Jest) - Classes e funções isoladas
    • Dependências: versões antigas, stubs e drivers
  • 🔗 Testes de Integração - Interação entre componentes/serviços
    • Dependências: novas versões evoluídas por outros desenvolvedores
  • 🎯 Testes End-to-End (Cucumber) - Fluxos completos da aplicação
    • Dependências: todas as dependências envolvidas
  • 🌐 Testes de Sistema - Ambiente completo de produção
    • Dependências: ambiente de produção com dependências externas reais

Por área testada:

  • 🖥️ Testes de GUI (interface do usuário)
  • 📊 Testes de Classes/Models (lógica de negócio)
  • 🔌 Testes de Services/API (comunicação e endpoints)

Cobertura:

  • Cobertura de testes mantida/aumentada
  • Casos de erro e edge cases cobertos

Como revisar e testar

Testes Unitários (Server):

cd server
npm install
npm test                    # Executar testes
npm run test:watch          # Modo watch
npm run test:coverage       # Com cobertura

Testes E2E (Client):

cd client
npm install
npm start                   # Terminal 1: iniciar app
npm run test:cucumber       # Terminal 2: executar testes

Testar manualmente:

  • Servidor: http://localhost:3000
  • Cliente: http://localhost:3004

📸 Screenshots/GIFs

Class Report:

image image image image

Class Comparison:

image image image

Import Students:

image image image

✅ Checklist

  • Código segue os padrões do projeto
  • Realizei self-review do código
  • Comentei código em áreas complexas
  • Atualizei a documentação (se necessário)
  • Mudanças não geram warnings
  • Adicionei testes que provam que a correção/feature funciona
  • Testes novos e existentes passam localmente
  • Mudanças dependentes foram merged e publicadas

🔗 Issues relacionadas

  • Closes #
  • Relacionado a #

Davi-SB and others added 30 commits November 13, 2025 21:11
…criteria and evaluation goals to the correct terminology
EduardoMab and others added 30 commits December 9, 2025 17:45
## Decisões do Merge:

### 1. .gitignore
- **Decisão**: Mesclado ambas as versões
- **Resultado**: Manteve estrutura detalhada da branch local + adicionou cucumber reports, jest coverage e tmp_data/ do upstream
- **Razão**: Ambas as seções são complementares e não conflitantes

### 2. server/package.json
- **Decisão**: Mesclado dependências de ambas as branches
- **Dependências preservadas**: multer 2.0.2, xlsx 0.18.5 (local) + jest, supertest, ts-jest (upstream)
- **Scripts**: Manteve 'dev' com cross-env PORT=3005 (compatibilidade Windows) mas start aponta para index.js (upstream)
- **Razão**: Precisamos de todas as dependências para bulk import E testes unitários

### 3. client/package.json
- **Decisão**: Mesclado dependências de ambas as branches
- **Dependências preservadas**: react-router-dom (local) + recharts (upstream)
- **Dev dependencies**: cross-env (local) + jest-cucumber, puppeteer, expect (upstream)
- **Razão**: react-router-dom necessário para navegação de import, recharts para gráficos de relatórios

### 4. package-lock.json (root, client, server)
- **Decisão**: Aceito versão do upstream (git checkout --theirs)
- **Razão**: Arquivos gerados automaticamente, serão regenerados com npm install

### 5. client/src/App.css
- **Decisão**: Base do upstream + estilos de bulk import adicionados ao final
- **Estilos adicionados**: .bulk-import-section, .import-btn, .import-result-container, .import-result-card, animações
- **Razão**: Upstream tem estilos de relatórios/gráficos, local tem estilos de import - ambos necessários

### 6. client/src/components/Classes.tsx
- **Decisão**: Mesclado ambos os recursos no state
- **State preservado**:
  - Bulk import: selectedFile, fileInputRef, navigate (local)
  - Reports: reportPanelClass, reportData, isLoadingReport (upstream)
- **Razão**: Componente precisa suportar AMBAS as features simultaneamente

## Novas Features do Upstream Integradas:
- ✅ Sistema de relatórios com gráficos (Recharts)
- ✅ Testes Jest no servidor
- ✅ Testes Cucumber no cliente
- ✅ Componentes de gráficos (EvaluationBarChart, StatusPieChart)
- ✅ ImportGrade component
- ✅ ClassReport component
- ✅ ApprovalCriteria model
- ✅ Report type system

## Features Locais Preservadas:
- ✅ Bulk enrollment via CSV/XLSX upload
- ✅ React Router navigation
- ✅ Import success/error pages
- ✅ EnrollmentService with bulk upload
- ✅ Multer + XLSX processing no servidor
- ✅ Cross-platform compatibility (cross-env)
Co-authored-by: Heitor Riquelme Melo de Souza <101292201+HeitorMelo@users.noreply.github.com>
- Remove duplicate multer import and unused upload_dir variable
- Revert server dev script to use src/index.ts
- Remove server and client scripts from root package.json
- Restore original project folder name in README
- Rename test documentation to IMPORT_STUDENTS_TEST_GUIDE.md
- Restore server and client scripts in root package.json with PORT definitions
- Add back upload_dir multer configuration for gradeImport endpoint
- Ensures compatibility with existing features and future merges

Based on feedback from code review to maintain compatibility with other features
Feature: Bulk Student Import with CSV/XLSX Support
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.

5 participants