181 Zeilen
5.1 KiB
Python
181 Zeilen
5.1 KiB
Python
"""
|
|
Analytics Service Interface - Domain Service für Analytics und Reporting
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import List, Optional, Dict, Any, Union
|
|
from datetime import datetime, timedelta
|
|
|
|
from domain.entities.account_creation_event import AccountCreationEvent
|
|
from domain.entities.error_event import ErrorEvent
|
|
from domain.value_objects.error_summary import ErrorSummary
|
|
from domain.value_objects.report import Report, ReportType
|
|
|
|
|
|
class IAnalyticsService(ABC):
|
|
"""
|
|
Interface für Analytics Service.
|
|
Definiert die Geschäftslogik für Event-Tracking und Reporting.
|
|
"""
|
|
|
|
@abstractmethod
|
|
def log_event(self, event: Union[AccountCreationEvent, ErrorEvent, Any]) -> None:
|
|
"""
|
|
Loggt ein Event für spätere Analyse.
|
|
|
|
Args:
|
|
event: Zu loggendes Event
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_success_rate(self,
|
|
timeframe: Optional[timedelta] = None,
|
|
platform: Optional[str] = None) -> float:
|
|
"""
|
|
Berechnet die Erfolgsrate für Account-Erstellung.
|
|
|
|
Args:
|
|
timeframe: Optional - Zeitrahmen für Berechnung
|
|
platform: Optional - Spezifische Plattform
|
|
|
|
Returns:
|
|
Erfolgsrate zwischen 0.0 und 1.0
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_common_errors(self,
|
|
limit: int = 10,
|
|
timeframe: Optional[timedelta] = None) -> List[ErrorSummary]:
|
|
"""
|
|
Holt die häufigsten Fehler.
|
|
|
|
Args:
|
|
limit: Maximale Anzahl von Fehlern
|
|
timeframe: Optional - Zeitrahmen für Analyse
|
|
|
|
Returns:
|
|
Liste von Fehler-Zusammenfassungen
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def generate_report(self,
|
|
report_type: ReportType,
|
|
start: datetime,
|
|
end: datetime,
|
|
platforms: Optional[List[str]] = None) -> Report:
|
|
"""
|
|
Generiert einen detaillierten Report.
|
|
|
|
Args:
|
|
report_type: Typ des Reports
|
|
start: Startdatum
|
|
end: Enddatum
|
|
platforms: Optional - Filter für spezifische Plattformen
|
|
|
|
Returns:
|
|
Generierter Report
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_real_time_metrics(self) -> Dict[str, Any]:
|
|
"""
|
|
Holt Echtzeit-Metriken für Dashboard.
|
|
|
|
Returns:
|
|
Dictionary mit aktuellen Metriken
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def track_performance(self,
|
|
metric_name: str,
|
|
value: float,
|
|
tags: Optional[Dict[str, str]] = None) -> None:
|
|
"""
|
|
Trackt eine Performance-Metrik.
|
|
|
|
Args:
|
|
metric_name: Name der Metrik
|
|
value: Wert der Metrik
|
|
tags: Optional - Zusätzliche Tags
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_account_creation_timeline(self,
|
|
hours: int = 24,
|
|
platform: Optional[str] = None) -> Dict[str, Any]:
|
|
"""
|
|
Holt Timeline der Account-Erstellungen.
|
|
|
|
Args:
|
|
hours: Anzahl Stunden zurück
|
|
platform: Optional - Spezifische Plattform
|
|
|
|
Returns:
|
|
Timeline-Daten für Visualisierung
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def analyze_failure_patterns(self,
|
|
timeframe: Optional[timedelta] = None) -> Dict[str, Any]:
|
|
"""
|
|
Analysiert Muster in Fehlern.
|
|
|
|
Args:
|
|
timeframe: Optional - Zeitrahmen für Analyse
|
|
|
|
Returns:
|
|
Dictionary mit Fehler-Mustern und Insights
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_platform_comparison(self,
|
|
timeframe: Optional[timedelta] = None) -> Dict[str, Any]:
|
|
"""
|
|
Vergleicht Performance zwischen Plattformen.
|
|
|
|
Args:
|
|
timeframe: Optional - Zeitrahmen für Vergleich
|
|
|
|
Returns:
|
|
Dictionary mit Plattform-Vergleichsdaten
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def export_data(self,
|
|
format: str = "json",
|
|
start: Optional[datetime] = None,
|
|
end: Optional[datetime] = None) -> bytes:
|
|
"""
|
|
Exportiert Analytics-Daten.
|
|
|
|
Args:
|
|
format: Export-Format ("json", "csv", "excel")
|
|
start: Optional - Startdatum
|
|
end: Optional - Enddatum
|
|
|
|
Returns:
|
|
Exportierte Daten als Bytes
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def cleanup_old_events(self, older_than: datetime) -> int:
|
|
"""
|
|
Bereinigt alte Events.
|
|
|
|
Args:
|
|
older_than: Lösche Events älter als dieses Datum
|
|
|
|
Returns:
|
|
Anzahl gelöschter Events
|
|
"""
|
|
pass |