Git-Deploy per Tag, Betriebsüberwachung und Release-Seeder für den Livegang

- dev/betrieb/deploy.sh: Deploy nur per Tag, mit --seed (Seeder im Wartungsmodus)
  und --initial (Vorschau/Live einmalig an Ort und Stelle auf Git umstellen)
- dev/betrieb/vorschau-auffrischen.sh: Live-DB und Live-Medien in die Vorschau (Generalprobe)
- InteriorReleaseSeeder: alle Inhaltsschritte des Relaunchs in einem Lauf, idempotent;
  Displays, Playlists und Mediathek bleiben unberührt
- DisplayInteriorBrandingSeeder überschreibt keinen inzwischen gepflegten Claim mehr
- Monitoring: GlitchTip (Server + Browser), /health mit Token, Scheduler-Herzschlag,
  Alarme per Mail und ntfy, Version in about und /health
- public/build versioniert; .gitignore: macOS-Muster Icon traf resources/views/flux/icon/
- Runbook: dev/betrieb/README.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-09 08:56:23 +00:00
parent fcb10be120
commit b5ed756d67
98 changed files with 3947 additions and 82 deletions

View file

@ -0,0 +1,14 @@
@props(['build' => 'build', 'area' => 'web'])
{{-- Browserfehler an GlitchTip. Ohne SENTRY_BROWSER_DSN
wird nichts eingebunden; das SDK selbst lädt erst beim ersten Fehler. --}}
@if (filled(config('monitoring.browser.dsn')))
<meta name="pk-error-reporting" content="{{ json_encode([
'dsn' => config('monitoring.browser.dsn'),
'release' => config('sentry.release'),
'environment' => config('sentry.environment') ?? app()->environment(),
'sampleRate' => config('monitoring.browser.sample_rate'),
'userId' => auth()->id(),
'area' => $area,
]) }}" />
@vite(['resources/js/error-reporting.js'], $build)
@endif