from enum import Enum from pydantic import BaseModel, Field from datetime import datetime from typing import Any, Optional, Dict class EventType(str, Enum): USER_CREATED = "user.created" USER_UPDATED = "user.updated" USER_DELETED = "user.deleted" USER_LOGIN = "user.login" IMAGE_UPLOADED = "image.uploaded" IMAGE_CACHED = "image.cached" IMAGE_DELETED = "image.deleted" TASK_CREATED = "task.created" TASK_COMPLETED = "task.completed" TASK_FAILED = "task.failed" class Event(BaseModel): event_type: EventType timestamp: datetime = Field(default_factory=datetime.now) service: str data: Dict[str, Any] correlation_id: Optional[str] = None user_id: Optional[str] = None class Config: json_encoders = { datetime: lambda v: v.isoformat() }