Skip to content

Auditoria Completa: Seção Resultados — Split + Migração React Query

Data: 2026-03-18 Última atualização: 2026-03-28 Status: ✅ Concluído — todas as 4 fases executadas


Inventário de Arquivos (Atualizado)

ArquivoLinhasPapelEstado React Query
resultados/index.tsxBarrel re-exportOK
resultados-lista.tsx~500Lista geral de resultadosOK — 100% RQ
resultados-detalhes.tsx~400Detalhes de uma olimpíada (orquestrador)OK — 100% RQ
detalhes-header.tsx~120Header + stats cardsOK — props
detalhes-fases-toolbar.tsx~100Fases + açõesOK — props
detalhes-filtros.tsx~100Filtros + paginaçãoOK — props
detalhes-tabela.tsx~100Tabela + deleteOK — props
nota-corte-modal.tsx~90Modal de nota de corteOK — props
premiacao-faixas-modal.tsx~120Modal de faixasOK — props
premiacao-manual-modal.tsx~593Modal premiação manualOK — props
selecao-metodo-modal.tsx~76Modal seleção de métodoOK — props
inserir-dialog.tsx~270Wizard inserção (orquestrador)OK — RQ via hooks
inserir-utils.ts~65Tipos + helpers purosOK — sem React
inserir-step-selecao.tsx~120Step 1: seleção olimpíada/fase/nívelOK — props
inserir-step-upload.tsx~230Step 2: upload + manualOK — props
inserir-step-preview.tsx~150Step 3: confirmaçãoOK — props
inserir-step-processando.tsx~120Step 4: progressoOK — props
helpers.ts~50Badges/formattersOK — sem React
useGestaoResultados.ts~429Hook de dados de resultadosOK — 100% RQ
useOlimpiadasCoordenador.ts~452Hook olimpíadas (coordenador)OK — 100% RQ
useGestaoAlunos.ts~381Hook de alunosOK — 100% RQ
useImportacaoResultados.ts~191Sessão importação backgroundExceção válida — polling
useImportacaoSessao.ts~375Sessão importação alunosExceção válida — polling

Fases Concluídas

Fase 1: Split de componentes ✅

  • Monólito resultados-olimpiada-detalhes.tsx (1176 linhas) → 7 arquivos
  • Monólito resultados.tsx (746 linhas) → resultados-lista.tsx
  • Movidos para src/components/coordenador/resultados/

Fase 2: Migração useOlimpiadasCoordenador para React Query ✅

  • Hooks useQuery para olimpíadas aderidas e detalhes
  • Mutations com invalidação de cache
  • olimpiadas.tsx atualizado

Fase 3: Migração useGestaoAlunos (parcial) ✅

  • useAlunosListagem com React Query
  • Hook legado mantido para alunos-escola.tsx

Fase 4: Split do inserir-dialog.tsx ✅ (2026-03-28)

  • Monólito de 1143 linhas → 5 arquivos
  • inserir-utils.ts — tipos + helpers puros (safeParseNumber, detectColumn, COLUMN_PATTERNS)
  • inserir-step-selecao.tsx — Step 1: seleção olimpíada/fase/nível
  • inserir-step-upload.tsx — Step 2: upload planilha + entrada manual
  • inserir-step-preview.tsx — Step 3: preview + conflitos
  • inserir-step-processando.tsx — Step 4: progresso importação
  • inserir-dialog.tsx — orquestrador ~270 linhas (estado + hooks + renderização)
  • Zero mudança funcional — split mecânico

Exceções — NÃO migrar para React Query

ArquivoRazão
useImportacaoResultados.tsEstado efêmero + polling
useImportacaoSessao.tsEstado efêmero + polling