from datetime import datetime, timezone from typing import Any from sqlalchemy.ext.asyncio import AsyncSession from app.models.historie import Historie async def log( db: AsyncSession, *, zustaendiger_server_id: int, benutzer_id: int | None, ereignistyp: str, entitaet_typ: str, entitaet_id: Any, alter_wert: dict | None = None, neuer_wert: dict | None = None, begruendung: str | None = None, ) -> Historie: """Prompt 13: append-only Audit-Log. Deckt Sprint 5 die Kernkette ab (Kontrolle, Fehlbestand, Nachfüllung, Mindermenge) - Stammdaten-/Vorlagen-/Benutzerverwaltung folgen bei Bedarf mit demselben Muster, hier noch nicht flächendeckend verdrahtet.""" eintrag = Historie( erzeugt_von_server_id=zustaendiger_server_id, zeitpunkt=datetime.now(timezone.utc), benutzer_id=benutzer_id, ereignistyp=ereignistyp, entitaet_typ=entitaet_typ, entitaet_id=str(entitaet_id), alter_wert=alter_wert, neuer_wert=neuer_wert, begruendung=begruendung, ) db.add(eintrag) await db.flush() return eintrag