From c4caa1c063974f84ca4c5f4473993c84ac6e48b2 Mon Sep 17 00:00:00 2001 From: Rodrigo Bertoldo de Sousa Martins Date: Sun, 29 Mar 2026 12:10:00 -0300 Subject: [PATCH] =?UTF-8?q?datacom:=20faz=20verifica=C3=A7=C3=A3o=20de=20e?= =?UTF-8?q?xistencia=20da=20ONU=20ao=20adicionar=5FFIX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rodrigo Bertoldo de Sousa Martins --- src/bot/handler.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) 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) {