Files
michaelschiemer/docs/framework/analytics/README.md

159 lines
4.2 KiB
Markdown

# Analytics-Modul Dokumentation
## Übersicht
Das Analytics-Modul ist ein internes Tracking- und Analysesystem, das ohne externe Abhängigkeiten Benutzeraktivitäten, Systemereignisse und Leistungsdaten erfasst und analysiert.
## Kernkomponenten
### Analytics (Analytics.php)
Die Hauptklasse, die als zentraler Einstiegspunkt für das Tracking von Events dient.
**Hauptfunktionen:**
- `track()`: Zeichnet ein generisches Event auf
- `page()`: Spezifisch für Seitenaufrufe
- `user()`: Verfolgt Benutzeridentifikation
- `performance()`: Erfasst Leistungsmetriken
- `error()`: Protokolliert Fehler und Ausnahmen
### AnalyticsManager (AnalyticsManager.php)
Verwaltet die Verarbeitung und Speicherung von Events.
**Hauptfunktionen:**
- `track()`: Verarbeitet Events und wendet Middleware an
- `addMiddleware()`: Fügt Verarbeitungsfunktionen hinzu
- `flush()`: Schreibt gepufferte Events in den Speicher
### StorageInterface und FileStorage
Das Interface definiert die Speichermethoden, FileStorage implementiert die Speicherung in Dateien.
**Hauptoperationen:**
- `store()`: Speichert Events
- `retrieve()`: Ruft Events mit Filtern ab
- `clear()`: Löscht alle gespeicherten Daten
### AnalyticsInitializer (AnalyticsInitializer.php)
Konfiguriert und initialisiert den Analytics-Service beim Anwendungsstart.
**Konfigurationsoptionen:**
- Aktivierung/Deaktivierung
- Auto-Flush und Batch-Größe
- Storage-Typ und Pfad
### AnalyticsMiddleware (AnalyticsMiddleware.php)
HTTP-Middleware zum automatischen Tracking von Requests und Responses.
### AnalyticsDashboard (AnalyticsDashboard.php)
Stellt Methoden für Datenanalyse und -aggregation bereit:
- `getEventStats()`: Ereignisstatistiken
- `getTopPages()`: Meistbesuchte Seiten
- `getUserStats()`: Benutzerstatistiken
- `getErrorStats()`: Fehlerstatistiken
- `getPerformanceStats()`: Leistungsmetriken
### Events
Vordefinierte Event-Typen:
- `AnalyticsEvent`: Basis-Event-Klasse
- `PageViewEvent`: Speziell für Seitenaufrufe
### Controllers
`AdminAnalyticsController`: Stellt das Admin-Dashboard bereit mit:
- Übersichtsseite
- Seitenstatistiken
- Fehlerstatistiken
- Leistungsstatistiken
### Console
`AnalyticsClearCommand`: Konsolenbefehl zum Löschen von Analytics-Daten.
## Konfiguration
Die Konfiguration erfolgt in `src/Config/analytics.php` mit folgenden Optionen:
```php
return [
'enabled' => true, // Aktiviert/deaktiviert das Tracking
'auto_flush' => true, // Automatisches Speichern nach Batch-Größe
'batch_size' => 50, // Anzahl Events pro Batch
'storage' => 'file', // Storage-Backend
'storage_path' => '...', // Speicherpfad
'anonymize_ip' => true, // IP-Anonymisierung
'track_events' => [...] // Zu trackende Events
];
```
## Verwendung
### Basis-Tracking
```php
// Event tracken
$analytics->track('button_click', ['button' => 'signup']);
// Seitenaufruf tracken
$analytics->page('/dashboard', ['section' => 'analytics']);
// Benutzer identifizieren
$analytics->user('user123', ['plan' => 'premium']);
```
### Middleware einrichten
```php
$this->addMiddleware(App\Framework\Analytics\AnalyticsMiddleware::class);
```
### Eigene Middleware hinzufügen
```php
$analyticsManager->addMiddleware(function(array $event) {
// Daten verarbeiten oder filtern
return $event;
});
```
## Datenschutz
Das System bietet integrierte Funktionen zur Anonymisierung personenbezogener Daten:
- IP-Adressen-Anonymisierung (letztes Oktett wird entfernt)
- Konfigurierbare Filterung sensibler Daten durch Middleware
## Erweiterbarkeit
### Eigene Storage-Provider
Implementieren Sie das `StorageInterface` für benutzerdefinierte Speicherlösungen:
```php
class CustomStorage implements StorageInterface
{
public function store(array $events): void { /* ... */ }
public function retrieve(array $filters = []): array { /* ... */ }
public function clear(): void { /* ... */ }
}
```
### Event-Typen erweitern
Erstellen Sie benutzerdefinierte Event-Klassen, die von `AnalyticsEvent` erben:
```php
class CustomEvent extends AnalyticsEvent
{
public function __construct(string $customData, array $additionalProps = [])
{
parent::__construct('custom_event',
array_merge(['custom_data' => $customData], $additionalProps));
}
}
```