# Analytics-Framework

> **Dokumentationshinweis:** Diese Dokumentation ist vollständig aktualisiert und stellt die aktuelle Implementierung des Analytics-Frameworks korrekt dar.

## Übersicht

Das Analytics-Framework ist ein eigenständiges Tracking- und Analysesystem, das vollständig in die Anwendung integriert ist und ohne externe Dienste auskommt. Es ermöglicht die Erfassung, Speicherung und Analyse von:

- Benutzeraktivitäten (Seitenaufrufe, Interaktionen)
- Systemereignissen (Anwendungsstart, Fehler)
- Leistungsdaten (Speicherverbrauch, Ausführungszeit, Datenbankabfragen)

## Hauptkomponenten

### Analytics-Klasse

Die zentrale API für Tracking-Operationen:

```php
// Klasse initialisieren
$analytics = new Analytics($analyticsManager, $eventDispatcher);

// Event tracken
$analytics->track('event_name', ['property' => 'value']);

// Seite tracken
$analytics->page('/pfad/zur/seite', ['eigenschaft' => 'wert']);

// Benutzer identifizieren
$analytics->user('user_id', ['eigenschaft' => 'wert']);

// Fehler tracken
$analytics->error($exception);
```

### AnalyticsManager

Verarbeitet und speichert Events:

- Wendet Middleware auf Events an
- Puffert Events für effiziente Speicherung
- Verwaltet die Konfiguration
- Steuert die Speicherung in verschiedenen Backends

### Storage-System

Basierend auf dem `StorageInterface` mit verschiedenen Implementierungen:

- `FileStorage`: Speichert Events in Dateien
- Erweiterbar für Datenbank, Redis oder andere Backends

### Middleware-System

```php
$analyticsManager->addMiddleware(function(array $event) {
    // Event verarbeiten oder filtern
    return $event; // oder null um zu verwerfen
});
```

### HTTP-Middleware

Automatisches Tracking von HTTP-Requests und -Responses:

```php
// In Bootstrap oder Application-Klasse
$app->addMiddleware(AnalyticsMiddleware::class);
```

### Dashboard und Berichterstattung

Das `AnalyticsDashboard` bietet Methoden zur Datenanalyse:

- `getEventStats()`: Statistiken zu Events
- `getTopPages()`: Meistbesuchte Seiten
- `getUserStats()`: Benutzerstatistiken
- `getErrorStats()`: Fehlerstatistiken
- `getPerformanceStats()`: Leistungsmetriken

Das Admin-Dashboard ist unter `/admin/analytics` verfügbar.

### Konsolen-Befehle

```bash
# Analytics-Daten löschen
php console analytics:clear [--force]
```

## Integration

### Service-Container

Der Analytics-Service wird automatisch registriert und kann per Dependency Injection verwendet werden:

```php
public function __construct(private readonly Analytics $analytics) {}
```

### Event-Integration

Standardmäßig werden folgende Anwendungsereignisse getrackt:

- Anwendungsstart (`application_booted`)
- Fehlerbehandlung (`error_occurred`)
- Request-Verarbeitung (`request_started`, `request_completed`)

## Konfiguration

Detaillierte Konfigurationsoptionen finden Sie in der [Framework-README](/Framework/Analytics1/README.md).

## Weitere Informationen

- [Framework-Erweiterungsmuster](/docs/framework/ERWEITERUNGSPATTERN.md)
- [Modul-Checkliste](/docs/framework/MODUL-CHECKLISTE.md)
