2026-06-25 03:02:52 +02:00
|
|
|
"""Manuell ausgelöster Notruf — vom Nutzer bewusst bestätigt.
|
2026-06-17 05:29:30 +02:00
|
|
|
|
2026-06-25 03:02:52 +02:00
|
|
|
Es gibt KEINE automatische Notfallerkennung (keine Stichwörter, kein LLM): die
|
|
|
|
|
wäre unzuverlässig (Fehlalarme wie verpasste Notfälle) und intransparent. Ein
|
|
|
|
|
Notruf entsteht nur durch eine ausdrückliche Nutzeraktion (Knopf + Bestätigung).
|
2026-06-18 03:24:25 +02:00
|
|
|
|
2026-06-25 03:02:52 +02:00
|
|
|
Die tatsächliche Benachrichtigung von Angehörigen (SMS/Anruf/Webhook) ist noch
|
|
|
|
|
NICHT implementiert. Bis dahin wird der Notruf protokolliert und der Nutzer
|
|
|
|
|
erhält einen klaren Hinweis in seiner Sprache.
|
2026-06-17 05:29:30 +02:00
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
from app.metrics import metrics
|
|
|
|
|
|
2026-06-25 03:02:52 +02:00
|
|
|
# Platzhalter-Hinweis je Sprache, solange die Eskalation noch nicht gebaut ist.
|
|
|
|
|
_NO_NOTIFY_NOTICE: dict[str, str] = {
|
|
|
|
|
"de": "ACHTUNG: Es ist noch keine Benachrichtigung eingebaut.",
|
|
|
|
|
"en": "ATTENTION: No notification has been set up yet.",
|
|
|
|
|
"fr": "ATTENTION : aucune notification n'est encore configurée.",
|
|
|
|
|
"es": "ATENCIÓN: todavía no se ha configurado ninguna notificación.",
|
|
|
|
|
"it": "ATTENZIONE: non è ancora stata configurata alcuna notifica.",
|
|
|
|
|
"pt": "ATENÇÃO: ainda não há nenhuma notificação configurada.",
|
|
|
|
|
"pl": "UWAGA: Nie skonfigurowano jeszcze żadnego powiadomienia.",
|
|
|
|
|
"ar": "تنبيه: لم يتم إعداد أي إشعار بعد.",
|
|
|
|
|
"ru": "ВНИМАНИЕ: Уведомление пока не настроено.",
|
|
|
|
|
"zh": "注意:尚未设置任何通知。",
|
2026-06-17 05:29:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2026-06-25 03:02:52 +02:00
|
|
|
def notify_notice(language: str | None) -> str:
|
|
|
|
|
"""Liefert den Platzhalter-Hinweis in der Nutzersprache (Fallback Deutsch)."""
|
|
|
|
|
return _NO_NOTIFY_NOTICE.get((language or "de").lower(), _NO_NOTIFY_NOTICE["de"])
|
2026-06-18 03:24:25 +02:00
|
|
|
|
|
|
|
|
|
2026-06-25 03:02:52 +02:00
|
|
|
def record_manual_emergency(user, store, language: str | None = None) -> dict:
|
|
|
|
|
"""Protokolliert einen vom Nutzer bestätigten Notruf und liefert den Hinweis.
|
2026-06-18 03:24:25 +02:00
|
|
|
|
2026-06-25 03:02:52 +02:00
|
|
|
Eskalation (Benachrichtigung) folgt später; hier wird nur protokolliert.
|
2026-06-18 03:24:25 +02:00
|
|
|
"""
|
2026-06-25 03:02:52 +02:00
|
|
|
store.log_emergency(user.id, "manual", "Vom Nutzer ausgelöster Notruf")
|
|
|
|
|
metrics.inc("emergency_total", {"category": "manual", "source": "user"})
|
|
|
|
|
return {"category": "manual", "notice": notify_notice(language)}
|