Lage-Auswahl im Header + dynamischer Monitor-Feed

Dropdown in der Top-Leiste zeigt alle oeffentlichen Lagen.
[L] = Live-Monitoring, [R] = Recherche.
Immer nur eine Lage aktiv. Bei Auswahl:
- OSINT Monitor Layer zeigt nur Daten dieser Lage
- Klick auf Katastrophen zeigt Summary dieser Lage
- Sidebar zeigt Punkte dieser Lage
Ohne Auswahl: kein Monitor-Overlay.
Dieser Commit ist enthalten in:
Claude Dev
2026-03-24 13:30:52 +01:00
Ursprung 65a30e0d06
Commit 0944b12e2d
5 geänderte Dateien mit 98 neuen und 4 gelöschten Zeilen

Datei anzeigen

@@ -15,10 +15,31 @@ _MONITOR_KEY = os.getenv("MONITOR_API_KEY", "")
_cache: dict[str, tuple] = {}
@router.get("/monitor-incidents")
async def get_monitor_incidents():
"""Holt Liste aller Lagen vom Monitor."""
cache_key = "incidents"
if cache_key in _cache and time.time() - _cache[cache_key][0] < 300:
return _cache[cache_key][1]
try:
async with httpx.AsyncClient(timeout=10) as client:
r = await client.get(
f"{_MONITOR_URL}/globe-incidents",
headers={"X-API-Key": _MONITOR_KEY},
)
r.raise_for_status()
data = r.json()
_cache[cache_key] = (time.time(), data)
return data
except Exception as e:
logger.warning(f"Monitor incidents Fehler: {e}")
return []
@router.get("/monitor-feed")
async def get_monitor_feed(incident_id: int = Query(45)):
async def get_monitor_feed(incident_id: int = Query(None)):
"""Holt OSINT-Daten vom AegisSight Monitor."""
cache_key = f"monitor:{incident_id}"
cache_key = f"monitor:{incident_id or 0}"
if cache_key in _cache and time.time() - _cache[cache_key][0] < 120:
return _cache[cache_key][1]