Die Basis-URL der API wurde bisher aus dem Port der Seite abgeleitet (office.html: `if (location.port === "8090")`). Laeuft das Frontend hinter anderen Ports - in Produktion 4443 (web) / 4444 (api) - griff die Bedingung nicht, der relative Default /api/v1 lief gegen den Webserver ins Leere, und die Szene fiel still auf Demo-Daten zurueck: fremde Agenten-Namen und erfundene Ticketzahlen bei gleichzeitig leeren Detail-Modals. Die URL kommt jetzt aus MONITOR_API_BASE (.env, Default passend zum Port-Mapping in docker-compose.yml). Der Webserver liefert den Wert zur Laufzeit als /config.js aus; das nginx-Image setzt ihn beim Start per envsubst in die Config ein (default.conf -> default.conf.template). Damit bleibt html/ ein rein statisches, read-only gemountetes Verzeichnis - kein Build-Schritt, kein eigenes Entrypoint-Skript. Ein leerer Wert bedeutet "gleicher Origin" und faellt auf /api/v1 zurueck. Zusaetzlich macht ein roter Banner "API nicht erreichbar!" den Demo-Fallback sichtbar, statt ihn wie bisher stillschweigend als echte Daten auszugeben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
31 lines
1.3 KiB
HTML
31 lines
1.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="icon" type="image/png" href="/favicon.png">
|
|
<title>FDS Buero-Visualisierung</title>
|
|
<link rel="stylesheet" href="css/office.css">
|
|
</head>
|
|
<body>
|
|
<header class="office-header">
|
|
<h1>Buero</h1>
|
|
<p>
|
|
Kanban-Board, Monitor-Wand und Schreibtische zeigen live die Daten aus der
|
|
<a href="/API.md">REST-API</a> (Push-Updates per Server-Sent Events, Fallback:
|
|
Polling). Klick auf das Board oder einen Monitor oeffnet die Detailansicht. Ist
|
|
die API nicht erreichbar, zeigt die Szene ersatzweise Demo-Daten.
|
|
</p>
|
|
</header>
|
|
|
|
<div id="api-status-banner" class="api-banner" role="alert" hidden>API nicht erreichbar!</div>
|
|
|
|
<main id="office-scene" aria-label="Buero-Szene"></main>
|
|
|
|
<!-- Laufzeit-Konfiguration (API-Basis-URL): wird vom Webserver aus der Umgebungsvariable
|
|
MONITOR_API_BASE erzeugt, siehe docker/nginx/default.conf.template und .env.example.
|
|
Muss vor dem Modul stehen - ein klassisches Script laeuft synchron vor jedem Modul. -->
|
|
<script src="/config.js"></script>
|
|
<script type="module" src="js/office-render.js"></script>
|
|
</body>
|
|
</html>
|