fix(local-flow): flujo completo funciona en modo local
- saludMonday: cache modo_local_forzado con _modoLocalDb + setModoLocalDb - index.ts: eagerly carga modo_local_forzado al startup - convertirLeadEndpoint: crea LeadCaptura OPORTUNIDADES para ids loc_* - escaneoOportunidades: crea LeadCaptura APARTADO con usuarioId y oportunidadId - Mi día: esMio para apartados incluye oportunidadId Flujo verificado en modo local: 1. Lead loc_* creado y asignado al capturista 2. Cambio de estado funciona (CONTACTADO → CALIFICADO) 3. Agendo crea oportunidad local (loc_*) 4. Aparto crea apartado local vinculado 5. Cola sync: 9 operaciones pendientes para cuando Monday vuelva 6. Mi día muestra apartados correctamente
This commit is contained in:
@@ -153,7 +153,11 @@ if (config.automatizaciones.enabled) {
|
||||
}
|
||||
|
||||
// Precarga de configuraciones desde DB (modo_local_forzado, etc.)
|
||||
void configService.refrescarCache().catch((err: unknown) =>
|
||||
void configService.refrescarCache().then(() => {
|
||||
const modoLocal = configService.obtenerConfigSync('modo_local_forzado') === 'true'
|
||||
saludMonday.setModoLocalDb(modoLocal)
|
||||
if (modoLocal) console.log('[startup] MODO LOCAL FORZADO activo (DB)')
|
||||
}).catch((err: unknown) =>
|
||||
console.error('[startup] Error precargando config cache:', err),
|
||||
)
|
||||
|
||||
|
||||
@@ -20,6 +20,9 @@ export const FALLOS_PARA_CAER = 3
|
||||
export type PingMonday = () => Promise<boolean>
|
||||
|
||||
export class SaludMondayService {
|
||||
private _modoLocalDb = false
|
||||
|
||||
setModoLocalDb(v: boolean) { this._modoLocalDb = v }
|
||||
private mondayOk = true
|
||||
private fallosConsecutivos = 0
|
||||
private pingFn: PingMonday | null = null
|
||||
@@ -58,12 +61,20 @@ export class SaludMondayService {
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
const cs = require('./config.service.js') as typeof import('./config.service.js')
|
||||
forzadoDb = cs.obtenerConfigSync('modo_local_forzado') === 'true'
|
||||
const syncVal = cs.obtenerConfigSync('modo_local_forzado')
|
||||
if (syncVal !== undefined) {
|
||||
forzadoDb = syncVal === 'true'
|
||||
} else {
|
||||
// Cache no cargado aún: intentar async (fire-and-forget para la próxima vez)
|
||||
cs.obtenerConfig('modo_local_forzado').then((v) => {
|
||||
if (v === 'true') this._modoLocalDb = true
|
||||
}).catch(() => {})
|
||||
}
|
||||
} catch {
|
||||
// configService no disponible (tests aislados, DB no inicializada)
|
||||
}
|
||||
const forzadoEnv = process.env.MODO_LOCAL_FORZADO === 'true'
|
||||
return this.mondayOk && !forzadoDb && !forzadoEnv
|
||||
return this.mondayOk && !forzadoDb && !this._modoLocalDb && !forzadoEnv
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user