edumanagerpro2/MEMORY.md

6.8 KiB

MEMORY.md - Contexto de Desenvolvimento

📅 Estado Atual (22/04/2026)

  • Correção do "Bug da Tela Preta" na câmera ao alternar para câmera traseira no celular.
  • Unificação do servidor de produção: Dockerfile agora utiliza server.selfhosted.js (Manager e Portal).
  • Correção dos Cards de Monitoramento (PostgreSQL/MinIO) com tratativa de erro independente.
  • Vacina de cache global: Injeção de normalizePhotoUrl nos módulos de Boletim, Turmas e Frequência.
  • Estabilização do Build ARM64: Injeção de max_old_space_size=4096 nos Dockerfiles para evitar crashes do Vite no Github Actions.
  • Correção de Rota Express 5: Migração de curingas * para Regex para evitar falhas de inicialização no servidor.
  • Correção do Crash 404 no Portal: Injeção da pasta src/services no container de produção para permitir o import do storage.js.
  • Correção das Imagens de Prova: Normalização das URLs nas questões de avaliações (Portal e Manager).
  • Estabilização de CI/CD: Transição para runs-on: self-hosted (ARM64 nativo) eliminando lentidão e crashes do QEMU.
  • Correção do Sino de Notificações: Botões sempre visíveis, suporte a anexo via chave arquivo e exibição do Motivo da Falta direto na lista do sino.
  • Segurança Financeira: Implementada trava de segurança (isCreating) contra cliques múltiplos em formulários financeiros, resolvendo a duplicidade de cobranças no Asaas.
  • Boletim Detalhado (Manager): Refatoração para suportar N avaliações por bimestre, com interface que diferencia Provas de Atividades.
  • Ambiente de Provas (Portal): Implementado modo imersivo com cronômetro pulsante (alerta vermelho < 1min) e etiquetas dinâmicas por tipo de avaliação.
  • Boletim Analítico (Portal): Nova interface de notas que mostra o extrato completo de cada avaliação realizada, separada por matéria e bimestre.
  • Sincronia Total: Integração via examId garantindo que notas do portal preencham automaticamente o boletim administrativo.
  • Financeiro Inteligente: Adicionado suporte ao tipo "Apostila" e grupo "Taxas de Matrícula" (buscadas dos cards de cursos). Implementado autocompletar inteligente que define o tipo de cobrança baseado na referência selecionada.
  • Storage Explorer (MinIO): Criada interface de gerenciamento de arquivos que permite navegar por buckets (pastas), visualizar (lightbox), baixar e excluir arquivos físicos individualmente.
  • Database Explorer (PostgreSQL): Implementado explorador dinâmico que lista todas as tabelas do banco em tempo real, mostrando contagem de registros e tamanho ocupado.
  • Próximo Passo: Iniciar testes de estresse no servidor self-hosted para submissão massiva de fotos de frequência.

💳 Módulo Financeiro (Portal do Aluno)

  • Funcionalidades Implementadas:
    • Cards de resumo (Total em Aberto, Pago, Parcelas).
    • Listagem inteligente de pagamentos com labels dinâmicas (ex: "Parcela 1/3").
    • Lógica de normalização de status: pago, pendente, atrasado, cancelado.
    • Integração dupla para boletos: busca via ID do Asaas e fallback por data/valor no Supabase.
    • Visualização de recibos via link externo ou modal de impressão local.
  • Onde paramos: O sistema de filtros e ordenação está funcional, sincronizando com os parâmetros da URL.

📝 Módulo de Avaliações (Portal do Aluno)

  • Funcionalidades Implementadas:
    • Tela de realização de provas e atividades online com cronômetro e suporte a imagens de apoio (MinIO).
    • Autocorreção 100% Automática: O backend do portal (server.js) recebe as respostas, compara com o gabarito (correctOptionIndex), calcula o percentual de acertos e a nota proporcional ao peso da prova (finalScore).
    • Lançamento Automático no Boletim: A nota calculada é salva no PostgreSQL (provas_submissoes) e injetada instantaneamente na tabela de notas (grades) do school_data.
    • Bloqueio inteligente contra dupla submissão da mesma prova.

⚙️ Módulo de Configurações e Infra (Manager)

  • Arquitetura de Armazenamento: Implementada a transição para Self-Hosted Storage (MinIO).
    • Extração de Base64 concluída com sucesso via migrate_images_to_minio.ts.
    • O banco de dados de produção (PostgreSQL Local) foi populado com sucesso absoluto na VPS através da rota /api/migracao-remota utilizando o script injetar_magia.ts.
    • O sistema agora é 100% Self-Hosted (PostgreSQL e MinIO próprios), sem dependência da nuvem do Supabase.
  • Funcionalidades de Configuração:
    • Gestão multi-unidade (Alternância entre Matriz e Filiais).
    • Validação de CNPJ e busca automática via CEP.
    • Monitoramento de logs de API em tempo real.
  • Histórico de Estabilidade:
    • O sistema voltou para o último estado "verde" conhecido.
  • Refatoração de Uploads (Missão 2):
    • Foto do Aluno (Manager): Migrado de Base64 para envio via FormData direto ao MinIO no componente Students.tsx.
    • Logo da Escola (Settings): Removido falback agressivo para base64 e isolado backend para upload exclusivo no bucket logos.
    • Imagens de Avaliações (Exams): Ajustado para utilizar Rota isolada form-data para salvar no bucket exames do MinIO.
    • Atestados (Portal): Refatorado portal (backend e view) para upload do arquivo binário e salvar a url pública no JSON associado.
    • Frequência e Biometria (AttendanceQuery): Corrigido bug de contagem, deduplicação de aulas e janela de 30 minutos para validação facial.
    • Financeiro (Manager): Migração total para API PostgreSQL local, eliminando o Supabase Sync que causava erros na aba financeira.
    • Telemetria do Sistema (Settings): Cards reais de monitoramento de disco (Postgres) e objetos (MinIO).
  • Exploradores de Infraestrutura: Implementado acesso via botões nos cards de monitoramento para abrir janelas modais de exploração profunda (Arquivos e Banco de Dados) com navegação fluida e lightbox.

🚀 Infraestrutura e Deploy

  • Estado Atual: Pipeline 100% estabilizado no GitHub Actions usando self-hosted runner (Oracle ARM64 nativo).
  • Melhoria: O build agora ocorre diretamente na arquitetura de destino, sem emulação QEMU, garantindo velocidade e estabilidade total.

📋 Próximos Passos Pendentes

  1. Concluída a Arquitetura de Storage Local (MinIO): Todo o sistema (Tanto portal quanto manager) agora utiliza FormData para envio físico de arquivos aos servidores, salvando apenas a URL pública no banco de dados.
  2. Otimização de Build: Re-explorar o cache do Docker ou considerar a remoção do suporte nativo ARM64 se não for estritamente necessário para o servidor final.
  3. Financeiro: Implementar visualização de extrato detalhado e integração com gateway de pagamento direto via cartão.