"""In-App-Benachrichtigungen erzeugen (v1: kein Push/E-Mail, siehe CLAUDE.md). Kleine Helfer, die Benachrichtigungs-Datensätze anlegen. Sie committen NICHT – das übernimmt der aufrufende Request, damit die Auslöser-Aktion und ihre Hinweise in einer Transaktion landen. Immer team-gescoped. """ from . import db from .models import Benachrichtigung, User from .team_scope import get_active_team_id, team_query def benachrichtigen(user_id, text, url=None, typ=Benachrichtigung.TYP_DIENST): """Einen Hinweis an genau eine Person anlegen.""" db.session.add( Benachrichtigung( team_id=get_active_team_id(), user_id=user_id, typ=typ, text=text, url=url, ) ) def benachrichtigen_team(text, url=None, typ=Benachrichtigung.TYP_NACHRICHT, ausser_user_ids=()): """Einen Hinweis an alle Team-Mitglieder anlegen (optional einige auslassen).""" ausgenommen = set(ausser_user_ids) for user in team_query(User).all(): if user.id in ausgenommen: continue db.session.add( Benachrichtigung( team_id=user.team_id, user_id=user.id, typ=typ, text=text, url=url, ) )