Files
scoreodonto.com/backend/newwhats/config.js
T
VPS 4 Builder b21fb0f159 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>
2026-06-28 17:38:36 +02:00

22 lines
901 B
JavaScript

// Config da integração com o motor NewWhats — lida de variáveis de ambiente
// (scoreodonto é ESM e usa dotenv; não há tabela plugin_configs como no mercado).
//
// NEWWHATS_URL URL do motor (ex.: https://newwhats.clube67.com)
// NEWWHATS_INTEGRATION_KEY x-nw-key — valida /nw/* e injetado no proxy
// NEWWHATS_WEBHOOK_SECRET segredo HMAC do webhook (x-nw-signature)
// NEWWHATS_CLINICA_ID qual clínica este satélite atende (multi-tenant)
export function getConfig() {
return {
motorUrl: (process.env.NEWWHATS_URL || '').replace(/\/$/, ''),
integrationKey: process.env.NEWWHATS_INTEGRATION_KEY || '',
webhookSecret: process.env.NEWWHATS_WEBHOOK_SECRET || '',
clinicaId: process.env.NEWWHATS_CLINICA_ID || '',
}
}
export function isConfigured() {
const c = getConfig()
return Boolean(c.motorUrl && c.integrationKey)
}