# MYP Error-Monitoring System - Dokumentation

## Übersicht

Das Error-Monitoring System ist eine umfassende Lösung zur automatischen Erkennung, Meldung und Behebung kritischer Systemfehler im MYP (Mercedes-Benz Your Platform) System. Es wurde entwickelt, um Administratoren sofortige Benachrichtigungen über Datenbankfehler, Schema-Probleme und andere kritische Systemprobleme zu geben.

## Problemstellung

**Ursprünglicher Fehler:**
```
sqlite3.OperationalError: no such column: guest_requests.duration_minutes
```

Dieser Fehler trat auf, weil das Datenmodell `GuestRequest` sowohl `duration_min` als auch `duration_minutes` definierte, aber die Datenbank nur die `duration_min` Spalte enthielt. Solche Schema-Inkonsistenzen führten zu Anwendungsfehlern und waren für Admins nicht sichtbar.

## Lösung

### 1. Automatische Datenbank-Migration ⚡

**Datei:** `utils/database_schema_migration.py`

**Erweiterte Funktionalität:**
- Vollständige Schema-Überprüfung für alle Tabellen
- Automatisches Hinzufügen fehlender Spalten
- Backup-Erstellung vor jeder Migration
- Datenmigration (kopiert `duration_min` → `duration_minutes`)

**Neue Spalten hinzugefügt:**
```python
required_columns = {
    'duration_minutes': 'INTEGER',  # ← Lösung für ursprünglichen Fehler
    'file_name': 'VARCHAR(255)',
    'file_path': 'VARCHAR(500)',
    'copies': 'INTEGER DEFAULT 1',
    'updated_at': 'DATETIME DEFAULT CURRENT_TIMESTAMP',
    'approved_at': 'DATETIME',
    'rejected_at': 'DATETIME',
    'approved_by': 'INTEGER',
    'rejected_by': 'INTEGER',
    'otp_expires_at': 'DATETIME',
    'assigned_printer_id': 'INTEGER'
}
```

### 2. Real-Time Error-Monitoring Dashboard 📊

**Datei:** `templates/admin.html`

**Neue Komponenten:**
- **Critical Errors Alert System**: Rote Warnmeldungen für kritische Fehler
- **Database Health Status**: Echtzeit-Überwachung der Datenbankgesundheit
- **Automatic Fix Button**: Ein-Klick-Reparatur für häufige Probleme

**Features:**
- 🚨 Sofortige Benachrichtigungen bei kritischen Fehlern
- 🗄️ Datenbank-Gesundheitsstatus mit Live-Indikatoren
- 🔧 Automatische Reparatur-Buttons
- 📊 System-Metriken (CPU, RAM, Festplatte)

### 3. Comprehensive Health Check API 🔍

**Datei:** `app.py` - Neue Endpoints:

#### `/api/admin/system-health` (GET)

**Funktionalität:**
```python
def api_admin_system_health():
    # 1. Datenbank-Schema-Integrität prüfen
    # 2. Kritische Spalten in wichtigen Tabellen überprüfen  
    # 3. Log-Dateien nach wiederkehrenden Fehlern durchsuchen
    # 4. Drucker-Konnektivität überprüfen
    # 5. System-Performance-Metriken sammeln
    # 6. Letzte Migration-Informationen abrufen
```

**Response-Format:**
```json
{
    "success": true,
    "health_status": "healthy|warning|critical",
    "critical_errors": [
        {
            "type": "database_schema",
            "message": "Datenbank-Schema-Fehler erkannt",
            "severity": "critical",
            "suggested_fix": "Datenbank-Migration ausführen",
            "timestamp": "2025-05-29T18:22:03"
        }
    ],
    "warnings": [...],
    "schema_integrity": "OK|FEHLER",
    "last_migration": "20250529_182203",
    "recent_errors_count": 0,
    "system_metrics": {
        "cpu_usage": 15.2,
        "memory_usage": 42.1,
        "disk_usage": 68.9
    }
}
```

#### `/api/admin/fix-errors` (POST)

**Funktionalität:**
- Führt automatische Datenbank-Migration aus
- Erstellt Backup vor Reparatur
- Protokolliert alle Aktionen
- Gibt detaillierte Ergebnis-Informationen zurück

### 4. Live JavaScript Error-Monitor 🔄

**Datei:** `static/js/admin-live.js`

**Neue Klassen-Methoden:**
- `initErrorMonitoring()`: Startet das Monitoring-System
- `checkSystemHealth()`: Prüft System alle 30 Sekunden
- `updateHealthDisplay()`: Aktualisiert UI-Indikatoren
- `updateErrorAlerts()`: Zeigt/versteckt Error-Alerts
- `fixErrors()`: Führt automatische Reparatur aus
- `showNotification()`: Toast-Benachrichtigungen

**Live-Features:**
- ⏱️ Automatische Überprüfung alle 30 Sekunden
- 🔴 Rote Indikatoren bei kritischen Fehlern
- 🟡 Gelbe Indikatoren bei Warnungen  
- 🟢 Grüne Indikatoren bei gesundem System
- 📱 Toast-Benachrichtigungen für Aktionen

## Technische Details

### Schema-Migration-Prozess

