TopSapp/Fiberhome: fix adicionar ONU ao FHTT do Topsapp_part2
Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
1fb51e55c6
commit
6de9aeb810
1 file changed
+46
-31
+46
-31
@@ -6162,50 +6162,65 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
|
||||
const olts = oltsResult.data?.dados?.dados || oltsResult.data?.dados || [];
|
||||
|
||||
// 1. Tentar por SSID (IP de gerência)
|
||||
let oltEncontrada = olts.find(o => o.ssid === onuData.oltHost);
|
||||
// Mapa manual de keywords por oltId/tipo → para busca no campo ssid e nome do TopSapp
|
||||
// Fonte: valores reais de ssid cadastrados no TopSapp
|
||||
const SSID_KEYWORDS = {
|
||||
'fiberhome': ['fiberhome', '172.16.10.6'],
|
||||
'olt_colmeia': ['colmeia'],
|
||||
'olt_canaa': ['canaa'],
|
||||
'olt_canaa2': ['canaa 2', 'canaa2'],
|
||||
'olt_dito': ['dito'],
|
||||
'olt_pedro_afonso': ['pedro', 'afonso'],
|
||||
'olt_canavieiras': ['canavieiras']
|
||||
};
|
||||
|
||||
// 2. Para Datacom: buscar por keyword do oltId no nome da OLT
|
||||
/**
|
||||
* Busca uma OLT na lista pelo campo nome OU ssid usando lista de keywords.
|
||||
* Tenta match com TODOS os tokens primeiro; se falhar, com QUALQUER token.
|
||||
*/
|
||||
const buscarPorKeywords = (keywords) => {
|
||||
const found = olts.find(o => {
|
||||
const haystack = `${o.nome || ''} ${o.ssid || ''}`.toLowerCase();
|
||||
return keywords.every(k => haystack.includes(k));
|
||||
});
|
||||
if (found) return found;
|
||||
return olts.find(o => {
|
||||
const haystack = `${o.nome || ''} ${o.ssid || ''}`.toLowerCase();
|
||||
return keywords.some(k => haystack.includes(k));
|
||||
});
|
||||
};
|
||||
|
||||
let oltEncontrada = null;
|
||||
|
||||
// 1. Match manual pelo tipo (Fiberhome) ou oltId (Datacom)
|
||||
const tipoKey = onuData.tipo === 'fiberhome' ? 'fiberhome' : onuData.oltId;
|
||||
if (tipoKey && SSID_KEYWORDS[tipoKey]) {
|
||||
oltEncontrada = buscarPorKeywords(SSID_KEYWORDS[tipoKey]);
|
||||
if (oltEncontrada) {
|
||||
console.log(`✅ OLT encontrada por mapa manual (${tipoKey}): "${oltEncontrada.nome}" / ssid: "${oltEncontrada.ssid}"`);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Fallback: keyword livre do oltId (Datacom sem mapa definido)
|
||||
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));
|
||||
});
|
||||
}
|
||||
oltEncontrada = buscarPorKeywords(keywords);
|
||||
if (oltEncontrada) {
|
||||
console.log(`✅ OLT encontrada por nome (oltId): "${oltEncontrada.nome}" (keyword: "${keyword}")`);
|
||||
console.log(`✅ OLT encontrada por keyword livre (oltId): "${oltEncontrada.nome}" (keyword: "${keyword}")`);
|
||||
}
|
||||
}
|
||||
|
||||
// 2b. Para Fiberhome: buscar por keyword do oltHost (nome da OLT retornado pelo SSH)
|
||||
// 3. Fallback: keyword livre do oltHost (Fiberhome sem mapa definido)
|
||||
if (!oltEncontrada && onuData.oltHost) {
|
||||
const keyword = onuData.oltHost.toLowerCase();
|
||||
const keywords = keyword.split(/[\s_\-]+/).filter(k => k.length > 1);
|
||||
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));
|
||||
});
|
||||
}
|
||||
const keywords = onuData.oltHost.toLowerCase().split(/[\s_\-]+/).filter(k => k.length > 1);
|
||||
oltEncontrada = buscarPorKeywords(keywords);
|
||||
if (oltEncontrada) {
|
||||
console.log(`✅ OLT encontrada por oltHost: "${oltEncontrada.nome}" (keyword: "${keyword}")`);
|
||||
console.log(`✅ OLT encontrada por keyword livre (oltHost): "${oltEncontrada.nome}" (keyword: "${onuData.oltHost}")`);
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Fallback: primeira OLT disponível
|
||||
// 4. Fallback: primeira OLT disponível
|
||||
if (!oltEncontrada && olts.length > 0) {
|
||||
oltEncontrada = olts[0];
|
||||
console.log(`⚠️ OLT não identificada — usando a primeira disponível: ${oltEncontrada.nome}`);
|
||||
|
||||
Reference in new issue
Block a user