"""HTML-E-Mail-Vorlagen fuer Magic Links, Einladungen und Benachrichtigungen."""
def magic_link_login_email(username: str, code: str, link: str) -> tuple[str, str]:
"""Erzeugt Login-E-Mail mit Magic Link und Code.
Returns:
(subject, html_body)
"""
subject = f"AegisSight Monitor - Anmeldung"
html = f"""
AegisSight Monitor
Hallo {username},
Klicken Sie auf den Link oder geben Sie den Code ein, um sich anzumelden:
Dieser Link ist 10 Minuten gueltig. Falls Sie diese Anmeldung nicht angefordert haben, ignorieren Sie diese E-Mail.
"""
return subject, html
def incident_notification_email(
username: str,
incident_title: str,
notifications: list[dict],
dashboard_url: str,
) -> tuple[str, str]:
"""Erzeugt Benachrichtigungs-E-Mail fuer Lagen-Updates.
Args:
username: Empfaenger-Name
incident_title: Titel der Lage/Recherche
notifications: Liste von {"text": ..., "icon": ...} Dicts
dashboard_url: Link zum Dashboard
Returns:
(subject, html_body)
"""
subject = f"AegisSight - {incident_title}"
icon_map = {
"success": "✓", # Haekchen
"warning": "⚠", # Warndreieck
"error": "✗", # Kreuz
"info": "ⓘ", # Info-Kreis
}
color_map = {
"success": "#22c55e",
"warning": "#f0b429",
"error": "#ef4444",
"info": "#94a3b8",
}
items_html = ""
for n in notifications:
icon = icon_map.get(n.get("icon", "info"), "ⓘ")
color = color_map.get(n.get("icon", "info"), "#94a3b8")
text = n.get("text", "")
items_html += f"""
{icon}
{text}
"""
html = f"""
AegisSight Monitor
Lagebericht-Benachrichtigung
Hallo {username},
es gibt Neuigkeiten zur Lage {incident_title}:
{items_html}
Diese Benachrichtigung kann in den Einstellungen im Dashboard deaktiviert werden.
"""
return subject, html