"""Pro-User-Benachrichtigungseinstellungen (agent-11 PR3).

Bekannte Keys + Defaults. Ein leeres `notification_prefs`-dict bedeutet „alle an"
(opt-out-Modell). Neue Keys defaulten daher automatisch auf aktiv.
"""
from __future__ import annotations

# key -> (Label, Default-aktiv)
NOTIFICATION_TYPES: dict[str, tuple[str, bool]] = {
    "substitute_assigned": ("Als Vertretung eingetragen", True),
    "pending_approvals": ("Offene Anträge zur Genehmigung (Zusammenfassung)", True),
    "carryover_expiry": ("Resturlaub verfällt bald", True),
    "certificate_overdue": ("Fehlende AU-Bescheinigung (HR)", True),
}


def pref_enabled(user, key: str) -> bool:
    """Ob der User Benachrichtigungen vom Typ `key` erhalten möchte."""
    prefs = getattr(user, "notification_prefs", None) or {}
    default = NOTIFICATION_TYPES.get(key, ("", True))[1]
    return bool(prefs.get(key, default))


def normalize_prefs(prefs: dict | None) -> dict:
    """Nur bekannte Keys übernehmen, auf bool casten."""
    prefs = prefs or {}
    return {k: bool(prefs[k]) for k in NOTIFICATION_TYPES if k in prefs}
