209 lines
5.0 KiB
Markdown
209 lines
5.0 KiB
Markdown
# 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`
|