"""Karte 12: periodischer Eskalations-Prüflauf, für einen systemd-Timer gedacht. Deployment-Regel (Prompt 19): nur Skript-Datei hier, Ausführung auf Zielsystem. Direkter DB-Zugriff statt HTTP-Aufruf des Endpunkts (POST /eskalation/pruefen) - kein Admin-Token/Login nötig für einen lokalen Cron/Timer auf demselben Host, gleiches Muster wie scripts/create_admin.py. Aufruf (im aktivierten venv auf dem Server): python -m scripts.eskalation_pruefen """ from __future__ import annotations import asyncio import logging import app.models # noqa: F401 (alle ORM-Modelle registrieren, siehe create_admin.py) from app.db.session import SessionLocal from app.services.eskalation import pruefe_offene_fehlbestaende logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) async def main() -> None: async with SessionLocal() as db: ergebnis = await pruefe_offene_fehlbestaende(db) await db.commit() logger.info( "Eskalations-Prüflauf: %d Erinnerung(en), %d Eskalation(en) verschickt.", ergebnis["erinnerungen"], ergebnis["eskalationen"], ) if __name__ == "__main__": asyncio.run(main())