# Runbook: Incident-Response

PRX-26. Owner (provisorisch): Mia Roth (QA Lead) für Erstbewertung, Eskalation an Elena Weiss
(DevOps/Platform Lead) bei Infrastrukturbezug (siehe Confluence Seite 02).

## Bekannte Fehlerbilder

### Backend startet nicht / `/actuator/health` antwortet nicht

1. Logs prüfen: `docker logs procurex-app`
2. Häufigste Ursache: `shared-postgres` läuft nicht oder `procurex_db`/`procurex_user` fehlen
   noch → `docker exec shared-postgres pg_isready -U admin`, dann `procurex-app/README.md`,
   Abschnitt "Voraussetzung: enterprise-infrastructure" befolgen.
3. Zweithäufigste Ursache: `.env` fehlt oder Passwort stimmt nicht mit dem in `enterprise-infrastructure`
   registrierten Passwort überein.

### Frontend lädt, aber jede Aktion zeigt "Server nicht erreichbar"

1. Prüfen, ob `procurex-app` erreichbar ist: `curl http://procurex-api.localhost/actuator/health`
2. CORS-Fehler in der Browser-Konsole? → `PROCUREX_CORS_ALLOWED_ORIGINS` in `docker-compose.yml`/
   `application.yml` muss den tatsächlichen Frontend-Origin enthalten.
3. Traefik nicht gestartet: `docker ps | grep shared-traefik`, ggf.
   `cd ..\..\shared\enterprise-infrastructure; docker compose up -d traefik`.

### `net::ERR_NAME_NOT_RESOLVED` für `*.localhost`-Hostnamen

Browser/OS löst `.localhost` normalerweise automatisch auf (RFC 6761). Falls nicht: Traefik-
Dashboard-Alternative über direkte Container-IPs prüfen, oder Hosts-Datei-Eintrag als Workaround
(nicht dauerhaft empfohlen).

### Doppelte Genehmigungsentscheidung / Konflikt-Fehler (409) bei PRX-5/PRX-8

Erwartetes Verhalten, kein Bug: eine Bestellung wurde bereits entschieden. Siehe
`procurex-approval/README.md`.

## Eskalation

1. Erstbewertung: reproduzierbar? Betrifft es nur PROCUREX oder auch andere `enterprise-infrastructure`-Projekte?
2. Bei Verdacht auf `enterprise-infrastructure`-weite Auswirkung (z.B. Postgres nicht erreichbar für alle
   Projekte): sofort stoppen, keine destruktiven Befehle (`down -v`), Rücksprache mit den in
   Confluence Seite 02 genannten provisorischen Verantwortlichen.
3. Bei reinem PROCUREX-Fehler: Rollback-Runbook (`rollback.md`) anwenden.

**Testnachweis:** Diese Fehlerbilder sind aus der tatsächlichen Fehlerbehandlung im Code abgeleitet
(`GlobalExceptionHandler`, `httpErrorInterceptor`, siehe `procurex-common`/`procurex-frontend`),
nicht aus einem durchgeführten Incident-Drill — es gab bislang keinen echten Incident.
