9.6 KiB
9.6 KiB
MEMORY.md - Contexto de Desenvolvimento
📅 Estado Atual (30/04/2026)
- Automação de Mensagens (Cron Jobs): Implementados dois disparadores independentes (
preventivoeatrasado) vianode-cron. - Persistência de Agendamento: Configurações de horário e ativação salvas no
school_datae restauradas automaticamente no boot do servidor. - Monitoramento em Tempo Real: Indicadores visuais (bolinha pulsante) no card de mensagens que refletem o status real do Job no servidor.
- Cobrança Inteligente (Inadimplência): Refatorada lógica para respeitar
sendDaysAfter(carência) erepeatEveryDays(intervalo), evitando spam diário. - Segurança Anti-Spam: Desativado envio imediato de
PAYMENT_OVERDUEvia Webhook para garantir que cobranças ocorram apenas no horário agendado. - Auto-Initialization DB: Script de boot que garante a existência das colunas
overdue_warnings_countelast_overdue_warning_atna tabelaalunos_cobrancas. - Correção de Crash no Portal: Resolvido erro de
.toFixed()que quebrava as abas de "Avaliações" e "Notas" devido ao retorno de tiposNUMERICdo PostgreSQL como strings. - Persistência de UI (Mensagens): Integrada chamada ao
updateDataao salvar agendamentos, garantindo que o estado do toggle não seja perdido ao trocar de aba no Manager. - Próximo Passo: Monitorar o log de disparos automáticos (
[Cron]) e validar a taxa de entrega via Evolution API.
📅 Histórico Anterior (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
normalizePhotoUrlnos módulos de Boletim, Turmas e Frequência. - Estabilização do Build ARM64: Injeção de
max_old_space_size=4096nos 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/servicesno container de produção para permitir o import dostorage.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
arquivoe 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
examIdgarantindo 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 Data Viewer: Implementada a visualização de registros (linhas) diretamente no Database Explorer, com suporte a redimensionamento automático de colunas e truncamento de dados longos.
- Controle de Refação (Retake Policy): Adicionado botão de cadeado nos cards de Avaliações para permitir ou bloquear que alunos refaçam provas no portal (Regra 15).
- UI de Avaliações: Padronização dos botões de edição ("Editar Prova" vs "Editar Atividade") e adição de botão de exclusão rápida direto no card.
- Correção de Vínculo de Notas: Garantido que o
examIdseja sempre salvo nas notas geradas pelo Portal para preenchimento automático do Boletim Escolar no Manager. - Fix Memory Leak: Removido
pool.on('error')que estava dentro da rotaPUT /api/school-data, acumulando listeners a cada salvamento. - Fix SyntaxError (Backticks): Corrigido erro de sintaxe com backticks escapados na rota do Database Explorer que impedia o servidor de iniciar.
- Fix Static Serving Duplicado: Consolidada a entrega de arquivos estáticos (dist) no
manager/server.selfhosted.js, eliminando o erro 404 em produção. - TypeScript Cleanup: Corrigidos erros de tipo
unknownnosreduce()do ReportCard.tsx e removida função órfãcloseModaldo Settings.tsx. - Interface Grade Tipada: Adicionado
examId?: stringà interfaceGradeemtypes.ts, eliminando castsas anyinseguros. - 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) doschool_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-remotautilizando o scriptinjetar_magia.ts. - O sistema agora é 100% Self-Hosted (PostgreSQL e MinIO próprios), sem dependência da nuvem do Supabase.
- Extração de Base64 concluída com sucesso via
- 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
FormDatadireto ao MinIO no componenteStudents.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-datapara salvar no bucketexamesdo 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).
- Foto do Aluno (Manager): Migrado de Base64 para envio via
- 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-hostedrunner (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
- Concluída a Arquitetura de Storage Local (MinIO): Todo o sistema (Tanto portal quanto manager) agora utiliza
FormDatapara envio físico de arquivos aos servidores, salvando apenas aURL públicano banco de dados. - 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.
- Financeiro: Implementar visualização de extrato detalhado e integração com gateway de pagamento direto via cartão.