Adicionar Arquitetura

Rafael Alves Lopes 2026-05-27 15:23:17 -03:00
parent 3b0f88a079
commit 233d6a5743

85
Arquitetura.md Normal file

@ -0,0 +1,85 @@
# Arquitetura Geral
## Componentes
```mermaid
flowchart LR
Usuario[Usuario Web] --> Frontend[Frontend React/Vite]
Frontend --> Backend[Backend NestJS API]
Frontend <--> Socket[Socket.IO]
Socket <--> Backend
Backend --> Postgres[(PostgreSQL externo)]
Backend --> LDAP[LDAP / Active Directory]
Backend --> Microsoft[Microsoft Entra ID]
Backend --> WhatsApp[WhatsApp Web / whatsapp-web.js]
Backend --> Puppeteer[Puppeteer / Chromium]
WhatsApp --> Cliente[Cliente WhatsApp]
```
## Repositorio
```txt
omnichannel/
├── backend/ # API NestJS
├── frontend/ # SPA React/Vite
├── database/migrations/ # SQL de schema e dados iniciais
├── docs/ # Wiki operacional
└── docker-compose.yml # Orquestracao local/deploy simples
```
## Backend
Responsabilidades:
- autenticar usuarios;
- sincronizar usuario/perfil/especialidade;
- conectar WhatsApp Web;
- controlar fila e atribuicao;
- expor API admin/supervisor/agente;
- emitir eventos realtime via Socket.IO.
Principais modulos:
- `auth`
- `admin`
- `whatsapp`
## Frontend
Responsabilidades:
- login;
- home por perfil;
- chat em tempo real;
- administracao;
- supervisor/operacao;
- abertura ativa;
- contatos;
- conteudos da IA e fluxo do bot.
## Banco
PostgreSQL externo armazena:
- usuarios e provedores;
- perfis e areas;
- atribuicoes WhatsApp;
- templates;
- agenda;
- presenca;
- bot flow;
- conteudos da IA;
- auditoria.
O banco nao e criado pelo Docker Compose deste repositorio. A aplicacao apenas consome uma instancia PostgreSQL ja provisionada.
## Comunicacao em tempo real
O backend recebe eventos do WhatsApp e repassa ao frontend via Socket.IO. O frontend tambem faz polling/chamadas HTTP para dados estruturados.
## Pontos criticos
- WhatsApp Web depende de sessao e Chromium.
- Migrations ainda precisam de runner formal.
- JWT ainda precisa virar guard real no backend.
- Algumas metricas ainda usam dados de apoio/simulados.