Skip to content

Fehlerbehebung ​

Erste Schritte zur Diagnose ​

Für eine Release-Installation im Installationsverzeichnis (normalerweise clinicpulse):

sh
docker compose ps -a
docker compose logs --tail=100 backend db web

Für eine manuelle Quellcode-Installation im Repository-Hauptverzeichnis:

sh
docker compose -f docker/docker-compose.yml ps
docker compose -f docker/docker-compose.yml logs --tail 100 backend
docker compose -f docker/docker-compose.yml logs --tail 100 db

Der Zustand der API lässt sich über GET /api/health prüfen. Bitte keine Zugangsdaten, Schlüssel oder echten Personendaten in Logs oder Issues veröffentlichen. Bei einer Installation über deploy/install.sh aus dem Checkout verwende für Compose dieselbe Datei und dieselben Einstellungen wie beim Start.

Fehlende Fahrzeugspalte beim Start ​

Wenn Release v-0.3.4.1-alpha mit einer bestehenden Datenbank beim Start column shift_types.vehicle_id does not exist meldet, schlägt die Migration fehl und nginx gibt 502 zurück. Verwende ein Release mit der korrigierten Migration, sobald es verfügbar ist. Das Datenbank-Volume und den bestehenden Verschlüsselungsschlüssel nicht löschen.

Als Zwischenlösung kann bei genau dieser Fehlermeldung die fehlende Spalte ergänzt werden. Zuerst im Release-Installationsverzeichnis eine Datenbanksicherung erstellen und ihren Erfolg prüfen. Die Datei enthält möglicherweise sensible Daten und muss geschützt aufbewahrt werden:

sh
umask 077
docker compose exec -T db pg_dump -U clinicpulse -d clinicpulse > backup-vor-migration.sql

Nur nach erfolgreicher Sicherung die Spalte ergänzen und das Backend neu starten:

sh
docker compose exec -T db psql -v ON_ERROR_STOP=1 -U clinicpulse -d clinicpulse -c 'ALTER TABLE shift_types ADD COLUMN IF NOT EXISTS vehicle_id INTEGER REFERENCES vehicles(id) ON DELETE RESTRICT' && \
docker compose restart backend && \
docker compose ps -a && \
docker compose logs --tail=100 backend

Meldet das Backend danach einen anderen Fehler, dessen Logs prüfen. Eine bereits eingerichtete Datenbank führt zum Login; die Ersteinrichtung erscheint nur, wenn noch kein Administrator vorhanden ist.

Häufige Probleme ​

ProblemUrsache und Lösung
docker compose findet keine DateiCompose-Datei liegt unter docker/docker-compose.yml; Befehle mit -f docker/docker-compose.yml im Hauptverzeichnis ausführen.
backend startet nicht / Schlüssel fehltBei vorhandener Datenbank den ursprünglichen Schlüssel wiederherstellen, nicht neu erzeugen (siehe Backup).
backend wartet auf dbDatenbank noch nicht gesund; docker compose ... logs db prüfen.
Verschlüsselte Daten nicht lesbarDatenschlüssel fehlt, ist falsch oder die Daten sind beschädigt. Ursprünglichen Schlüssel wiederherstellen.
Port 8080 belegtCLINICPULSE_PORT auf einen freien Port setzen.
Einrichtung scheitert an der LizenzAusgehenden HTTPS-Zugriff auf CLINICPULSE_LICENSE_API_URL prüfen (Firewall, Proxy, DNS).
Einladungs-E-Mails kommen nicht anE-Mail prüfen: SMTP-Daten, TLS, öffentliche HTTPS-Adresse; Testversand nutzen.
Anmeldung wird mit „Zu viele Anmeldeversuche“ blockiert15-Minuten-Fenster abwarten (Retry-After-Header zeigt die Sekunden).
Plötzlich abgemeldetSitzung wegen Inaktivität abgelaufen; Timeout unter Sicherheit einstellen.
Änderungen sind nicht möglichLizenz im Nur-Lesen-Modus (HTTP 423); Lizenz erneuern.
Planungsvorschau wird abgelehntZeitraum oder Zahl offener Positionen zu groß; kürzer wählen (max. 63 Tage, 150 Positionen).
Schicht kann nicht zugewiesen werdenMeldung lesen: Überschneidung, Abwesenheit, volle Besetzung oder Arbeitszeitregel.
Backup lässt sich nicht einspielenWiederherstellungsschlüssel und Passwort prüfen; Bestätigungstext WIEDERHERSTELLEN eingeben.

HTTP-Statuscodes ​

CodeBedeutung in ClinicPulse
400Ungültige Anfrage, z. B. ungültige oder abgelaufene Einladung
401Nicht angemeldet, Sitzung ungültig oder abgelaufen, falsche Zugangsdaten, Einrichtung fehlt
403Fehlendes Recht oder Lizenz nicht aktiv/gesperrt
404Objekt nicht gefunden
409Konflikt: Duplikat, Objekt in Benutzung, Überschneidung, Arbeitszeitverstoß, Benutzerlimit
413Backup-Datei zu groß
422Eingabe ungültig (Validierung)
423Lizenz im Nur-Lesen-Modus
429Zu viele Anmeldeversuche
502Backend nicht erreichbar (Proxy) oder ungültige Antwort des Passwort-Prüfdienstes
503Externer Dienst nicht erreichbar (Lizenzserver, Passwortprüfung)

Fehlermeldungen ​

Die API liefert Fehler als JSON mit dem Feld detail.

Anmeldung und Sitzung ​

