Zum Hauptinhalt springen

Wartung

Regelmäßige Aufgaben

Die folgenden Befehle sollten regelmäßig ausgeführt werden (z.B. täglich per Cron-Job).

Abgelaufene JWT-Token entfernen

Bereinigt die Token-Blacklist von abgelaufenen Einträgen:

docker exec resource-planning-restapi python manage.py flushexpiredtokens

Abgelaufene Benutzer-Token entfernen

Entfernt abgelaufene Token für Passwort-Reset und E-Mail-Änderung:

docker exec resource-planning-restapi python manage.py remove_outdated_user_tokens

Beispiel Cron-Job

# Täglich um 3:00 Uhr
0 3 * * * docker exec resource-planning-restapi python manage.py flushexpiredtokens
0 3 * * * docker exec resource-planning-restapi python manage.py remove_outdated_user_tokens

Updates

Images aktualisieren

docker compose pull
docker compose up -d

Datenbank-Migrationen werden beim Start des API-Containers automatisch ausgeführt.

Bestimmte Version

Passen Sie das Image-Tag in der docker-compose.yml an:

image: dr.swilk.eu/sw/bpn/resource-planning-restapi:v3.3.0

Bestehende Zeiträume in einen Terminplan überführen

Einsatzarten können ihre Einsatzzeiträume aus einem zentralen Terminplan beziehen statt aus der Einzelplanung. In einer gewachsenen Installation sind die betreffenden Zeiträume aber bereits Auszubildendem für Auszubildendem eingetragen — meist tausendfach derselbe Schulblock.

Dafür gibt es einen Befehl, der die Blöcke, die ein Jahrgang ohnehin gemeinsam hat, in den Terminplan der Einsatzart hebt:

docker exec -it resource-planning-restapi \
python manage.py migrate_uniform_dates "Schulblock"

Ohne --apply läuft der Befehl in einer Transaktion, die am Ende zurückgerollt wird. Der ausgegebene Bericht ist damit keine Vorhersage, sondern eine Messung dessen, was ein Durchlauf mit --apply tatsächlich tut.

OptionBedeutung
operationtypeName oder ID der Einsatzart. Pflichtangabe.
--thresholdWelcher Anteil eines Jahrgangs einen Block halten muss, damit er als dessen Block gilt. Standard 0.5.
--no-partnerKeinen festen Praxispartner setzen — etwa, wenn die Auszubildenden an verschiedenen Orten sind.
--applyÜbernehmen statt zurückrollen.
Erst ohne --apply, dann mit

Lassen Sie den Befehl immer zuerst ohne --apply laufen und lesen Sie den Bericht. Übernommen wird erst beim zweiten Durchlauf.

Ausnahmen bleiben stehen

Zeiträume, die nur einzelne Auszubildende haben — jemand, der ein Jahr wiederholt hat, oder ein um zwei Wochen verlängerter Block —, werden nicht in den Terminplan gehoben. Sie bleiben als unverwaltete Zeiträume samt ihren Fehlzeiten erhalten. Solange die Einsatzart einheitliche Termine nutzt, sind sie nicht bearbeitbar; wird der Schalter wieder ausgeschaltet, sind sie es erneut.

Vorher sichern

Der Befehl schreibt und löscht Einsatzzeiträume vieler Auszubildender. Legen Sie vor einem Durchlauf mit --apply ein Datenbank-Backup an, siehe unten.

Backup

Datenbank-Backup

docker exec resource-planning-db pg_dump -U $DJANGO_DB_USER $DJANGO_DB_NAME > backup_$(date +%Y%m%d).sql

Datenbank-Restore

cat backup.sql | docker exec -i resource-planning-db psql -U $DJANGO_DB_USER $DJANGO_DB_NAME

Logs

API-Logs einsehen

docker logs resource-planning-restapi

Datenbank-Logs

docker logs resource-planning-db

Healthcheck

Der API-Container führt automatisch einen Healthcheck durch. Der Status ist sichtbar über:

docker inspect --format='{{.State.Health.Status}}' resource-planning-restapi

Der Autoheal-Container startet fehlerhafte Container automatisch neu.