diff --git a/backend/newwhats/index.js b/backend/newwhats/index.js index f8961bd..9eb197c 100644 --- a/backend/newwhats/index.js +++ b/backend/newwhats/index.js @@ -6,11 +6,23 @@ // registerNewwhats(app, pool, { superadminGuard }) import { createRoutes } from './routes.js' import { createWebhookReceiver } from './webhook-receiver.js' -import { createRestProxy } from './proxy.js' +import { createRestProxy, provisionNewwhatsAccount } from './proxy.js' import { getConfig, isConfigured, loadConfigFromDb, saveConfigToDb } from './config.js' +import { Readable } from 'node:stream' export { syncKnowledge, buildKnowledgeText } from './sync-knowledge.js' export { createWsTunnel } from './proxy.js' + +// Provisiona (eager) a conta do email no motor NewWhats, best-effort e idempotente. +// Chamado no cadastro de usuário/clínica do scoreodonto: "assim que a conta nasce +// aqui, já nasce lá — pronta esperando quando a pessoa for mexer com WhatsApp". +export async function provisionNewwhatsAccountEager(pool, email) { + try { + const cfg = getConfig() + if (!cfg.motorUrl || !cfg.integrationKey || !email) return false + return await provisionNewwhatsAccount(pool, cfg, email) + } catch { return false } +} import { createAgendaBridge } from './agenda-bridge.js' // Valida uma chave contra o motor. Envia um email-sonda (a chave mestra exige @@ -36,6 +48,33 @@ export function registerNewwhats(app, pool, opts = {}) { // Auth própria por segredo compartilhado (x-nw-agenda-secret). Server-to-server. app.use('/api/nw/agenda', createAgendaBridge(pool)); + // ── Proxy de MÍDIA: /api/nw/media/* → motor /media/* ─────────────────────── + // A mídia do WhatsApp vive no motor (servida do Wasabi/local, pública). O + // satélite a repassa mantendo same-origin no /