# 🎹 Pull Request - Piano Training Platform ## 📝 Descrição ## 🎯 Tipo de Mudança - [ ] ✨ Nova feature - [ ] 🐛 Bug fix - [ ] 🔧 Refatoração - [ ] 📝 Documentação - [ ] 🎨 UI/UX - [ ] ⚡ Performance - [ ] 🔒 Segurança - [ ] 🧪 Testes ## 🔍 Checklist de Review ### Obrigatório (Blocking) ⚠️ #### Componentes (se aplicável) - [ ] Todos os componentes têm PropTypes ou TypeScript types definidos - [ ] Componentes não contêm lógica de negócio - [ ] Componentes são testáveis (sem side effects diretos) #### Áudio/MIDI (se aplicável) - [ ] Código de áudio inclui tratamento de erros (try-catch) - [ ] Implementado cleanup de recursos (removeEventListener, disconnect) - [ ] Latência documentada e testada (< 50ms) - [ ] Mensagens MIDI validadas antes de processar #### Estado (se aplicável) - [ ] Estado é imutável (spread operators ou immer) - [ ] Sem lógica complexa em reducers/actions - [ ] Estrutura do estado documentada #### Testes - [ ] Nova funcionalidade tem pelo menos 1 teste - [ ] Coverage mínimo de 70% para novos arquivos - [ ] Testes são legíveis (padrão AAA) #### API/Backend (se aplicável) - [ ] Chamadas API têm timeout configurado - [ ] Implementado retry logic com exponential backoff - [ ] Dados da API são validados (schemas) - [ ] Sem chaves API ou secrets expostos ### Fortemente Recomendado 🟡 #### Qualidade de Código - [ ] Componentes têm menos de 250 linhas - [ ] Nomes são descritivos e claros - [ ] Sem console.logs desnecessários - [ ] TODOs foram convertidos em issues - [ ] Commits seguem Conventional Commits #### Acessibilidade (WCAG 2.1) - [ ] Botões têm aria-labels descritivos - [ ] Elementos navegáveis via teclado - [ ] Contraste mínimo de 4.5:1 - [ ] Estados de foco visíveis - [ ] Animações respeitam prefers-reduced-motion #### Performance - [ ] Usado lazy loading quando apropriado - [ ] Sem re-renders desnecessários - [ ] Assets otimizados (imagens, áudio) - [ ] Bundle size dentro do limite (< 500KB gzipped) #### Documentação - [ ] Código complexo está comentado - [ ] README atualizado se necessário - [ ] Changelog atualizado - [ ] JSDoc em funções públicas ### Específico por Área 🎯 #### Teclado Virtual (se aplicável) - [ ] Suporta toque e mouse - [ ] Resposta < 100ms - [ ] Feedback visual imediato - [ ] Suporta múltiplas teclas (acordes) - [ ] Funciona em mobile, tablet e desktop #### Sistema de Avaliação (se aplicável) - [ ] Feedback construtivo e específico - [ ] Tolera desvios humanos (±50ms) - [ ] Progress tracking implementado - [ ] Métricas documentadas #### Pedagogia (se aplicável) - [ ] Objetivos de aprendizado definidos - [ ] Progressão de dificuldade documentada - [ ] Feedback imediato ao aluno - [ ] Sistema motivacional, não punitivo ## 🧪 Como Testar 1. 2. 3. ## 📸 Screenshots/Demo ## 📚 Links Relacionados - Issue: # - Documentação: - Design: ## ⚠️ Breaking Changes - [ ] Não há breaking changes - [ ] Breaking changes documentados abaixo ## 🎓 Aprendizados --- ## ✅ Checklist Final Antes de submeter: - [ ] Código revisado localmente - [ ] Testes passam localmente - [ ] Lint passa sem erros - [ ] Build funciona sem warnings - [ ] Testado em Chrome, Firefox e Safari (se UI) - [ ] Testado em mobile (se aplicável) - [ ] Branch está atualizada com main/develop - [ ] Descrição do PR está completa ## 🙏 Reviewers @reviewer1 @reviewer2 --- **Nota**: PRs que não atendem aos itens **Obrigatórios (Blocking)** serão retornados para ajustes antes do merge.