46 lines
3.9 KiB
Markdown
46 lines
3.9 KiB
Markdown
# MicrotecFlix - Regras do Agente (Workspace Rules)
|
|
|
|
Este arquivo define as restrições comportamentais e as diretrizes arquiteturais específicas do MicrotecFlix que o agente deve sempre obedecer em futuras edições.
|
|
|
|
---
|
|
|
|
## 1. Conexão com Banco de Dados
|
|
* **PostgreSQL Dedicado**: O banco de dados PostgreSQL roda em container isolado na porta **`5435:5432`** (evitando conflito com a porta padrão 5432 usada por outros bancos na VPS, como o do AgendaPRO).
|
|
* **Nunca use db.json**: Toda a persistência de dados foi migrada para o PostgreSQL. Não reintroduza o arquivo `db.json` nem funções locais como `loadDb()`.
|
|
* **Prisma Client**: Sempre que fizer modificações em `prisma/schema.prisma`, execute `npx prisma generate` localmente e garanta que `npx prisma db push` seja executado no ambiente do deploy para sincronizar o banco.
|
|
|
|
---
|
|
|
|
## 2. Roteamento de Domínios & Portais
|
|
* **Roteamento no Root**: O arquivo `src/Root.tsx` realiza o roteamento com base no host:
|
|
* Subdomínio com `admin` (`admin-estudo.microtecinformaticacurso.com.br`) renderiza o `AdminApp.tsx`.
|
|
* Subdomínio padrão (`estudo.microtecinformaticacurso.com.br`) renderiza o `App.tsx` (Painel do Aluno).
|
|
* **Mantenha os layouts isolados**: Não misture imports do portal do aluno dentro do administrador e vice-versa.
|
|
|
|
---
|
|
|
|
## 3. Customização SaaS (Branding)
|
|
* **Logomarca Dinâmica**: A logo deve renderizar o prefixo `brandName` em vermelho e a extensão `FLIX` em branco. O slogan abaixo da logo deve carregar de forma dinâmica do estado público de configurações (`SystemSettings`).
|
|
* **CNPJ e Endereço**: Exibir sempre os dados de CNPJ e Endereço legais retornados por `/api/settings` nos rodapés públicos.
|
|
|
|
---
|
|
|
|
## 4. Segurança e Webhooks
|
|
* **Webhook Asaas**: A rota `/api/webhooks/asaas` exige validação do header `asaas-access-token`. Se for incorreto, retorne **HTTP 401** informando o token recebido vs o esperado para facilitar a depuração no painel do Asaas.
|
|
* **PCI-DSS**: Dados confidenciais de cartão (número completo, CVV) **nunca** devem ser persistidos no banco de dados. Use a tokenização da API do Asaas e grave apenas os últimos 4 dígitos e o token de cartão.
|
|
|
|
---
|
|
|
|
## 5. Integração com Evolution API v2 & CI/CD
|
|
* **Parâmetro Integration**: Nas chamadas de criação de instância da Evolution API v2 (`/instance/create`), forneça sempre o parâmetro `"integration": "WHATSAPP-BAILEYS"` para evitar erros `400 Bad Request` na API.
|
|
* **Envio de Mensagens (REST)**: O envio de mensagens deve ser feito via HTTP (usando `fetch`) para a rota `/message/sendText/:instance`, com a `apikey` no Header e utilizando o parâmetro `delay: 1200` para estabilidade. **Não** deve-se utilizar SDK do Baileys diretamente no Node.js para conectar; o servidor deve se comunicar estritamente como cliente REST da API Evolution.
|
|
* **Pipeline do Gitea Runner**: O deploy na VPS é automatizado através de um runner de Gitea Actions conectado ao Portainer. Não há necessidade de build e deploy manual no Portainer ao enviar para a branch `main`.
|
|
|
|
---
|
|
|
|
## 6. Interface do Usuário (UI) & Modais
|
|
* **Proibição de Alertas Nativos**: É **ESTRITAMENTE PROIBIDO** utilizar `alert()`, `window.alert()`, `confirm()`, `window.confirm()` ou `prompt()`.
|
|
* **Sistema de Modais Global**: Todo o aplicativo é envolvido por um `<ModalProvider>`. Utilize o hook `useModal` (importado de `src/contexts/ModalContext.tsx`) que retorna os helpers `{ alert, success, error, confirm }`.
|
|
* **Componentes Compartilhados**: Utilize o componente `PaymentCheckoutCard` para cobranças de planos, combos ou cursos avulsos. O layout é unificado e o componente se adapta dinamicamente às propriedades fornecidas.
|
|
* **Políticas e Termos**: Textos longos de uso e políticas são exibidos via modais (`useModal`) injetados com o conteúdo de banco de dados (`SaaSConfig`), mantendo o aluno no contexto do App sem recarregar a página.
|