MeldungBedeutung / Lösung
Setup requiredErsteinrichtung noch nicht abgeschlossen
Initial setup is already completeEinrichtung wurde bereits durchgeführt
Invalid username or passwordZugangsdaten falsch
Current password is incorrectBeim Passwortwechsel stimmt das aktuelle Passwort nicht
Authentication required / Invalid or expired sessionNeu anmelden
Session expired due to inactivityNeu anmelden; Timeout anpassbar
Zu viele Anmeldeversuche … (429)Wartezeit abwarten
Invitation is invalid or expiredEinladung erneut senden lassen

Berechtigungen ​

MeldungBedeutung
Administrator access requirednur für den Administrator
Schedule view / editing / approval permission requiredRecht zum Ansehen, Bearbeiten bzw. Freigeben fehlt
Team management access requiredVerwaltungsrecht für das Team fehlt
You can only plan / approve for your own departmentNur eigene Abteilung
Dienstpläne sind für den Administrator nicht einsehbarAdministratoren sehen keine Dienstpläne
No department access is configuredDem Konto ist keine Abteilung zugeordnet
Chief physicians are read-onlyChefärzte dürfen nicht schreiben

Konflikte bei der Planung ​

MeldungLösung
Employee already has an overlapping shiftAndere Zeit oder Mitarbeitenden wählen
Employee is absent during this shiftAbwesenheit prüfen
… is already fully staffedSchicht ist voll besetzt
Employee and shift must belong to the same departmentDie Person gehört nicht zur Abteilung der Schicht; Zuordnung in der Teamverwaltung ergänzen
Employee role is not required for this shiftDie Person hat keine für die Schicht geforderte Qualifikation dieser Abteilung
Vehicle is deactivatedDas Fahrzeug der Schicht ist deaktiviert; Fahrzeug aktivieren oder andere Schicht wählen
Vehicle is in useDas Fahrzeug hat noch Schichten; stattdessen deaktivieren
This facility type uses a single organizational unitBei der Leitstelle gibt es nur eine Einheit; sie lässt sich nicht hinzufügen oder löschen
Work on Sundays or public holidays is disabled …Sonntagsarbeit in der Betriebskonfiguration erlauben
At least 15 Sundays per calendar year must remain free …Sonntagsdienste reduzieren
… legally required break (ArbZG §4)Pause im Schichttyp ergänzen
Date range must be 1–63 days / 1–366 daysZeitraum anpassen

Stammdaten ​

MeldungLösung
Department name already exists / Department already existsAnderen Namen wählen
Department is still in useZuordnungen zuerst entfernen
Shift type name already exists / Shift type is in useNamen ändern bzw. Zuweisungen entfernen
Employee has scheduled shifts / … in this periodSchichten zuerst entfernen
Employee has a linked login accountKonto zuerst löschen
Username is already in useAnderen Benutzernamen wählen
Role is not available for this facility typeRolle passt nicht zur Einrichtungsart
The name of the main control center or unit is requiredBei Leitstelle (oder „Sonstige“ mit einer Einheit) den Namen der Hauptleitstelle im Setup angeben
Unit name, plural, grammatical gender and leadership title are required …Bei „Sonstige“ im Setup bzw. unter Einstellungen → Betrieb alle Begriffe ausfüllen
A single organizational unit requires that only one existsWeitere Einheiten zuerst entfernen oder „nur eine Einheit“ deaktivieren
Vehicle must belong to the shift's departmentFahrzeug desselben Standorts wählen
Vehicle name already exists / Vehicles are not used by this facility typeKennung ändern bzw. Fahrzeuge sind für diese Einrichtungsart nicht aktiv
Einrichtungsart fehlt / Bundesland fehltBetriebskonfiguration ergänzen
An absence already exists in this periodÜberschneidende Abwesenheit prüfen
Absence was already decidedEntscheidung kann nicht geändert werden

Lizenz ​

MeldungBedeutung / Lösung
Diese Lizenz ist gesperrt / … nicht aktiv: <Grund>Lizenz beim Anbieter klären
Lizenz enthält kein ClinicPulse-KernfeatureLizenz umfasst das Produkt nicht
Licensed user limit reachedBenutzerlimit erreicht
License is read-only: <Grund> (423)Kulanzzeit abgelaufen; Lizenz erneuern
Lizenzserver ist momentan nicht erreichbar (503)Netzwerk und CLINICPULSE_LICENSE_API_URL prüfen
Lizenzprüfung ist nicht verfügbar (503)Später erneut versuchen
Lizenz-Token oder Status ungültigToken prüfen bzw. neu abrufen

Backup ​

MeldungLösung
Backup-Datei ist zu groß (413)Kleinere Datei oder anderen Weg zur Wiederherstellung nutzen
Wiederherstellungsschlüssel fehlt oder ist ungültigRichtige Schlüsseldatei und Passwort verwenden
Bitte „WIEDERHERSTELLEN“ zur Bestätigung eingebenBestätigungstext eingeben
Für automatische Backups wird mindestens ein Empfänger-Schlüssel benötigt …Zuerst Wiederherstellungsschlüssel erzeugen
Ein Backup-Ziel mit diesem Namen existiert bereitsAnderen Namen wählen
Name oder Schlüssel ist bereits als Empfänger hinterlegtEintrag existiert bereits
Ungültiger DateinameDateinamen prüfen

Passwortprüfung ​

MeldungBedeutung
Have I Been Pwned konnte nicht erreicht werdenAusgehende Verbindung prüfen (503)
Ungültige Antwort des Passwort-PrüfdienstesDienst liefert Unerwartetes (502)
Passwortprüfung momentan nicht verfügbarSpäter erneut versuchen

Hilfe erhalten ​

Eröffne ein Issue mit Version, Betriebsart, Schritten zur Reproduktion und bereinigten Logs. Sicherheitslücken bitte per E-Mail an info@cyberspaceconsulting.de melden.

ClinicPulse befindet sich in einer frühen Alpha-Phase.