5.1 KiB
5.1 KiB
Continuar — NewWhats como Motor Central (SaaS multi-tenant)
Instrução inicial para a próxima sessão
Faça uma análise profissional da ideia descrita abaixo. Antes de escrever qualquer código:
- Gere uma lista de tarefas detalhada (fases, dependências, critérios de aceite) e salve em
TAREFAS.md.- Mantenha um relatório vivo de todas as implementações em
RELATORIO.md(o que foi feito, decisões técnicas, pontos de atenção, próximos passos).- Regra-ouro: toda funcionalidade nova deve ser pensada e entregue como plugin (em
/plugins/<nome>/commanifest.json, hooks, config_schema). Nada vai direto ao core se couber como plugin.
Contexto do projeto
- Projeto motor:
/home/deploy/projetos/newwhats.local— já possui Baileys (WhatsApp), inbox, sessões, storage (Wasabi), sistema de plugins estilo WordPress, e API de pareamento OTP (/api/pair/*) comintegration_key. - Projetos satélites: múltiplos sistemas (ex.: Alemão Conveniências em
/home/deploy/projetos/alemaoconveniencias.local) que não devem instalar Baileys. Devem consumir o motor via API autenticada porintegration_key. - Já implementado: pair system (OTP por e-mail), plugin
newwhatsno Alemão comx-nw-keyauth, modal de pareamento em 3 passos no dashboard. - Falta: expor inbox, sessões e secretária virtual como serviço consumível pelos satélites.
Ideia a analisar
Transformar o NewWhats em motor SaaS multi-tenant, onde cada projeto satélite é um cliente leve que consome:
- Inbox (chats, mensagens, envio, mídias)
- Sessões (status WA, QR, pareamento de números)
- Secretária virtual (IA com contexto — roda 100% no motor, satélite só consome output)
Arquitetura-alvo
NewWhats (motor)
├─ Baileys + Inbox + Storage + Secretária (IA)
└─ API /api/ext/* (auth: x-nw-key)
│
▼ HTTPS + WebSocket
┌───────┴────────┬──────────┐
Alemão Projeto B Projeto C
(plugin (plugin (plugin
nw-client) nw-client) nw-client)
Decisões propostas (validar antes de implementar)
- Plugin
nw-clientportável em/plugins-sdk/newwhats-client/— reutilizável em todos os satélites, zero dependência de Baileys. - API
/api/ext/*nova (além de/api/pair/*já existente), autenticada porx-nw-key:GET /api/ext/sessionsGET /api/ext/inbox?session=XGET /api/ext/inbox/:chatId/messagesPOST /api/ext/inbox/:chatId/sendPOST /api/ext/secretaria/askWS /api/ext/stream(eventos realtime — fallback polling 5s)
- Secretária virtual sempre no motor — centraliza custo LLM e contexto.
- Isolamento multi-tenant —
integration_keyresolve parauser_id+allowed_sessions[]. Satélite nunca vê dados de outro tenant. - Distribuição do client plugin — opções:
- (a)
npm publish @newwhats/client(registry privado/público) - (b) git submodule
- (c) CLI
nw plugin installque baixa tarball assinado do motor ← recomendado
- (a)
- Tudo como plugin:
- Motor:
plugins/ext-api/(expõe/api/ext/*),plugins/secretaria-virtual/(IA),plugins/realtime-bridge/(WS). - Satélite:
plugins/newwhats-client/(consumidor único, com UI de inbox embutida).
- Motor:
Tradeoffs a documentar no relatório
- WS vs polling — WS é melhor para UX, mas adiciona complexidade de reconexão/auth. V1 polling 5s, V2 WS.
- Proxy de mídias — satélite baixa mídia via motor (
/api/ext/media/:id) ou recebe URL assinada Wasabi? URL assinada é mais leve mas expõe storage. - Rate limit por integration_key — necessário desde o v1 para proteger motor.
- Versionamento da API —
/api/ext/v1/*desde o início.
Pendências herdadas (do project_alemao_plugin_session.md)
aria-hiddenwarning no pairModal (Bootstrap 5 — usarinertou Bootstrap 5.3+).- Inbox no Alemão via plugin — esta é a primeira entrega desta nova fase.
- SMTP não configurado no NewWhats — dev_code exposto na resposta até configurar.
Entregáveis esperados da próxima sessão
TAREFAS.md— backlog fase-a-fase (motor → SDK → satélite → secretária).RELATORIO.md— iniciado com análise profissional da ideia, riscos, e decisões arquiteturais.- Esqueleto dos plugins (manifests + hooks declarados, sem lógica ainda) para validar a forma antes de implementar.
- Pergunta ao usuário: (A) contrato detalhado da API primeiro, ou (B) PoC end-to-end de
/api/ext/inboxno Alemão para validar fluxo.
Referências rápidas
- Sistema de plugins:
backend/src/core/(types, hook-bus, plugin-loader, plugin-registry) - Pair system:
backend/src/modules/pair/pair.routes.ts+pair.service.ts - Plugin consumidor existente:
/home/deploy/projetos/alemaoconveniencias.local/sistema-nuvem/plugins/newwhats/ - Build backend:
npm run buildem/home/deploy/projetos/newwhats.local/backend - Serviços:
newwhats-backend.service(8008),alemaoconveniencias.service(4001)