1 Arquitetura
Rafael Alves Lopes edited this page 2026-05-27 15:23:17 -03:00

Arquitetura Geral

Componentes

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

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.