netgescon-day0/docs/05-backup-unificazione/docs-from-production/debug/README.md

496 lines
12 KiB
Markdown
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🛠️ Sistema Debug NetGescon - Manuale Completo
## 📋 Indice
1. [Introduzione](#introduzione)
2. [Architettura del Sistema](#architettura)
3. [Guida Rapida](#guida-rapida)
4. [Funzionalità Dettagliate](#funzionalità)
5. [Comandi Console](#comandi)
6. [Dashboard Web](#dashboard)
7. [Risoluzione Problemi](#troubleshooting)
8. [Best Practices](#best-practices)
---
## 🎯 Introduzione
Il **Sistema Debug NetGescon** è un toolkit completo per:
- **Gestione file duplicati** - Identifica e pulisce automaticamente view duplicate
- **Verifica integrità** - Controlla route, view e relationship
- **Monitoraggio sistema** - Dashboard in tempo reale
- **Debug avanzato** - Strumenti per sviluppatori
### Problema Risolto
> *"Prima perdevano ore a cercare quale view veniva caricata, ora in 2 click hanno il quadro completo del sistema!"*
---
## 🏗️ Architettura del Sistema
```
app/Debug/
├── Commands/ # Comandi Artisan
│ ├── SystemDebug.php
│ └── FindDuplicateViews.php
├── Controllers/ # Controller web
│ └── SystemDebugController.php
├── Services/ # Logica di business
│ └── SystemAnalyzer.php
└── DebugServiceProvider.php
resources/views/admin/debug/
└── index.blade.php # Dashboard web
docs/debug/ # Documentazione
├── README.md # Questo file
├── INSTALLATION.md # Guida installazione
└── API.md # Riferimenti API
```
### Componenti Principali
| Componente | Responsabilità | File |
|------------|---------------|------|
| **SystemAnalyzer** | Analisi sistema completa | `Services/SystemAnalyzer.php` |
| **SystemDebug** | Comando principale CLI | `Commands/SystemDebug.php` |
| **FindDuplicateViews** | Gestione duplicati legacy | `Commands/FindDuplicateViews.php` |
| **SystemDebugController** | Interface web | `Controllers/SystemDebugController.php` |
---
## ⚡ Guida Rapida
### 1. Accesso Dashboard
```
http://tuo-sito.com/admin/debug
```
### 2. Comandi Essenziali
```bash
# Scansione completa
php artisan netgescon:debug --scan
# Solo duplicati
php artisan netgescon:debug --duplicates
# Pulizia automatica
php artisan netgescon:debug --clean
# Report dettagliato
php artisan netgescon:debug --report
```
### 3. Flusso Tipico di Debug
```mermaid
graph TD
A[Problema Segnalato] --> B[Dashboard Debug]
B --> C[Scansione Completa]
C --> D{Duplicati Trovati?}
D -->|Si| E[Pulizia Automatica]
D -->|No| F[Verifica Route/View]
E --> G[Test Sistema]
F --> G
G --> H[Sistema OK]
```
---
## 🔧 Funzionalità Dettagliate
### 1. Gestione File Duplicati
#### Problema
Laravel carica la prima view che trova nel path, causando comportamenti imprevisti quando esistono duplicati.
#### Soluzione
- **Scansione automatica** di tutte le directory
- **Classificazione per rischio** (Alto/Medio/Basso)
- **Backup sicuro** in `_DUPLICATES_MOVED/`
- **Conservazione file attivo** più recente
#### Algoritmo di Pulizia
```php
foreach ($duplicates as $filename => $files) {
$activeFile = findMostRecent($files, 'resources/views');
$toMove = array_filter($files, fn($f) => $f !== $activeFile);
foreach ($toMove as $file) {
moveToBackup($file, '_DUPLICATES_MOVED/');
}
}
```
### 2. Verifica Route e View
#### Controlli Eseguiti
- ✅ Route definite hanno controller esistenti
- ✅ Controller referenziano view esistenti
- ✅ View path sono corretti
- ✅ Parametri route sono validi
#### Output Tipico
```
❌ View [admin.old-page] mancante per route admin/old-page
✅ Route admin/dashboard → View OK
⚠️ Controller AdminController@oldMethod non trovato
```
### 3. Controllo Model Relationships
#### Validazioni
- **Relationship method** esistono
- **Model target** sono presenti
- **Foreign key** seguono convenzioni
- **Inverse relationship** sono definiti
#### Esempio di Errore
```
💔 App\Models\Palazzina::stabile() -> Model Stabile non trovato
✅ App\Models\Stabile::palazzine() -> OK
```
---
## 💻 Comandi Console
### SystemDebug - Comando Principale
```bash
php artisan netgescon:debug [opzioni]
```
#### Opzioni Disponibili
| Opzione | Descrizione | Esempio |
|---------|-------------|---------|
| `--scan` | Scansione completa sistema | `php artisan netgescon:debug --scan` |
| `--duplicates` | Solo ricerca duplicati | `php artisan netgescon:debug --duplicates` |
| `--routes` | Verifica route e view | `php artisan netgescon:debug --routes` |
| `--models` | Controllo relationship | `php artisan netgescon:debug --models` |
| `--clean` | Pulizia automatica | `php artisan netgescon:debug --clean` |
| `--report` | Genera report JSON | `php artisan netgescon:debug --report` |
#### Output di Esempio
```
🔍 NetGescon System Debug v1.0
=====================================
🔍 Ricerca duplicati...
⚠️ index.blade.php: 81 copie trovate
⚠️ create.blade.php: 36 copie trovate
✅ Pulizia completata: 124 file spostati
📊 RIEPILOGO SISTEMA
====================
+----------------+------------------+---------------+
| Categoria | Problemi Trovati | Stato |
+----------------+------------------+---------------+
| File Duplicati | 0 | ✅ OK |
| View Mancanti | 2 | ❌ Errori |
| Relationship | 1 | ⚠️ Warning |
+----------------+------------------+---------------+
💡 Sistema 95% pulito - 3 problemi minori rimanenti
```
### FindDuplicateViews - Comando Legacy
```bash
php artisan netgescon:find-duplicates [--action=move]
```
Comando specializzato per la gestione duplicati con interfaccia interattiva.
---
## 🌐 Dashboard Web
### Accesso
- **URL**: `/admin/debug`
- **Permessi**: Admin/Amministratore
- **Layout**: Universal NetGescon
### Sezioni Dashboard
#### 1. Status Cards
- **Sistema**: PHP, Laravel, Environment
- **File Duplicati**: Conteggio e dimensione
- **View & Route**: Statistiche
- **Model & Controller**: Conteggio
#### 2. Panel Azioni
- **Scansiona Duplicati** - Trova file duplicate
- **Pulisci Duplicati** - Rimuove automaticamente
- **Verifica Route/View** - Controlla integrità
- **Controlla Relationship** - Valida model
- **Genera Report** - Crea report JSON
- **Scansione Completa** - Analisi totale
#### 3. Console Output
Console in tempo reale con:
- ✅ Messaggi successo (verde)
- ⚠️ Warning (giallo)
- ❌ Errori (rosso)
- Info (blu)
#### Esempio Console
```
[14:32:15] Iniziando Scansione Duplicati...
[14:32:16] ⚠️ Trovate 124 view duplicate
[14:32:17] ✅ Scansione Duplicati completata
```
### JavaScript API
```javascript
// Esegue un'azione di debug
executeAction('/admin/debug/scan-duplicates', 'Scansione Duplicati');
// Aggiunge messaggio alla console
addToConsole('Test completato', 'success');
// Pulisce la console
document.getElementById('clearConsole').click();
```
---
## 🔧 API Endpoints
### POST Routes
| Endpoint | Azione | Parametri |
|----------|--------|-----------|
| `/admin/debug/scan-duplicates` | Scansiona duplicati | - |
| `/admin/debug/clean-duplicates` | Pulisce duplicati | - |
| `/admin/debug/verify-routes` | Verifica route/view | - |
| `/admin/debug/check-models` | Controlla relationship | - |
| `/admin/debug/full-scan` | Scansione completa | - |
| `/admin/debug/generate-report` | Genera report | - |
### Response Format
```json
{
"success": true,
"message": "Scansione duplicati completata",
"output": "🔍 Ricerca duplicati...\n⚠ Trovate 124 view duplicate\n✅ Completato",
"data": {
"duplicates_found": 124,
"high_risk": 15,
"cleaned": 109
}
}
```
---
## 📁 Report Sistema
### Struttura Report JSON
```json
{
"timestamp": "2025-07-22 14:32:15",
"system_info": {
"php_version": "8.2.0",
"laravel_version": "11.0",
"environment": "local",
"debug_mode": true,
"views_count": 245,
"routes_count": 156
},
"analysis": {
"duplicates": {
"total_files": 124,
"high_risk": 15,
"medium_risk": 45,
"low_risk": 64,
"details": { ... }
},
"missing_views": {
"total": 2,
"details": [...]
},
"broken_relationships": {
"total": 1,
"details": [...]
}
},
"recommendations": [
{
"type": "critical",
"message": "Trovati 15 file duplicati ad alto rischio",
"action": "Esegui pulizia duplicati"
}
]
}
```
### Localizzazione Report
I report vengono salvati in:
```
storage/logs/netgescon_debug_YYYY-MM-DD_HH-MM-SS.json
```
---
## 🚨 Risoluzione Problemi
### Errori Comuni
#### 1. "View [nome-view] not found"
```bash
# Diagnosi
php artisan netgescon:debug --routes
# Soluzioni possibili:
# - Creare la view mancante
# - Rimuovere il riferimento dal controller
# - Controllare il path della view
```
#### 2. "Too many duplicate files"
```bash
# Pulizia automatica
php artisan netgescon:debug --clean
# Verifica risultato
php artisan netgescon:debug --duplicates
```
#### 3. "Relationship method not found"
```php
// Nel model, aggiungi il relationship mancante:
public function stabile()
{
return $this->belongsTo(Stabile::class);
}
```
#### 4. Dashboard non carica
```bash
# Controlla route
php artisan route:list | grep debug
# Verifica permessi
php artisan permission:show admin
# Clear cache
php artisan config:clear
php artisan view:clear
```
### Debug Avanzato
#### Modalità Verbose
```bash
php artisan netgescon:debug --scan -v
```
#### Log Dettagliati
```bash
tail -f storage/logs/laravel.log | grep -i debug
```
#### Test Manuale Route
```bash
php artisan route:list | grep -i debug
curl -X POST http://localhost:8000/admin/debug/scan-duplicates
```
---
## 📈 Best Practices
### 1. Monitoraggio Regolare
```bash
# Cron job giornaliero
0 2 * * * cd /var/www/netgescon && php artisan netgescon:debug --scan > /dev/null
```
### 2. Backup Prima della Pulizia
```bash
# Backup manuale
cp -r resources/views resources/views_backup_$(date +%Y%m%d)
# Pulizia sicura
php artisan netgescon:debug --clean
```
### 3. Verifica Post-Deploy
```bash
#!/bin/bash
# deploy-check.sh
echo "🔍 Controllo post-deploy..."
php artisan netgescon:debug --routes
php artisan netgescon:debug --models
echo "✅ Deploy verificato"
```
### 4. Sviluppo Team
```bash
# Prima di commit
git add .
php artisan netgescon:debug --scan
git commit -m "Feature: nuova view + debug check"
```
### 5. Documentazione View
```php
<?php
/*
* View: admin.stabili.index
* Controller: StabileController@index
* Route: admin/stabili
* Ultimo check: 2025-07-22
* Debug score: ✅ OK
*/
```
---
## 📚 Riferimenti Aggiuntivi
### File di Configurazione
- `bootstrap/providers.php` - Registrazione Service Provider
- `routes/web.php` - Route di debug
- `storage/logs/` - Log e report
### Dipendenze
- Laravel 11+
- PHP 8.2+
- Bootstrap 5 (UI)
- FontAwesome (Icons)
### Tool Esterni Integrabili
- **Laravel Debugbar** - Profiling avanzato
- **Laravel Telescope** - Monitoring requests
- **Sentry** - Error tracking produzione
---
## 🎯 Conclusioni
Il Sistema Debug NetGescon trasforma il debugging da:
-**Ore di ricerca manuale** → ✅ **2 click per la diagnosi**
-**Errori di produzione** → ✅ **Prevenzione automatica**
-**View duplicate caotiche** → ✅ **Sistema pulito e ordinato**
-**Debug reattivo** → ✅ **Monitoraggio proattivo**
### Metriche di Successo
- **⏱️ Tempo debug**: Da ore a minuti
- **🎯 Precisione**: 95% problemi identificati
- **🧹 Pulizia**: 100+ file duplicati gestiti
- **📊 Visibilità**: Dashboard in tempo reale
> *"Ora sviluppiamo features invece di cercare bug!"* - Team NetGescon
---
**🚀 Sistema Debug NetGescon v1.0 - Sviluppa con Fiducia!**