Importação e Exportação
O módulo de Importação e Exportação permite que administradores realizem operações em lote sobre os registros de estudantes, turmas e núcleos. O acesso é restrito a usuários com role ADMIN — os demais perfis (CHAMADOR, RELATORIOS, CADASTRO) não visualizam a página no menu lateral.
A exportação suporta três formatos: CSV (colunas planas, compatível com Excel e Google Sheets), JSON (estrutura aninhada, idêntica ao tipo Student do schema) e Markdown (tabelas formatadas para documentação). Os templates de importação são gerados dinamicamente a partir do fieldManifest.ts, o que garante que estejam sempre alinhados com a versão atual do schema — quando novos campos são adicionados ao cadastro de estudantes, os templates refletem automaticamente a mudança. O nome do arquivo de template inclui a versão do schema (ex.: neemias-template-estudantes-v1.1.0.csv).
O fluxo de importação é projetado para ser seguro e transparente. O usuário arrasta um arquivo .csv ou .json para a zona de upload (ou clica para selecionar), e o formato é detectado automaticamente pelo conteúdo — encoding UTF-8 com BOM é tratado, datas no formato serial do Excel são convertidas, e delimitadores (, ; tab) são reconhecidos. Antes de confirmar, o administrador pode ativar o modo dry-run (pré-visualização), que analisa todas as linhas sem persistir nada, exibindo três seções: linhas prontas para importar (✅), possíveis duplicatas com checkboxes para decisão manual (⚠️) e linhas com erro de validação que serão ignoradas (❌). Cada erro inclui o nome da criança e uma mensagem descritiva em português.
No lado cliente, a importação segue o fluxo arquivo → Dexie (IndexedDB) → syncQueue. Os registros são criados localmente e enfileirados para sincronização com o Worker assim que houver conectividade. A exportação faz o caminho inverso: consulta o IndexedDB via Dexie, serializa os registros no formato escolhido e dispara o download pelo navegador. Alunos com status DELETED são excluídos automaticamente da exportação. O sistema impõe limites de 10 MB por arquivo e 1000 linhas por importação para garantir desempenho mesmo em dispositivos mais lentos.
Para o guia completo com instruções passo a passo, exemplos de arquivo, referência de todos os campos, troubleshooting e perguntas frequentes, consulte o Guia de Importação e Exportação.
⚠️ Seção em expansão.
Fonte: docs/IMPORT-EXPORT.md e app/src/modules/importExport/fieldManifest.ts