first commit

This commit is contained in:
rodrigo committed 2025-08-08 10:22:27 -03:00
commit d0d99063e2
33 files changed
+9595

No files matched your search

+208
View File
@@ -0,0 +1,208 @@
# 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`