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:
@@ -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]
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren