""" Event definitions for microservices communication """ from dataclasses import dataclass from datetime import datetime from typing import Dict, Any, Optional import uuid @dataclass class BaseEvent: """Base event class""" event_id: str event_type: str service_name: str timestamp: datetime data: Dict[str, Any] correlation_id: Optional[str] = None def __post_init__(self): if not self.event_id: self.event_id = str(uuid.uuid4()) if not self.timestamp: self.timestamp = datetime.now(datetime.timezone.utc) # Training Events @dataclass class TrainingStartedEvent(BaseEvent): event_type: str = "training.started" @dataclass class TrainingCompletedEvent(BaseEvent): event_type: str = "training.completed" @dataclass class TrainingFailedEvent(BaseEvent): event_type: str = "training.failed" # Forecasting Events @dataclass class ForecastGeneratedEvent(BaseEvent): event_type: str = "forecast.generated" @dataclass class ForecastRequestedEvent(BaseEvent): event_type: str = "forecast.requested" # User Events @dataclass class UserRegisteredEvent(BaseEvent): event_type: str = "user.registered" @dataclass class UserLoginEvent(BaseEvent): event_type: str = "user.login" # Tenant Events @dataclass class TenantCreatedEvent(BaseEvent): event_type: str = "tenant.created" @dataclass class TenantUpdatedEvent(BaseEvent): event_type: str = "tenant.updated" # Notification Events @dataclass class NotificationSentEvent(BaseEvent): event_type: str = "notification.sent" @dataclass class NotificationFailedEvent(BaseEvent): event_type: str = "notification.failed"