microtecflix/memory.md

5.6 KiB

Contexto de Memória e Arquitetura - MicrotecFlix

Este arquivo registra o contexto de desenvolvimento, arquitetura, esquema de dados e regras de negócio da plataforma MicrotecFlix.


1. Visão Geral do Sistema

O MicrotecFlix é uma plataforma EAD / Streaming de cursos de informática e negócios baseada em assinaturas recorrentes com integração ao gateway de pagamentos Asaas.

Funcionalidades do Aluno (App.tsx):

  • Catálogo de Cursos (Windows 11, Word, Excel, PowerPoint).
  • Player de Vídeo com aulas em streaming (YouTube ou links diretos MP4).
  • Progresso de aula (porcentagem assistida e status de conclusão).
  • Bloco de anotações por aula.
  • Assinatura e checkout integrado via Pix, Boleto e Cartão de Crédito.
  • Perfil Dinâmico: Edição de dados pessoais (Nome, Data de Nascimento, WhatsApp).
  • Upload de Avatar: Integração com armazenamento S3 (MinIO) para hospedar fotos de perfil.
  • Identidade Visual Customizada: Logomarca, slogan e rodapé legais (CNPJ e Endereço) atualizados dinamicamente com base nas configurações ativas do SaaS.

Funcionalidades do Administrador (AdminApp.tsx / AdminDashboard.tsx):

  • Menu Lateral Responsivo (Estilo AgendaPRO) dividido em seções:
    • VISÃO GERAL: Dashboard com métricas financeiras (MRR, Receita Total, Taxa de Inadimplência, Alunos Ativos).
    • GESTÃO: Assinantes, Grade de Cursos, Planos de Combos e Histórico de Pagamentos.
    • SISTEMA: Configurações Asaas, Evolution API, Webhooks Asaas e Configuração do SaaS (onde se alteram o nome, slogan, CNPJ e endereço da plataforma).
  • CRUD de Cursos, Módulos e Aulas.
  • Gestão de Alunos e alteração manual de status de assinatura (ACTIVE, OVERDUE, CANCELED, TRIAL).
  • Visualização do histórico de Webhooks do Asaas.

2. Esquema de Entidades (prisma/schema.prisma / PostgreSQL)

Todo o sistema foi 100% migrado para o PostgreSQL utilizando o Prisma ORM. O antigo arquivo db.json e a função genérica loadDb() foram completamente descartados e removidos da base de código backend (server.ts).

  1. User: Usuários da plataforma (admin ou student) com status de assinatura (ACTIVE, OVERDUE, CANCELED, TRIAL).
  2. Course: Cursos cadastrados com título, descrição, thumbnail, categoria, certificadoMode (FULL_COURSE ou PER_MODULE) e preço avulso/bloqueio.
  3. Module: Módulos organizados sequencialmente por curso.
  4. Lesson: Aulas vinculadas ao módulo com URL de vídeo (youtube ou direct) e conteúdo complementar.
  5. Note: Anotações pessoais feitas pelos alunos por aula.
  6. Progress: Histórico de progresso do aluno por aula (% assistida e completed).
  7. Payment (SubscriptionPayment): Histórico de faturas e cobranças registradas no gateway de pagamentos, linkado a usuários, cursos e planos.
  8. WebhookLog: Registro auditável de webhooks recebidos do Asaas.
  9. ModuleActivity / ModuleGrade: Questionários/Múltipla escolha e pontuações dos alunos, substituindo a antiga matriz JSON de atividades.
  10. Certificate: Certificados ganhos pelos alunos (por Módulo ou por Curso) gerados automaticamente.
  11. Plan: Planos de assinatura (Combos vitálcios, Assinaturas Mensais, Anuais).
  12. Notification: Alertas e avisos aos usuários, gerenciados em tabela relacional em tempo real.
  13. SystemSettings: Configurações dinâmicas do sistema, chaves do Asaas, texto de ajuda, Evolution API, marca SaaS (brandName em vermelho, brandSlogan, cnpj, address) e opção de habilitar/desabilitar boleto bancário (enableBoleto).

3. Infraestrutura & Portainer / Swarm

  • Rede Traefik Public: network_public
  • Rede Interna App-DB: microtecflix-net (Overlay)
  • Containers na Stack:
    • postgres-microtecflix (Porta externa 5435:5432)
    • minio-microtecflix (Porta 9000 para API S3 e 9001 para Web Console)
    • microtecflix (Porta interna 3000, exposto via Traefik HTTPS)
  • Domínios Mapeados:
    • estudo.microtecinformaticacurso.com.br -> Aluno
    • admin-estudo.microtecinformaticacurso.com.br -> Admin
    • s3-estudo.microtecinformaticacurso.com.br -> Bucket S3 (API Público/Uploads)
    • minio-estudo.microtecinformaticacurso.com.br -> Console de Gerenciamento MinIO

4. Diretrizes para Futuras Edições

  1. Preservação da Autenticação JWT: O token JWT é armazenado em localStorage sob a chave devflix_token (alunos) e devflix_admin_token (administradores). Qualquer nova rota de API restrita deve utilizar o middleware authenticateToken.
  2. Segurança do Webhook (Asaas): A rota /api/webhooks/asaas exige validação do header asaas-access-token contra a chave asaasWebhookSecret salva nas Configurações Globais. Caso as chaves divirjam, a requisição sofre rejeição com HTTP 401 Unauthorized e um payload detalhando qual token foi recebido e qual era o esperado.
  3. Liberação de Cursos/Assinaturas: Webhooks com status de confirmação (PAYMENT_CONFIRMED, PAYMENT_RECEIVED) atualizam automaticamente o status da assinatura ou liberam o curso no array unlockedCourses se a validação de segurança passar.
  4. Isolamento de Banco de Dados: O container postgres-microtecflix roda na porta 5435 do host para garantir que não haja conflitos de porta com o banco PostgreSQL de outros projetos (ex: AgendaPRO na porta 5432).
  5. Deploy: O arquivo docker-stack.yml deve ser atualizado sempre que novas variáveis de ambiente ou volumes forem necessários para a stack do Portainer.