# Comandi di Test - Versioni Semplificate

## File Creati

### Sistema di Addestramento
- **analisys_01.py** - Versione semplificata per addestramento modelli
  - Query database semplificate
  - Solo 50 feature invece di 125
  - Parametri ridotti per velocità massima
  - Timeout di connessione ridotti

### Sistema di Rilevamento  
- **detect_multi_02.py** - Versione semplificata per rilevamento DDoS
  - Compatibile con modelli di analisys_01.py
  - Stessa logica di feature engineering
  - Gestione anomalie semplificata

## Comandi di Test

### 1. Test Connessione Database

```bash
# Test addestramento
python3 analisys_01.py --test

# Test rilevamento (dopo aver addestrato i modelli)
python3 detect_multi_02.py --debug
```

### 2. Addestramento Modelli

```bash
# Addestramento base (50k record max)
python3 analisys_01.py --max-records 50000

# Addestramento con meno record per test veloce
python3 analisys_01.py --max-records 10000

# Addestramento forzato (ignora timestamp)
python3 analisys_01.py --force-training --max-records 20000

# Addestramento con debug
python3 analisys_01.py --debug --max-records 10000
```

### 3. Rilevamento DDoS

```bash
# Rilevamento singolo
python3 detect_multi_02.py --batch-size 5000

# Rilevamento con sensibilità alta (più anomalie)
python3 detect_multi_02.py --sensibility 3 --batch-size 5000

# Rilevamento con sensibilità bassa (meno anomalie)
python3 detect_multi_02.py --sensibility 7 --batch-size 5000

# Rilevamento in ciclo continuo
python3 detect_multi_02.py --ciclo --pausa 30 --batch-size 5000

# Rilevamento con debug
python3 detect_multi_02.py --debug --batch-size 1000
```

## Sequenza di Test Completa

### Passo 1: Test Connessione
```bash
python3 analisys_01.py --test
```
**Risultato atteso:** "Test SUPERATO"

### Passo 2: Addestramento Veloce
```bash
python3 analisys_01.py --max-records 10000
```
**Risultato atteso:** 
- Estrazione dati in <30 secondi
- Addestramento completato in <60 secondi
- Modelli salvati in cartella `models/`

### Passo 3: Verifica Modelli
```bash
ls -la models/
```
**File attesi:**
- `isolation_forest.joblib`
- `lof.joblib` 
- `svm.joblib`
- `ensemble_weights.joblib`
- `preprocessor.joblib`

### Passo 4: Test Rilevamento
```bash
python3 detect_multi_02.py --batch-size 1000 --debug
```
**Risultato atteso:**
- Caricamento modelli OK
- Estrazione dati veloce
- Rilevamento anomalie funzionante

## Parametri Ottimizzati

### analisys_01.py
- `--max-records`: 10000-50000 (default: 50000)
- `--force-training`: Per forzare riaddestramento
- `--test`: Solo test connessione
- `--debug`: Logging dettagliato

### detect_multi_02.py  
- `--batch-size`: 1000-10000 (default: 10000)
- `--sensibility`: 1-10 (default: 5)
  - 1 = massima sensibilità (più anomalie)
  - 10 = minima sensibilità (meno anomalie)
- `--ciclo`: Esecuzione continua
- `--pausa`: Secondi tra cicli (default: 60)
- `--debug`: Logging dettagliato

## Risoluzione Problemi

### Errore "Database non raggiungibile"
```bash
# Verifica credenziali database
export DB_USER=root
export DB_PASSWORD=Hdgtejskjjc0-
export DB_HOST=localhost
export DB_DATABASE=LOG_MIKROTIK
```

### Errore "Modello non trovato"
```bash
# Prima esegui addestramento
python3 analisys_01.py --force-training --max-records 10000
```

### Errore "Nessun dato estratto"
```bash
# Verifica tabella Esterna
python3 analisys_01.py --test
```

### Performance lente
```bash
# Riduci batch size
python3 analisys_01.py --max-records 5000
python3 detect_multi_02.py --batch-size 1000
```

## Monitoraggio

### File di Log
- `analisys_debug.log` - Log addestramento
- `detect_debug.log` - Log rilevamento

### File di Stato
- `models/last_training.txt` - Timestamp ultimo addestramento
- `last_analyzed_id.txt` - Ultimo ID analizzato per rilevamento

### Statistiche in Tempo Reale
Durante l'esecuzione vengono mostrate:
- Tempo trascorso
- Record processati  
- Anomalie trovate
- IP analizzati

## Note Tecniche

### Differenze dalle Versioni Originali
1. **Query semplificate**: Niente filtri temporali complessi
2. **Feature ridotte**: 50 invece di 125 per velocità
3. **Parametri modelli ridotti**: Meno estimatori, campioni limitati
4. **Timeout ridotti**: 15-30 secondi invece di 5 minuti
5. **Gestione errori migliorata**: Fallback e recovery automatici

### Compatibilità
- **analisys_01.py** genera modelli compatibili con **detect_multi_02.py**
- Stessa logica di feature engineering per consistenza
- Formato file modelli standard joblib

### Performance Attese
- **Addestramento**: 1-3 minuti per 10k record
- **Rilevamento**: 5-15 secondi per 1k record  
- **Memoria**: <1GB RAM utilizzata
- **CPU**: Utilizzo moderato (2-4 core) 