Session zu Aktive Nutzung im Dashboard

Dieser Commit ist enthalten in:
2025-06-21 16:01:31 +02:00
Ursprung ae30b74e9c
Commit fff82f44b9
3 geänderte Dateien mit 35 neuen und 5 gelöschten Zeilen

Datei anzeigen

@@ -32,10 +32,38 @@ def dashboard():
cur.execute("SELECT COUNT(*) FROM customers")
total_customers = cur.fetchone()[0] if cur.rowcount > 0 else 0
# Anzahl aktiver Sessions
# Anzahl aktiver Sessions (Admin-Panel)
cur.execute("SELECT COUNT(*) FROM sessions WHERE is_active = true")
active_sessions = cur.fetchone()[0] if cur.rowcount > 0 else 0
# Aktive Nutzung (Kunden-Software) - Lizenzen mit Heartbeats in den letzten 15 Minuten
active_usage = 0
try:
# Prüfe ob Tabelle existiert
cur.execute("""
SELECT EXISTS (
SELECT FROM information_schema.tables
WHERE table_name = 'license_heartbeats'
)
""")
table_exists = cur.fetchone()[0]
if table_exists:
cur.execute("""
SELECT COUNT(DISTINCT license_id)
FROM license_heartbeats
WHERE timestamp > NOW() - INTERVAL '15 minutes'
""")
active_usage = cur.fetchone()[0] if cur.rowcount > 0 else 0
except Exception as e:
# Bei Fehler einfach 0 verwenden
current_app.logger.warning(f"Could not get active usage: {str(e)}")
# Rollback der fehlgeschlagenen Transaktion
conn.rollback()
# Neue Transaktion starten
conn = get_connection()
cur = conn.cursor()
# Top 10 Lizenzen - vereinfacht
cur.execute("""
SELECT
@@ -69,7 +97,8 @@ def dashboard():
stats = {
'total_customers': total_customers,
'total_licenses': active_licenses,
'active_sessions': active_sessions,
'active_sessions': active_sessions, # Admin-Panel Sessions
'active_usage': active_usage, # Aktive Kunden-Nutzung
'active_licenses': active_licenses,
'full_licenses': 0,
'test_licenses': 0,

Datei anzeigen

@@ -96,9 +96,9 @@
<div class="col-md-4">
<div class="card stat-card h-100">
<div class="card-body text-center">
<div class="card-icon text-success{% if stats.active_sessions > 0 %} pulse-effect{% endif %}">🟢</div>
<div class="card-value text-success">{{ stats.active_sessions }}</div>
<div class="card-label text-muted">Aktive Sessions</div>
<div class="card-icon text-success{% if stats.active_usage > 0 %} pulse-effect{% endif %}">🟢</div>
<div class="card-value text-success">{{ stats.active_usage }}</div>
<div class="card-label text-muted">Aktive Nutzung</div>
</div>
</div>
</div>