1. **Backup-Erstellung:**
   ```sql
   VACUUM INTO 'database/myp.db.backup_YYYYMMDD_HHMMSS'
   ```

2. **Spalten-Überprüfung:**
   ```python
   cursor.execute("PRAGMA table_info(guest_requests)")
   existing_columns = {row[1]: row[2] for row in cursor.fetchall()}
   ```

3. **Automatisches Hinzufügen:**
   ```sql
   ALTER TABLE guest_requests ADD COLUMN duration_minutes INTEGER
   UPDATE guest_requests SET duration_minutes = duration_min WHERE duration_minutes IS NULL
   ```

### Error-Detection-Algorithmus

1. **Schema-Integrität:** Testet kritische Spalten mit `SELECT ... LIMIT 1`
2. **Log-Analyse:** Durchsucht letzte 100 Log-Zeilen nach "OperationalError"
3. **Performance-Monitoring:** Nutzt `psutil` für System-Metriken
4. **Drucker-Status:** Überprüft offline/online Status
5. **Migration-Historie:** Analysiert Backup-Dateien für letzte Änderungen

## Admin-Interface

### Darstellung im Dashboard

```html
<!-- Critical Error Alert -->
🚨 Kritische Systemfehler erkannt
├── Datenbank-Schema-Fehler: no such column: duration_minutes
│   💡 Suggested Fix: Datenbank-Migration ausführen  
│   📅 29.05.2025, 18:22:03
│   🔧 [Automatisch reparieren] ❌ [Verwerfen] 📊 [Details]

<!-- Database Health Status -->
🗄️ Datenbank-Gesundheitsstatus          🟢 Gesund
├── Letzte Migration: 20250529_182203
├── Schema-Integrität: OK  
└── Letzte Fehler: 0
```

### Benutzerinteraktion

1. **Fehler erkannt** → Alert wird automatisch angezeigt
2. **Admin klickt "Automatisch reparieren"** → Migration wird ausgeführt
3. **Erfolgsmeldung** → ✅ Grüne Toast-Benachrichtigung
4. **System aktualisiert sich** → Health-Check läuft erneut

## Konfiguration

### Monitoring-Intervalle

```javascript
// System Health Check alle 30 Sekunden
setInterval(() => this.checkSystemHealth(), 30000);

// Toast-Notifications verschwinden nach 5 Sekunden  
setTimeout(() => notification.remove(), 5000);
```

### Schwellenwerte

```python
# Performance-Warnungen
cpu_usage > 90%        # Warnung bei hoher CPU-Last
memory_usage > 85%     # Warnung bei hohem RAM-Verbrauch  
recent_db_errors > 5   # Kritisch bei vielen DB-Fehlern
```

## Deployment

### Automatische Aktivierung

Das Error-Monitoring System ist automatisch aktiv sobald:
1. Ein Administrator das Admin-Dashboard öffnet
2. Das JavaScript `admin-live.js` geladen wird
3. Die Health-Check-APIs verfügbar sind

### Voraussetzungen

```python
# Python-Dependencies
import psutil      # Für System-Metriken
import subprocess  # Für automatische Migration
import os          # Für Log-Datei-Zugriff
```

## Logging und Dokumentation

### Error-Logging

```python
app_logger.error(f"Datenbank-Transaktion fehlgeschlagen: {str(e)}")
app_logger.info(f"Automatische Migration erfolgreich ausgeführt von Admin {current_user.email}")
```

### Admin-Aktionen

Alle Admin-Aktionen werden protokolliert:
- Wer hat welche Reparatur ausgeführt
- Zeitstempel aller Aktionen
- Erfolg/Fehlschlag-Status
- Detaillierte Fehlermeldungen

## Wartung

### Regelmäßige Aufgaben

1. **Log-Rotation:** Alte Log-Dateien archivieren
2. **Backup-Cleanup:** Alte Backup-Dateien löschen
3. **Performance-Monitoring:** System-Metriken überwachen
4. **Schema-Updates:** Neue Migrations bei Model-Änderungen

### Troubleshooting

**Problem:** Error-Monitor zeigt nichts an
**Lösung:** 
1. Browser-Konsole überprüfen
2. `/api/admin/system-health` manuell testen
3. Admin-Berechtigung überprüfen

**Problem:** Automatische Reparatur schlägt fehl
**Lösung:**
1. Manuelle Migration: `python utils/database_schema_migration.py`
2. Log-Dateien überprüfen
3. Datenbank-Berechtigungen prüfen

## Ergebnis

✅ **Problem gelöst:** Der ursprüngliche `duration_minutes` Fehler wurde behoben
✅ **Proaktiv:** Zukünftige Schema-Probleme werden automatisch erkannt
✅ **Benutzerfreundlich:** Admins sehen Probleme sofort und können sie mit einem Klick beheben
✅ **Umfassend:** Monitoring von DB, Performance, Logs und System-Gesundheit
✅ **Automatisiert:** Selbst-reparierendes System für häufige Probleme

Das Error-Monitoring System stellt sicher, dass kritische Systemfehler nicht unbemerkt bleiben und Administratoren die Werkzeuge haben, um schnell und effektiv zu reagieren. 