"""
Enum definitions for Alerts Agent database models.
"""
import enum


class AlertSourceEnum(str, enum.Enum):
    """Quelle des Alerts."""
    GOOGLE_ALERTS_RSS = "google_alerts_rss"
    GOOGLE_ALERTS_EMAIL = "google_alerts_email"
    RSS_FEED = "rss_feed"
    WEBHOOK = "webhook"
    MANUAL = "manual"


class AlertStatusEnum(str, enum.Enum):
    """Verarbeitungsstatus des Alerts."""
    NEW = "new"
    PROCESSED = "processed"
    DUPLICATE = "duplicate"
    SCORED = "scored"
    REVIEWED = "reviewed"
    ARCHIVED = "archived"


class RelevanceDecisionEnum(str, enum.Enum):
    """Relevanz-Entscheidung."""
    KEEP = "KEEP"
    DROP = "DROP"
    REVIEW = "REVIEW"


class FeedTypeEnum(str, enum.Enum):
    """Typ der Feed-Quelle."""
    RSS = "rss"
    EMAIL = "email"
    WEBHOOK = "webhook"


class RuleActionEnum(str, enum.Enum):
    """Aktionen fuer Regeln."""
    KEEP = "keep"
    DROP = "drop"
    TAG = "tag"
    EMAIL = "email"
    WEBHOOK = "webhook"
    SLACK = "slack"


class ImportanceLevelEnum(str, enum.Enum):
    """5-stufige Wichtigkeitsskala fuer Guided Mode."""
    INFO = "info"
    PRUEFEN = "pruefen"
    WICHTIG = "wichtig"
    DRINGEND = "dringend"
    KRITISCH = "kritisch"


class AlertModeEnum(str, enum.Enum):
    """Modus fuer Alert-Nutzung."""
    GUIDED = "guided"
    EXPERT = "expert"


class MigrationModeEnum(str, enum.Enum):
    """Wie wurden die Alerts migriert."""
    FORWARD = "forward"
    IMPORT = "import"
    RECONSTRUCTED = "reconstructed"


class DigestStatusEnum(str, enum.Enum):
    """Status der Digest-Generierung."""
    PENDING = "pending"
    GENERATING = "generating"
    SENT = "sent"
    FAILED = "failed"


class UserRoleEnum(str, enum.Enum):
    """Rolle des Nutzers fuer Template-Empfehlungen."""
    LEHRKRAFT = "lehrkraft"
    SCHULLEITUNG = "schulleitung"
    IT_BEAUFTRAGTE = "it_beauftragte"
