# Funcionalidade: Remover ONU ## Descrição Nova funcionalidade implementada para remover ONUs completamente das OLTs, incluindo a interface e o service-port. ## Como Usar ### Comando de Texto ``` remover onu SERIAL_DA_ONU remover SERIAL_DA_ONU deletar onu SERIAL_DA_ONU apagar SERIAL_DA_ONU ``` ### Exemplos - `remover onu FHTT12345678` - `remover DACM91569513` - `deletar onu ABCD12345678` ## Fluxo de Operação ### 1. Comando Inicial O usuário digita o comando com o serial da ONU que deseja remover. ### 2. Seleção da OLT O bot apresenta uma lista das OLTs disponíveis para o usuário escolher onde buscar a ONU. ### 3. Busca da ONU O sistema busca a ONU pelo serial na OLT selecionada e localiza: - Slot da ONU - ONU ID - Service-port associado ### 4. Confirmação Antes de remover, o bot exibe todas as informações encontradas e pede confirmação: - Serial da ONU - Localização (slot e ONU ID) - Service-port - OLT selecionada ### 5. Remoção Após confirmação, o sistema executa automaticamente: ```bash config interface gpon SLOT no onu ONU_ID top no service-port SERVICE_PORT_ID commit top exit exit ``` ## Comandos SSH Executados ### Busca do Service-port ```bash show running-config service-port | context-match "gpon SLOT onu ONU_ID" ``` ### Remoção da ONU ```bash config interface gpon 1/1/3 # Exemplo de slot no onu 0 # Exemplo de ONU ID top no service-port 102 # Exemplo de service-port commit top exit exit ``` ## Recursos de Segurança ### Confirmação Obrigatória - Sistema exige confirmação explícita antes de remover - Exibe todas as informações da ONU antes da remoção - Aviso de que a ação não pode ser desfeita ### Validação de Dados - Verifica se a ONU existe na OLT selecionada - Localiza o service-port automaticamente - Confirma todas as informações antes de proceder ### Processo Controlado - Usa shell interativo para manter contexto - Timeout de segurança (60 segundos) - Logging detalhado de todas as operações ## Tratamento de Erros ### ONU Não Encontrada - Mensagem clara informando que a ONU não foi encontrada - Sugestão para verificar serial ou tentar outra OLT ### Erro de Conexão - Informa problemas de conectividade com a OLT - Sugere tentar novamente ### Service-port Não Encontrado - Caso o service-port não seja localizado - Exibe saída dos comandos para diagnóstico ### Timeout - Processo é interrompido após 60 segundos - Conexão é fechada adequadamente ## Resultados ### Sucesso ``` ✅ ONU Removida com Sucesso! 📱 Serial: FHTT12345678 📍 Localização: Slot 1/1/3, ONU 0 🔌 Service-port: 102 🏢 OLT: DITO ✅ Status: ONU removida completamente 🗑️ Ações realizadas: • Removida interface ONU • Removido service-port • Configuração commitada 💡 A ONU pode ser reconfigurada quando necessário ``` ### Erro ``` ❌ Erro na Remoção 📱 Serial: FHTT12345678 📍 Localização: Slot 1/1/3, ONU 0 🔌 Service-port: 102 🏢 OLT: DITO ❌ Erro: [Descrição do erro] 🔄 Verifique o status da ONU ou tente novamente ``` ## Arquivos Modificados ### 1. `src/ssh/manager.js` - `findServicePort()` - Localiza service-port de uma ONU - `parseServicePort()` - Extrai service-port da saída SSH - `removeOnu()` - Remove ONU completa (shell interativo) - `removeOnuBySerial()` - Processo completo por serial ### 2. `src/nlp/processor.js` - Adicionado 'remover_onu' aos actionSynonyms - Novos padrões regex para comandos de remoção - `looksLikeOnuSerial()` - Valida formato de serial ### 3. `src/bot/handler.js` - `handleRemoverOnu()` - Interface para comando remover - `handleRemoveOnuCallback()` - Callback para seleção de OLT - `handleConfirmRemoveCallback()` - Callback para confirmação - Atualização da mensagem de help ## Considerações Técnicas ### Performance - Processo otimizado em 3 etapas bem definidas - Uso de shell interativo para operações complexas - Timeout adequado para operações da OLT ### Confiabilidade - Validação em todas as etapas - Rollback não implementado (por design do equipamento) - Logs detalhados para troubleshooting ### Usabilidade - Interface intuitiva com botões - Mensagens claras e informativas - Confirmação visual antes da ação ## Limitações 1. **Irreversibilidade**: Ação não pode ser desfeita 2. **Timeout**: Operações longas podem exceder 60s 3. **Dependência SSH**: Requer conectividade estável 4. **Permissões**: Usuário SSH deve ter privilégios admin ## Próximas Melhorias 1. **Log de Auditoria**: Registrar todas as remoções 2. **Backup de Configuração**: Salvar config antes de remover 3. **Remoção em Lote**: Remover múltiplas ONUs 4. **Validação Avançada**: Verificar se ONU está offline ## Teste da Funcionalidade ### Cenário de Teste 1. Digite: `remover onu FHTT12345678` 2. Selecione uma OLT na lista 3. Verifique as informações exibidas 4. Confirme a remoção 5. Aguarde conclusão da operação ### Comandos de Teste - `remover onu TESTE123456` - `deletar TESTE123456` - `apagar onu TESTE123456` - `remove TESTE123456`