feat(newwhats): satélite WhatsApp/Secretária IA adaptado ao odonto
Clona o satélite do mercado adaptado ao scoreodonto (ESM, sem PluginManager): - backend/newwhats/: config (ENV), auth (x-nw-key), routes /nw/* (clinica, especialidades, dentistas, procedimentos, planos — multi-tenant por clinica_id), sync-knowledge (base de conhecimento odonto → motor), webhook-receiver (HMAC, enxuto), proxy REST /api/nw/v1/* → motor /api/ext/v1/*, manifest, INTEGRACAO-MOTOR.md. - server.js: registerNewwhats(app, pool) antes do listen. - Removidos (não úteis): media-transcribe (motor já transcreve), smart-router, personas, follow-up-detector, context-builder. - Config por ENV: NEWWHATS_URL/INTEGRATION_KEY/WEBHOOK_SECRET/CLINICA_ID. - ativo::int=1 normaliza boolean vs smallint entre tabelas. - Validado: buildKnowledgeText gera 1195 chars de dados reais; registro ok no express 5.2.1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
// Integração NewWhats (satélite) para o scoreodonto — versão ESM, adaptada do
|
||||
// plugin do mercado. Registra as rotas no app Express existente.
|
||||
//
|
||||
// Uso no server.js:
|
||||
// import { registerNewwhats } from './newwhats/index.js'
|
||||
// registerNewwhats(app, pool)
|
||||
import { createRoutes } from './routes.js'
|
||||
import { createWebhookReceiver } from './webhook-receiver.js'
|
||||
import { createRestProxy } from './proxy.js'
|
||||
import { isConfigured } from './config.js'
|
||||
|
||||
export { syncKnowledge, buildKnowledgeText } from './sync-knowledge.js'
|
||||
|
||||
export function registerNewwhats(app, pool) {
|
||||
// /nw/* — Secretária IA do motor consulta os dados da clínica
|
||||
app.use('/nw', createRoutes(pool))
|
||||
|
||||
// Webhook do motor → satélite (message.new, session.status)
|
||||
app.use(createWebhookReceiver(pool))
|
||||
|
||||
// Proxy REST do inbox: /api/nw/v1/* → motor /api/ext/v1/*
|
||||
// (app.use com prefixo — evita o wildcard '*' que quebra no express 5)
|
||||
app.use('/api/nw/v1', createRestProxy())
|
||||
|
||||
console.log(
|
||||
`[newwhats] integração registrada (/nw, /api/webhook/newwhats, /api/nw/v1/*) — ${isConfigured() ? 'configurada' : 'AGUARDANDO config (NEWWHATS_URL/NEWWHATS_INTEGRATION_KEY)'}`
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user