Karte 12: systemd-Timer für den täglichen Eskalations-Prüflauf
scripts/eskalation_pruefen.py ruft den Service direkt gegen die DB auf (kein HTTP/Admin-Token nötig, gleiches Muster wie scripts/create_admin.py). mabea-eskalation.timer läuft täglich 06:00 Uhr. Zeitschwellen bleiben in der DB (eskalation_konfiguration), nicht im Timer. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -21,7 +21,23 @@ Installiert PostgreSQL + nginx, legt DB-Rolle/Datenbank an, richtet nginx als Re
|
||||
3. `alembic upgrade head` ausführen.
|
||||
4. `mabea-backend.service.template` nach `/etc/systemd/system/mabea-backend.service` kopieren (Pfade/User anpassen), `systemctl daemon-reload && systemctl enable --now mabea-backend`.
|
||||
|
||||
## Eskalations-Prüfung einrichten (Karte 12, nach Backend-Deploy)
|
||||
|
||||
```bash
|
||||
cp mabea-eskalation.service.template /etc/systemd/system/mabea-eskalation.service
|
||||
cp mabea-eskalation.timer.template /etc/systemd/system/mabea-eskalation.timer
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now mabea-eskalation.timer
|
||||
```
|
||||
|
||||
Läuft täglich 06:00 Uhr (±5min Streuung), ruft `scripts/eskalation_pruefen.py` direkt
|
||||
gegen die DB auf (kein HTTP/Admin-Token nötig). Zeitschwellen selbst liegen in der DB
|
||||
(`eskalation_konfiguration`, admin-editierbar über `GET/PUT /api/v1/eskalation/konfiguration`),
|
||||
nicht in dieser Timer-Konfiguration. Manueller Testlauf: `systemctl start mabea-eskalation.service`,
|
||||
Ergebnis in `journalctl -u mabea-eskalation.service`.
|
||||
|
||||
## Dateien
|
||||
- `install_server.sh` – Server-Grundausstattung (PostgreSQL, nginx), idempotent
|
||||
- `nginx_mabea.conf.template` – Reverse-Proxy-Vorlage, von `install_server.sh` verwendet
|
||||
- `mabea-backend.service.template` – systemd-Unit-Vorlage für das Backend (noch nicht aktiviert, Pfade anpassen)
|
||||
- `mabea-eskalation.service.template` / `mabea-eskalation.timer.template` – täglicher Eskalations-Prüflauf (Karte 12)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=MABEA Eskalations-Pruefung (Karte 12, oneshot)
|
||||
After=network.target postgresql.service
|
||||
Requires=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=mabea
|
||||
WorkingDirectory=/opt/mabea/backend
|
||||
EnvironmentFile=/opt/mabea/backend/.env
|
||||
ExecStart=/opt/mabea/backend/.venv/bin/python -m scripts.eskalation_pruefen
|
||||
|
||||
NoNewPrivileges=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
PrivateTmp=true
|
||||
ReadWritePaths=/opt/mabea/backend
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=MABEA Eskalations-Pruefung taeglich (Karte 12)
|
||||
|
||||
[Timer]
|
||||
# Taegliche Pruefung reicht - Schwellen (eskalation_konfiguration) sind in Tagen,
|
||||
# ein untertaegiges Intervall brächte keinen echten Zusatznutzen, nur mehr Last.
|
||||
OnCalendar=*-*-* 06:00:00
|
||||
Persistent=true
|
||||
RandomizedDelaySec=300
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
Reference in New Issue
Block a user