From a8f439c1cde7d80ad4713dbd00ae5dd9cb28c401 Mon Sep 17 00:00:00 2001 From: Sidney Gomes Date: Tue, 21 Jul 2026 20:30:16 -0300 Subject: [PATCH] docs: update memory and gemini rules with MinIO, Profile Edit and CPFs logic --- gemini.md | 35 +++++++++++++++++++++++++++++++++++ memory.md | 7 ++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/gemini.md b/gemini.md index 4c2e6e9..6a783f8 100644 --- a/gemini.md +++ b/gemini.md @@ -8,6 +8,8 @@ Este arquivo documenta a estrutura completa, configurações de domínio, banco * **Painel do Aluno**: `estudo.microtecinformaticacurso.com.br` * **Painel do Administrador**: `admin-estudo.microtecinformaticacurso.com.br` +* **Armazenamento S3 (MinIO API)**: `s3-estudo.microtecinformaticacurso.com.br` +* **Painel do MinIO (Admin)**: `minio-estudo.microtecinformaticacurso.com.br` O sistema realiza o roteamento automático do frontend via `src/Root.tsx`: * Quando a URL acessada contém a palavra `admin` (`admin-estudo.microtecinformaticacurso.com.br`), o sistema renderiza o `AdminApp.tsx`. @@ -42,6 +44,8 @@ Os dados de acesso para ambiente de testes foram preservados: | **Aluno** | `pedro@microtecflix.com` | `aluno123` | Aluno com mensalidade em atraso (Overdue) | | **Aluno** | `ana@microtecflix.com` | `aluno123` | Aluna com assinatura cancelada | +*Nota: No ambiente Sandbox do Asaas, CPFs/CNPJs estruturalmente inválidos (como `111.111.111-11`) são bloqueados na criação de cobranças Pix. Os usuários de teste (`cus_test`) foram configurados com CPFs matematicamente válidos.* + --- ## 4. Estrutura de Docker & Deployment no Portainer @@ -66,11 +70,38 @@ services: networks: - microtecflix-net + minio-microtecflix: + image: minio/minio:latest + restart: always + command: server /data --console-address ":9001" + environment: + MINIO_ROOT_USER: microtecflix_admin + MINIO_ROOT_PASSWORD: MicrotecFlixS3SecurePass2026! + volumes: + - minio-data-microtecflix:/data + networks: + - microtecflix-net + - network_public + deploy: + replicas: 1 + labels: + - "traefik.enable=true" + - "traefik.http.routers.microtecflix-s3.rule=Host(`s3-estudo.microtecinformaticacurso.com.br`)" + - "traefik.http.routers.microtecflix-s3.entrypoints=websecure" + - "traefik.http.routers.microtecflix-s3.tls.certresolver=leresolver" + - "traefik.http.services.microtecflix-s3.loadbalancer.server.port=9000" + - "traefik.http.routers.microtecflix-minio.rule=Host(`minio-estudo.microtecinformaticacurso.com.br`)" + - "traefik.http.routers.microtecflix-minio.entrypoints=websecure" + - "traefik.http.routers.microtecflix-minio.tls.certresolver=leresolver" + - "traefik.http.services.microtecflix-minio.loadbalancer.server.port=9001" + - "traefik.docker.network=network_public" + microtecflix: image: microtecflix-app:local restart: always depends_on: - postgres-microtecflix + - minio-microtecflix environment: - NODE_ENV=production - PORT=3000 @@ -93,6 +124,10 @@ services: - "traefik.http.routers.microtecflix-admin.tls.certresolver=leresolver" - "traefik.http.services.microtecflix-admin.loadbalancer.server.port=3000" - "traefik.docker.network=network_public" + +volumes: + pgdata-microtecflix: + minio-data-microtecflix: ``` --- diff --git a/memory.md b/memory.md index 2ace506..46d228c 100644 --- a/memory.md +++ b/memory.md @@ -14,6 +14,8 @@ O **MicrotecFlix** é uma plataforma EAD / Streaming de cursos de informática e * 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. ### Funcionalidades do Administrador (`AdminApp.tsx`): * Dashboard com métricas financeiras (MRR, Receita Total, Taxa de Inadimplência, Alunos Ativos). @@ -42,15 +44,18 @@ O **MicrotecFlix** é uma plataforma EAD / Streaming de cursos de informática e * **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 `microtecflix_token`. Qualquer nova rota de API restrita deve utilizar o middleware `authenticateToken`. +1. **Preservação da Autenticação JWT**: O token JWT é armazenado em `localStorage` sob a chave `devflix_token`. Qualquer nova rota de API restrita deve utilizar o middleware `authenticateToken`. 2. **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). 3. **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.