monitor/api/docker/entrypoint.sh
fds2610-bot 79ccef099d Hooks-KPI im KPI-Monitor ergaenzen (Issue #38)
Die im Issue beschriebene Event-Anzeige (neuestes Event oben, aeltere
schieben nach, Ueberschuss wird abgeschnitten) ist bereits seit Phase 4
umgesetzt (buildEventLines()/MAX_EVENT_LINES, F5) und braucht keine
Aenderung.

Neu ist die vierte, immer sichtbare KPI-Kachel ganz rechts im
KPI-Monitor: "Hooks: n" zaehlt die seit dem letzten Start des
api-Containers empfangenen Webhooks. Der Zaehler ist dateibasiert
(Metrics\HookCounter), weil der eingebaute PHP-Server jede Anfrage als
eigene Skriptausfuehrung behandelt; docker/entrypoint.sh setzt die Datei
beim Start des api-Containers (nicht des sync-Containers) zurueck. Neuer
oeffentlicher Endpunkt GET /api/v1/webhooks/stats liefert den Stand,
das Frontend haengt ihn als eigene Kachel an (buildHooksKpi()) und
reserviert ihr dafuer eine feste Kachel statt sie der MAX_KPI_TILES-
Kappung der uebrigen KPIs zu unterwerfen. Der Wert fliesst zusaetzlich
in den SSE-Fingerabdruck (ChangeFeed) ein.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 13:18:05 +02:00

22 lines
1 KiB
Bash
Executable file

#!/bin/sh
# Installiert Abhaengigkeiten automatisch beim ersten Start im Container, damit auf dem
# Host ausser Docker nichts installiert werden muss (composer bleibt im Container).
set -e
if [ ! -d /app/vendor ]; then
composer install --no-interaction --no-progress --working-dir=/app
fi
# Hooks-KPI (Issue #38): die Zaehldatei liegt im geteilten ./api-Volume und ueberlebt einen
# Container-Neustart daher von sich aus - "seit dem letzten Restart" muss also hier aktiv
# hergestellt werden. Nur beim Standard-Kommando des api-Containers (php -S ..., siehe
# Dockerfile CMD) zuruecksetzen: der sync-Container teilt sich zwar dasselbe Image/Entrypoint,
# startet aber mit einem anderen Kommando und empfaengt selbst keine Webhooks - ein eigener
# Neustart von ihm darf den Zaehler des api-Containers nicht faelschlich auf 0 setzen.
if [ "$1" = "php" ] && [ "$2" = "-S" ]; then
hooks_counter_file="${MONITOR_HOOKS_COUNTER_FILE:-/app/data/hooks-count}"
mkdir -p "$(dirname "$hooks_counter_file")"
echo 0 > "$hooks_counter_file"
fi
exec "$@"