from datetime import datetime from typing import Any from uuid import UUID from pydantic import BaseModel, ConfigDict, Field class AccessAttempted(BaseModel): model_config = ConfigDict(extra="ignore") event_id: UUID guest_id: UUID token_id: UUID access_log_id: UUID fingerprint: dict[str, Any] | None = None ip_address: str | None = None user_agent: str | None = None referrer: str | None = None occurred_at: datetime class FraudScored(BaseModel): event_id: UUID guest_id: UUID token_id: UUID access_log_id: UUID score: int = Field(ge=0, le=100) risk: str reasons: list[str] scored_at: datetime