datacom: faz verificação de existencia da ONU ao adicionar_FIX

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-03-29 12:10:00 -03:00
1 parent 235e0c0d43
commit c4caa1c063
1 file changed
+25 -2
+25 -2
View File
@@ -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) {