5.6 KiB
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).
User: Usuários da plataforma (adminoustudent) com status de assinatura (ACTIVE,OVERDUE,CANCELED,TRIAL).Course: Cursos cadastrados com título, descrição, thumbnail, categoria, certificadoMode (FULL_COURSEouPER_MODULE) e preço avulso/bloqueio.Module: Módulos organizados sequencialmente por curso.Lesson: Aulas vinculadas ao módulo com URL de vídeo (youtubeoudirect) e conteúdo complementar.Note: Anotações pessoais feitas pelos alunos por aula.Progress: Histórico de progresso do aluno por aula (% assistida ecompleted).Payment(SubscriptionPayment): Histórico de faturas e cobranças registradas no gateway de pagamentos, linkado a usuários, cursos e planos.WebhookLog: Registro auditável de webhooks recebidos do Asaas.ModuleActivity/ModuleGrade: Questionários/Múltipla escolha e pontuações dos alunos, substituindo a antiga matriz JSON de atividades.Certificate: Certificados ganhos pelos alunos (por Módulo ou por Curso) gerados automaticamente.Plan: Planos de assinatura (Combos vitálcios, Assinaturas Mensais, Anuais).Notification: Alertas e avisos aos usuários, gerenciados em tabela relacional em tempo real.SystemSettings: Configurações dinâmicas do sistema, chaves do Asaas, texto de ajuda, Evolution API, marca SaaS (brandNameem 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 externa5435:5432)minio-microtecflix(Porta 9000 para API S3 e 9001 para Web Console)microtecflix(Porta interna3000, exposto via Traefik HTTPS)
- Domínios Mapeados:
estudo.microtecinformaticacurso.com.br-> Alunoadmin-estudo.microtecinformaticacurso.com.br-> Admins3-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
- Preservação da Autenticação JWT: O token JWT é armazenado em
localStoragesob a chavedevflix_token(alunos) edevflix_admin_token(administradores). Qualquer nova rota de API restrita deve utilizar o middlewareauthenticateToken. - Segurança do Webhook (Asaas): A rota
/api/webhooks/asaasexige validação do headerasaas-access-tokencontra a chaveasaasWebhookSecretsalva 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. - 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 arrayunlockedCoursesse a validação de segurança passar. - Isolamento de Banco de Dados: O container
postgres-microtecflixroda 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). - Deploy: O arquivo
docker-stack.ymldeve ser atualizado sempre que novas variáveis de ambiente ou volumes forem necessários para a stack do Portainer.