diff --git a/src/bot/handler.js b/src/bot/handler.js index de9560f..de3a845 100644 --- a/src/bot/handler.js +++ b/src/bot/handler.js @@ -3327,6 +3327,7 @@ Digite /help para ver todos os comandos disponíveis! onuData: { tipo: 'datacom', location: tsLocation, + oltId, oltHost: oltEquipment ? oltEquipment.host : '', serial: serialNumber, portaAlias: slot @@ -6106,11 +6107,33 @@ Digite /help para ver todos os comandos disponíveis! const olts = oltsResult.data?.dados?.dados || oltsResult.data?.dados || []; - // Encontrar OLT pelo SSID (IP de gerência) + // 1. Tentar por SSID (IP de gerência) let oltEncontrada = olts.find(o => o.ssid === onuData.oltHost); + + // 2. Para Datacom: buscar por keyword do oltId no nome da OLT + if (!oltEncontrada && onuData.oltId) { + const keyword = onuData.oltId.replace(/^olt_/, '').replace(/_/g, ' ').toLowerCase(); + const keywords = keyword.split(' ').filter(k => k.length > 2); + oltEncontrada = olts.find(o => { + const nome = (o.nome || '').toLowerCase(); + return keywords.every(k => nome.includes(k)); + }); + // Se não encontrou com todos, tenta com qualquer um + if (!oltEncontrada) { + oltEncontrada = olts.find(o => { + const nome = (o.nome || '').toLowerCase(); + return keywords.some(k => nome.includes(k)); + }); + } + if (oltEncontrada) { + console.log(`✅ OLT encontrada por nome: "${oltEncontrada.nome}" (keyword: "${keyword}")`); + } + } + + // 3. Fallback: primeira OLT disponível if (!oltEncontrada && olts.length > 0) { oltEncontrada = olts[0]; - console.log(`⚠️ OLT não encontrada por SSID "${onuData.oltHost}", usando a primeira: ${oltEncontrada.nome}`); + console.log(`⚠️ OLT não identificada — usando a primeira disponível: ${oltEncontrada.nome}`); } if (!oltEncontrada) {