fiberhome: add prelimunary add ONU support

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-02-10 19:18:37 -03:00
1 parent ee22ecf693
commit 259e48fa42
1 file changed
+42 -35
+42 -35
View File
@@ -2,6 +2,7 @@ const NLPProcessor = require('../nlp/processor');
const SSHManager = require('../ssh/manager'); const SSHManager = require('../ssh/manager');
const { TopSappManager } = require('../topsapp'); const { TopSappManager } = require('../topsapp');
const FiberhomeManager = require('../fiberhome/manager'); const FiberhomeManager = require('../fiberhome/manager');
const FiberhomeTL1Manager = require('../fiberhome/manager_tl1');
const config = require('../config/config'); const config = require('../config/config');
const logger = require('../utils/logger'); const logger = require('../utils/logger');
const DateProcessor = require('../utils/dateProcessor'); const DateProcessor = require('../utils/dateProcessor');
@@ -13,6 +14,7 @@ class BotHandler {
this.ssh = new SSHManager(); this.ssh = new SSHManager();
this.topsapp = new TopSappManager(); this.topsapp = new TopSappManager();
this.fiberhome = new FiberhomeManager(); this.fiberhome = new FiberhomeManager();
this.fiberhomeTL1 = new FiberhomeTL1Manager();
this.dateProcessor = new DateProcessor(); this.dateProcessor = new DateProcessor();
this.userSessions = new Map(); // Armazena sessões de usuário this.userSessions = new Map(); // Armazena sessões de usuário
this.suporteSessions = new Map(); // Armazena sessões de suporte em andamento this.suporteSessions = new Map(); // Armazena sessões de suporte em andamento
@@ -1081,6 +1083,8 @@ Digite /help para ver todos os comandos disponíveis!
return; return;
} }
console.log(`📝 Criando sessão para usuário ${userId}, serial: ${serialNumber}`);
// Criar sessão para coletar informações // Criar sessão para coletar informações
this.userSessions.set(userId, { this.userSessions.set(userId, {
action: 'adicionar_onu_fiberhome_step1', action: 'adicionar_onu_fiberhome_step1',
@@ -1088,6 +1092,8 @@ Digite /help para ver todos os comandos disponíveis!
timestamp: Date.now() timestamp: Date.now()
}); });
console.log(`✅ Sessão criada. Sessões ativas:`, this.userSessions.size);
// Perguntar o alias/nome do usuário // Perguntar o alias/nome do usuário
await this.bot.sendMessage(chatId, await this.bot.sendMessage(chatId,
`➕ **Adicionar ONU Fiberhome**\n\n` + `➕ **Adicionar ONU Fiberhome**\n\n` +
@@ -1103,6 +1109,10 @@ Digite /help para ver todos os comandos disponíveis!
*/ */
async handleUserSessionInput(chatId, text, userId, session) { async handleUserSessionInput(chatId, text, userId, session) {
try { try {
console.log(`🔄 Processando input de sessão. Action: ${session.action}, Type: ${session.type}, Text: ${text}`);
// Verificar se é sessão baseada em action (Fiberhome ONU)
if (session.action) {
switch (session.action) { switch (session.action) {
case 'adicionar_onu_fiberhome_step1': case 'adicionar_onu_fiberhome_step1':
// Recebeu o nome do usuário, agora perguntar pelo tipo da ONU // Recebeu o nome do usuário, agora perguntar pelo tipo da ONU
@@ -1119,13 +1129,13 @@ Digite /help para ver todos os comandos disponíveis!
}; };
await this.bot.sendMessage(chatId, await this.bot.sendMessage(chatId,
`📡 **Porta PON:** ${session.portAlias}\n\n` + `👤 **Usuário:** ${session.usuario}\n\n` +
'🔌 Selecione o **tipo da ONU**:', '🔌 Selecione o **tipo da ONU**:',
{ reply_markup: keyboard, parse_mode: 'Markdown' } { reply_markup: keyboard, parse_mode: 'Markdown' }
); );
break; return;
case 'adicionar_onu_fiberhome_step5': case 'adicionar_onu_fiberhome_step3':
// Recebeu confirmação de VLAN customizada // Recebeu confirmação de VLAN customizada
const vlanInput = text.trim(); const vlanInput = text.trim();
@@ -1146,14 +1156,29 @@ Digite /help para ver todos os comandos disponíveis!
// Executar adição da ONU // Executar adição da ONU
await this.executarAdicaoOnuFiberhome(chatId, session); await this.executarAdicaoOnuFiberhome(chatId, session);
break; return;
default:
// Sessão desconhecida, limpar
this.userSessions.delete(userId);
await this.bot.sendMessage(chatId, '❌ Sessão expirada. Por favor, comece novamente.');
break;
} }
}
// Verificar se é sessão baseada em type (outros fluxos)
if (session.type) {
switch (session.type) {
case 'waiting_custom_command':
await this.executeCustomCommand(chatId, session.connectionId, text);
this.userSessions.delete(userId);
return;
case 'waiting_username_disconnect':
await this.handleDisconnectUser(chatId, text.trim());
this.userSessions.delete(userId);
return;
}
}
// Estado desconhecido
console.log(`❓ Estado de sessão desconhecido: action=${session.action}, type=${session.type}`);
this.userSessions.delete(userId);
await this.bot.sendMessage(chatId, '❓ Estado de sessão desconhecido. Tente novamente.');
} catch (error) { } catch (error) {
console.error('❌ Erro ao processar input da sessão:', error); console.error('❌ Erro ao processar input da sessão:', error);
this.userSessions.delete(userId); this.userSessions.delete(userId);
@@ -1179,7 +1204,7 @@ Digite /help para ver todos os comandos disponíveis!
); );
// Executar comando TL1 via Fiberhome Manager // Executar comando TL1 via Fiberhome Manager
const resultado = await this.fiberhome.adicionarOnuFiberhome( const resultado = await this.fiberhomeTL1.adicionarOnuFiberhome(
serial, serial,
usuario, usuario,
vlan, vlan,
@@ -1548,25 +1573,8 @@ Digite /help para ver todos os comandos disponíveis!
} }
/** /**
* Lida com input de usuário durante sessões específicas * MÉTODO REMOVIDO - handleUserSessionInput duplicado foi mesclado acima
*/ */
async handleUserSessionInput(chatId, text, userId, session) {
switch (session.type) {
case 'waiting_custom_command':
await this.executeCustomCommand(chatId, session.connectionId, text);
break;
case 'waiting_username_disconnect':
await this.handleDisconnectUser(chatId, text.trim());
break;
default:
await this.bot.sendMessage(chatId, '❓ Estado de sessão desconhecido. Tente novamente.');
}
// Limpar sessão
this.userSessions.delete(userId);
}
/** /**
* Executa comando personalizado em uma conexão SSH * Executa comando personalizado em uma conexão SSH
@@ -2639,7 +2647,7 @@ Digite /help para ver todos os comandos disponíveis!
// Recuperar sessão // Recuperar sessão
const session = this.userSessions.get(userId); const session = this.userSessions.get(userId);
if (!session || session.action !== 'adicionar_onu_fiberhome_step4') { if (!session || session.action !== 'adicionar_onu_fiberhome_step2') {
await this.bot.answerCallbackQuery(callbackQuery.id, '❌ Sessão expirada'); await this.bot.answerCallbackQuery(callbackQuery.id, '❌ Sessão expirada');
await this.bot.sendMessage(chatId, '❌ Sessão expirada. Por favor, comece novamente.'); await this.bot.sendMessage(chatId, '❌ Sessão expirada. Por favor, comece novamente.');
this.userSessions.delete(userId); this.userSessions.delete(userId);
@@ -2647,6 +2655,8 @@ Digite /help para ver todos os comandos disponíveis!
} }
session.onuType = onuType; session.onuType = onuType;
session.action = 'adicionar_onu_fiberhome_step3';
this.userSessions.set(userId, session);
await this.bot.answerCallbackQuery(callbackQuery.id); await this.bot.answerCallbackQuery(callbackQuery.id);
@@ -2681,7 +2691,7 @@ Digite /help para ver todos os comandos disponíveis!
// Recuperar sessão // Recuperar sessão
const session = this.userSessions.get(userId); const session = this.userSessions.get(userId);
if (!session || session.action !== 'adicionar_onu_fiberhome_step2') { if (!session || session.action !== 'adicionar_onu_fiberhome_step3') {
await this.bot.answerCallbackQuery(callbackQuery.id, '❌ Sessão expirada'); await this.bot.answerCallbackQuery(callbackQuery.id, '❌ Sessão expirada');
await this.bot.sendMessage(chatId, '❌ Sessão expirada. Por favor, comece novamente.'); await this.bot.sendMessage(chatId, '❌ Sessão expirada. Por favor, comece novamente.');
this.userSessions.delete(userId); this.userSessions.delete(userId);
@@ -2701,10 +2711,7 @@ Digite /help para ver todos os comandos disponíveis!
await this.executarAdicaoOnuFiberhome(chatId, session); await this.executarAdicaoOnuFiberhome(chatId, session);
} else if (data === 'fh_vlan_custom') { } else if (data === 'fh_vlan_custom') {
// Pedir VLAN customizada // Pedir VLAN customizada - manter sessão no step3 para receber input do usuário
session.action = 'adicionar_onu_fiberhome_step3';
this.userSessions.set(userId, session);
await this.bot.editMessageText( await this.bot.editMessageText(
`🏷️ **VLAN Customizada**\n\n` + `🏷️ **VLAN Customizada**\n\n` +
`Digite o número da VLAN que deseja usar (1-4094):`, `Digite o número da VLAN que deseja usar (1-4094):`,