El sistema nunca fue realmente multi-tenant en la práctica. El esquema
DB conserva las columnas tenant_id (queda lista para escalar más adelante
sin migración), pero la app ahora resuelve el tenant una sola vez al
arranque y todas las capas leen de un único punto.
- src/modules/shared/tenant.js: nuevo módulo. setTenant() en boot,
getTenantId() lo lee desde cualquier lado.
- index.js: ensureTenant() → setTenant({ id, key }). Sin cambios externos.
- pipeline.resolveTenantId(): pasa de hacer 1-2 queries a DB por turno
a un return sincrónico del id cacheado. Mantiene firma async para no
romper callers.
- intake handlers (sim.js, evolution.js): usan getTenantId() directo,
sin parsing de tenant_key del chat_id ni lookup por canal.
- wooWebhooks: ya no requiere ?tenant_key=... en la query string.
El webhook va al único tenant configurado.
- repo.js: eliminados getTenantByKey() y getTenantIdByChannel() (no más
callers).
Plumbing del parámetro tenantId en signatures de handlers/repos/machine
queda intacto — bajar eso es ruido de alto riesgo y no aporta hoy.
188 tests pasando.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
806 B
JavaScript
31 lines
806 B
JavaScript
/**
|
|
* Mono-tenant: el bot opera con un único tenant resuelto al boot.
|
|
*
|
|
* Toda la infra DB sigue con columnas `tenant_id` (queda lista para
|
|
* multi-tenant futuro) pero la app se inicializa con un único ID
|
|
* y todas las llamadas a "resolver el tenant" devuelven ese mismo.
|
|
*
|
|
* Setup en boot (index.js): `setTenantId(uuid)` después de ensureTenant.
|
|
* Lectura en cualquier capa: `getTenantId()`.
|
|
*/
|
|
|
|
let _tenantId = null;
|
|
let _tenantKey = null;
|
|
|
|
export function setTenant({ id, key }) {
|
|
if (!id) throw new Error("setTenant requires id");
|
|
_tenantId = id;
|
|
_tenantKey = key || null;
|
|
}
|
|
|
|
export function getTenantId() {
|
|
if (!_tenantId) {
|
|
throw new Error("tenant not initialized: call setTenant() at boot");
|
|
}
|
|
return _tenantId;
|
|
}
|
|
|
|
export function getTenantKey() {
|
|
return _tenantKey;
|
|
}
|