diff --git a/app.py b/app.py index 892c3db..943ac80 100644 --- a/app.py +++ b/app.py @@ -163,6 +163,8 @@ table.tickets tr.row:hover{background:var(--panel2)} .grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px} .svc-card{display:flex;justify-content:space-between;align-items:flex-start} .svc-card .badge{padding:2px 9px;border-radius:99px;font-size:11px;background:#1a4a35;color:var(--ok)} +.svc-card .badge.err{background:#4a1e22;color:var(--bad)} +.svc-card .badge.unknown{background:#2a2a2a;color:#888} input,textarea,select{ background:var(--bg);border:1px solid var(--border);border-radius:6px; color:var(--text);padding:8px 10px;font-size:13px;width:100%} @@ -651,22 +653,37 @@ def api_ticket(ticket_id): # ── Service-Katalog ───────────────────────────────────────────────────────────── -def _aes_live_status(): - if not AES_DASHBOARD_URL: +def _service_live_status(endpoint): + """Prueft die Live-Erreichbarkeit eines gebuchten Service-Endpunkts (z.B. AES-Dashboard). + Generisch fuer alle Services mit Endpoint, nicht nur AES. Timeout kurz gehalten, + damit ein haengender/ausgefallener Service den Katalog nicht blockiert. + Rueckgabe: True (erreichbar) / False (nicht erreichbar) / None (kein Endpoint hinterlegt).""" + if not endpoint: return None try: - req = urllib.request.Request(AES_DASHBOARD_URL + "/", method="GET") + req = urllib.request.Request(endpoint, method="GET") with urllib.request.urlopen(req, timeout=4) as resp: return 200 <= resp.status < 400 except Exception: - return None + return False def _services_body(tenant_id): services = db.list_services(tenant_id) cards = [] for s in services: - badge = 'gebucht' if s["gebucht"] else 'nicht gebucht' + if not s["gebucht"]: + badge = 'nicht gebucht' + elif s.get("endpoint"): + live = _service_live_status(s["endpoint"]) + if live is True: + badge = 'gebucht · erreichbar' + elif live is False: + badge = 'gebucht · nicht erreichbar' + else: + badge = 'gebucht' + else: + badge = 'gebucht' link = ('
' % html.escape(s["endpoint"])) if s.get("endpoint") else "" cards.append("""