Commit graph

33 Commits

Autor SHA1 Nachricht Datum
Claude Dev
4cc6c29784 fix: VLM-Objekterkennung gelockert (nicht nur militaerische Infrastruktur)
Vorheriger Prompt war zu restriktiv und lieferte leeres objects-Array
fuer alles ausser Militaerbasen/Flughaefen. Jetzt werden alle auf der
Karte verifizierbaren Strukturen erfasst (Industrieanlagen, Kirchen,
Sportanlagen, Autobahnen etc.). Nur reine Natur bleibt in landscape_clues.
2026-03-27 23:45:19 +01:00
Claude Dev
28a87f1bb5 fix: VLM-Bildanalyse Bugfixes (Prompt, UI, Logging)
- Fix 1: Claude-Prompt weist generische Natur-Objekte ab (forest, mountain etc.)
  Objects-Array nur fuer OSINT-relevante Infrastruktur, Rest in terrain/landscape_clues
- Fix 2: Freundliche UI-Meldungen bei leeren Objects, 0 Treffern, gefilterten Tags
  Button ausgegraut + Hinweis wenn keine Infrastruktur erkannt
- Fix 3: generate_queries gibt JSON statt HTTP 400 bei leeren Fragments
- Fix 4: Verbose Objekt-Match-Logging auf debug reduziert
- Fix 5: Verwaiste static/js/ui/overpass.js geloescht

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 23:15:54 +01:00
Claude Dev
492d1135df refactor: Token-Tracking mit source=globe fuer Split-Anzeige
UNIQUE-Constraint um source-Spalte erweitert, Globe schreibt
jetzt mit source=globe in token_usage_monthly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 20:44:05 +01:00
Claude Dev
362d3cdb80 fix: organization_id in User-Query fuer Token-Tracking
get_current_user() selektierte organization_id nicht aus der DB,
daher wurde der Token-Tracking Block im VLM uebersprungen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 20:37:29 +01:00
Claude Dev
19c9376f7d feat: Token-Tracking fuer VLM-Bildanalyse
Usage-Daten (input/output/cache tokens, theoretische USD-Kosten)
werden jetzt wie beim Monitor aus der Claude CLI-Antwort extrahiert
und in token_usage_monthly geschrieben. Credits werden auf der
Lizenz abgezogen. Verwaltungsportal zeigt die Zahlen automatisch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 20:33:04 +01:00
Claude Dev
86db66a787 fix: Viewport-Bias entfernt + Timestamp-Sonnenstand + hoehere Aufloesung
Kernproblem: Claude wurde durch Viewport-Position beeinflusst
(User schaut auf Sueddeutschland → Claude sagt Bayern)

Fixes:
- Viewport-Info wird NICHT mehr an VLM-Prompt uebergeben
- Stattdessen: Dateiname-Timestamp extrahiert (20231010_155544 → Datum)
- Sonnenstand fuer 3 Breitengrade berechnet und als Kontext mitgegeben
- Prompt: explizite Anweisung, sich NUR auf Bildinhalt zu stuetzen
- Bildaufloesung von 1500px auf 2500px erhoeht (mehr Details)
- Besseres Logging: Koordinaten, Gewaesser, Region
2026-03-26 11:03:59 +01:00
Claude Dev
51e85b2572 feat: Praezisere Geolocation durch Koordinatenschaetzung + Feature-Erkennung
VLM-Schema:
- estimated_coordinates: Claude schaetzt Lat/Lon + Radius direkt
- identified_features: Konkreter Gewaessername, engste Region, Landmarken
- landscape_clues um water_characteristics erweitert

VLM-Prompt: Komplett ueberarbeitet
- Primaerziel ist jetzt Reverse Geolocation statt nur Objekterkennung
- Spezifische Anleitungen: Fluss-ID (Rhein vs Donau), Kiesfarbe, Uferform
- Explizite Aufforderung fuer Koordinatenschaetzung

BBox-Kaskade (Prioritaet):
1. EXIF-GPS (exakt)
2. estimated_coordinates + Radius (VLM-Schaetzung)
3. identified_features (Gewaesser/Region aus Matching)
4. estimated_location_type (grobe Region)
5. Weltweit (Fallback)

Regions-Mapping: 30+ neue Eintraege
- Deutsche Bundeslaender (NRW, Bayern, Hessen, etc.)
- Flussgebiete (Niederrhein, Oberrhein, Mosel, Elbe, etc.)
- Staedte (Duesseldorf, Koeln, Bonn, Neuss)

Frontend:
- Gruen hervorgehobene Koordinaten-Box mit Radius
- Identifizierte Features (Gewaesser, Region, Landmarken)
- Fly-To zur geschaetzten Position
2026-03-26 10:38:22 +01:00
Claude Dev
41a987f848 feat: Suchbereich visuell auf dem Globus umreissen
- Halbtransparentes Rechteck zeigt die Suchregion
- Eckpunkt-Marker + SUCHBEREICH-Label in der Mitte
- EXIF-GPS: Hervorgehobener Marker mit Punkt + Ring + Detailbox
- Kleine BBox (EXIF): staerkere Fuellung, nah sichtbar
- Grosse BBox (Region): schwache Fuellung, weit sichtbar + Kamera fliegt hin
- Backend: generate-queries gibt effective_bbox zurueck
- Reset raeumt alle Visualisierungen auf
2026-03-26 09:23:56 +01:00
Claude Dev
c7cb19d584 feat: GEOINT-Toolkit mit 6 neuen Features
- EXIF-Extraktion: Automatische GPS/Kamera/Zeitstempel-Analyse bei Bildupload
- Sonnenstand-Rechner: Azimut, Elevation, Schattenverhaeltnis fuer beliebige Position/Zeit
- Reverse Geolocation: Erweiterte VLM-Analyse mit Landschaftsmerkmalen (Vegetation, Architektur, Strassen, Schilder)
- Nachtlichter: NASA VIIRS Black Marble Layer
- Hoehenprofil: Interaktives 2-Punkte-Tool mit SVG-Chart und Sichtlinienanalyse
- Funkmasten: Mobilfunkinfrastruktur via Overpass (zoomabhaengig)

Backend: data_geoint.py (EXIF, Sun, Elevation, Celltowers)
Frontend: GEOINT Tools Section im Layer Panel
2026-03-26 08:58:05 +01:00
Claude Dev
1b74c95bac fix: toten Overpass-Fallback ersetzen + Retry bei 504
- kumi.systems Fallback (tot) durch z.overpass-api.de ersetzt
- Retry-Logik bei transienten HTTP-Fehlern (502/504/429)
- 2s Pause vor Retry, dann naechster Endpunkt
2026-03-26 08:28:22 +01:00
Claude Dev
f4dcd37e78 Fix: natural/waterway aus Generic-Filter entfernt
Bei Landschaftsbildern waren alle Tags gefiltert (0 Ergebnisse).
natural=peak, natural=wood etc. sind mit Region-BBox suchbar.
Nur building, highway, landuse bleiben als generisch gefiltert.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:56:54 +01:00
Claude Dev
749c78b6a3 Fix: Region-BBox aus VLM-Analyse + generische Tags filtern
Wenn keine Viewport-BBox gesetzt ist, nutzt der Query-Generator die
VLM-Regionsschaetzung (z.B. Europa, Naher Osten) als grobe BBox.
70+ Regionen gemappt (DE/EN). Generische OSM-Tags (building, highway,
landuse) werden gefiltert um Overpass-Timeouts zu vermeiden.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:32:10 +01:00
Claude Dev
7be5edd983 Feature: Overpass Turbo + VLM-Bildanalyse
Overpass Turbo Integration:
- POST /api/overpass/query: OverpassQL-Proxy mit Caching, Rate-Limiting, Fallback
- GET /api/overpass/templates: 30 OSINT-Templates in 6 Kategorien
- Frontend: Query-Editor Panel mit Template-Browser, Viewport-BBox
- Layer: Nodes/Ways/Relations Rendering auf CesiumJS mit OSM-Tag InfoBox

VLM-Bildanalyse:
- POST /api/vlm/analyze: Bildupload -> Claude Code headless (Sonnet) -> GEOINT-Analyse
- POST /api/vlm/generate-queries: VLM-Erkennungen -> OverpassQL
- Frontend: Drag&Drop Upload, Zwei-Stufen-Workflow (Analyse -> Overpass-Suche)
- Bild-Resize (Pillow), asyncio Subprocess, Semaphore (max 1 parallel)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:03:01 +01:00
Claude Dev
7351a74217 Fix: Echte Umlaute statt Umschreibungen (gültig, für, prüfen) 2026-03-25 00:04:42 +01:00
Claude Dev
af08fa6b4d Auth: Nur noch Magic Link, Code-Verifizierung entfernt
- /api/auth/verify-code Endpoint entfernt
- generate_magic_code() entfernt
- E-Mail: Nur noch Anmelde-Link, kein 6-stelliger Code
- Login-Seite: Zeigt nach E-Mail-Eingabe Hinweis statt Code-Feld
- Magic Link Token-Verifikation via URL bleibt bestehen
2026-03-25 00:01:21 +01:00
Claude Dev
5658754629 Fix: get_country_from_mmsi fehlte nach DB-Rewrite 2026-03-24 23:35:34 +01:00
Claude Dev
d441ebaed1 Militaerschiff-Datenbank: 20 Marinen, 80+ Schiffsklassen
Abgedeckte Marinen:
USA (13 Klassen: Nimitz, Ford, Arleigh-Burke, Ticonderoga, Wasp,
  America, Virginia, Ohio, LCS, San Antonio, Constellation...)
Russland (11: Kuznetsov, Gorshkov, Grigorovich, Udaloy, Kirov,
  Slava, Borei, Yasen, Kilo, Karakurt, Ivan Gren)
China (7: Liaoning/Shandong/Fujian, 052D, 055, 054A, 075, 071, 093/094)
UK (6: Queen Elizabeth, Type 45, Type 23, Astute, Vanguard, Albion)
Frankreich (6: CDG, FREMM, Horizon, Mistral, Suffren, Triomphant)
Deutschland (6: F125, F124, K130, 212A, EGV, F514)
Japan (7: Izumo, Hyuga, Maya, Atago, Kongo, Mogami, Soryu)
Indien (4: Vikrant, Kolkata, Shivalik, Kamorta)
Suedkorea (3: Dokdo, Sejong, Chungmugong)
Australien (3: Canberra, Hobart, Anzac)
Italien (3: Cavour, Bergamini, Orizzonte)
+ Tuerkei, Israel, Norwegen, Niederlande, Spanien, Aegypten, Singapur

Keyword-Matching nach Schiffsname + MMSI-Laendercode.
Bilder aus Wikimedia Commons fuer Hauptklassen.
2026-03-24 23:33:03 +01:00
Claude Dev
bfa74ec992 Militaerschiff-Datenbank mit Bildern + Klassifizierung
Neue Datei milship_db.py:
- MMSI-Laenderzuordnung (200+ Laendercodes)
- Schiffsklassen-Datenbank (Nimitz, Arleigh-Burke, Gorshkov,
  Type 052D, Queen Elizabeth, F125, Charles de Gaulle)
- Bilder aus Wikimedia Commons (frei lizenziert)
- Klassifizierung nach MMSI-Prefix + Schiffsname

Klick auf Militaerschiff zeigt:
- Foto der Schiffsklasse (wenn verfuegbar)
- Klassenname und Schiffstyp
- Herkunftsland (aus MMSI)
- MMSI, SOG, COG, Heading

API: GET /api/ships/military liefert alle Militaerschiffe
mit Klassifizierung und Bild-URLs.
2026-03-24 23:27:32 +01:00
Claude Dev
4b731823e6 Schiffsverkehr: Typ-Filter, Kurslinien, Dark Ships
SCHIFFSTYP-FILTER:
- 6 Kategorien: Tanker (rot), Cargo (orange), Passagier (gruen),
  Fischerei (blau), Militaer (magenta), Sonstige (grau)
- Einzeln ein-/ausblendbar via Checkboxen im Panel
- Farbkodierte Punkte nach Schiffstyp

KURSLINIEN-PROJEKTION:
- Zuschaltbar per Checkbox
- Zeigt 30min-Vorausprojektion basierend auf COG + SOG
- Farblich passend zum Schiffstyp, halbtransparent

DARK SHIPS ERKENNUNG:
- Backend erkennt Schiffe die >10min kein AIS-Update senden
- Positionshistorie (letzte 10 Positionen) gespeichert
- API-Endpoint: GET /api/ships/dark
- Verdaechtig wenn vorher aktiv (SOG>0.5) und jetzt still

Backend: ship_type aus AISStream MetaData gespeichert,
AIS-Typcode zu Kategorie klassifiziert (IMO Standard).
2026-03-24 23:21:06 +01:00
Claude Dev
fd9e6558db 5 neue Layer: Militaerflug, Seekabel, Infrastruktur, ISS Tracker
MILITAERFLUGVERKEHR (adsb.lol /v2/mil):
- ~254 Militaerflugzeuge weltweit in Echtzeit (rot)
- Callsign-Labels bei Zoom (RCH=USAF, GAF=Luftwaffe etc.)
- Klick zeigt: Callsign, Registration, Typ, Hoehe, Squawk
- 20s Refresh

SEEKABEL (TeleGeography):
- Untersee-Glasfaserkabel als cyan-Linien auf dem Globus
- ~500+ internationale Kabelverbindungen
- Geopolitisch relevant (Sabotage, Abhoerung)

INFRASTRUKTUR (OpenStreetMap Overpass):
- 348 Kernkraftwerke weltweit (gelb mit Orange-Rand)
- Militaerflughaefen (rot)
- Labels bei Zoom (<500km)
- 24h Cache (statische Daten)

ISS TRACKER (Open-Notify API):
- Echtzeit-Position der ISS (roter Punkt, 420km Hoehe)
- 5s Refresh, prominentes Label
- Klick zeigt Details

Backend: data_military.py, data_infra.py (2 neue Dateien)
Frontend: military.js, cables.js, infra.js, iss.js (4 neue Dateien)
2026-03-24 23:05:43 +01:00
Claude Dev
d3a45f1901 Flugverkehr: adsb.lol als neue Primaerquelle (10.796 Flugzeuge)
OpenSky + airplanes.live ersetzt durch adsb.lol:
- Ein Call: 10.796 Flugzeuge global
- Kein Rate-Limiting
- 15s Refresh, 12s Cache
- Fallback: adsb.one (~7.000 Flugzeuge)
- Mehr Datenfelder: Registration, Flugzeugtyp, Squawk
2026-03-24 14:55:30 +01:00
Claude Dev
a071fb13bd Flugverkehr: Dual-Source (OpenSky + airplanes.live Fallback)
OpenSky als Primary (alle Flugzeuge weltweit, ein Call).
Bei 429 Rate-Limit: automatischer Fallback auf airplanes.live
mit 14 Stuetzpunkten (Europa, USA, Nahost, Asien).
Cache 55s, Collector-Interval 60s.
965+ Flugzeuge auch bei OpenSky-Sperre.
2026-03-24 14:51:52 +01:00
Claude Dev
0944b12e2d 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.
2026-03-24 13:30:52 +01:00
Claude Dev
65a30e0d06 Rechte Sidebar + Monitor-Feed nur Naturkatastrophen
SIDEBAR (neu):
- Aufklappbare Uebersicht aller aktiven Datenpunkte rechts
- Suchfeld filtert alle Eintraege
- Sektionen: OSINT Monitor, Katastrophen (auffaecherbar)
- Flug/Schiff/Satelliten als Zaehler
- Klick auf Eintrag fliegt zur Position
- Ein-/ausklappbar per Pfeil-Button am rechten Rand

MONITOR-FEED FIX:
- Nur Lage 45 (Naturkatastrophen international) wird abgefragt
- Keine anderen Lagen mehr im Globe sichtbar
2026-03-24 13:29:43 +01:00
Claude Dev
27516b1a8a Bidirektionale Monitor-Verbindung + Klick-Zusammenfassungen
GLOBE -> MONITOR (Auto-Push):
- Alle 10min werden NASA EONET + USGS M4.5+ Erdbeben
  automatisch als Artikel in die Naturkatastrophen-Lage (ID 45) gepusht
- Monitor verifiziert und erstellt Zusammenfassung
- Duplikat-Check verhindert doppelte Eintraege

MONITOR -> GLOBE (Klick-Summaries):
- Katastrophen-Layer holt Monitor-Daten beim Start
- Klick auf Katastrophe/Erdbeben zeigt:
  1. Ereignis-Details (Typ, Ort, Magnitude)
  2. Monitor-Zusammenfassung (wenn Lage in der Region existiert)
- Naechsten Monitor-Punkt im 5-Grad-Radius gesucht
- Summary gekuerzt auf 600 Zeichen, Markdown bereinigt
2026-03-24 13:27:36 +01:00
Claude Dev
68387f89fd OSINT Monitor Layer + Erdbeben in Katastrophen zusammengefuehrt
MONITOR LAYER (neu):
- Neuer Top-Layer "OSINT Monitor" im Panel
- Zeigt geoparsete Standorte aus Monitor-Lagen auf dem Globus
- Farbkodiert: rot=Hauptgeschehen, orange=Reaktionen, blau=Beteiligte
- Labels mit Ortsname + Artikelanzahl bei Zoom
- 2min Refresh, GeoJSON vom Monitor Public API

KATASTROPHEN (erweitert):
- Erdbeben-Layer in Katastrophen integriert (kein separater Toggle mehr)
- Laedt NASA EONET + USGS parallel
- Erdbeben als farbige Punkte (rot=frisch, gelb=alt) mit M-Label
- Katastrophen-Toggle zeigt jetzt alles: Waldbraende, Vulkane,
  Stuerme, Fluten UND Erdbeben
2026-03-24 13:11:34 +01:00
Claude Dev
9b4ea4cd28 Neue Features: Satelliten-Orbits, Naturkatastrophen, Visual Modes
SATELLITEN (CelesTrak TLE):
- Raumstationen (ISS), GPS, Galileo, Wetter, Erdbeobachtung, Starlink
- Echtzeit-Positionsberechnung aus Kepler-Elementen (2s Update)
- Orbitbahnen als leuchtende Linien (Stationen, GPS, Galileo)
- Farbkodiert nach Gruppe (rot=Station, orange=GPS, blau=Galileo)

NATURKATASTROPHEN (NASA EONET):
- Waldbraende, Vulkane, Stuerme, Fluten, Erdrutsche, Eis
- Farbige Punkte mit Emoji-Labels
- Klick zeigt Details und Quellen

VISUAL MODES:
- STD: Standard-Ansicht
- NVG: Nachtsicht (gruener Monochrom-Filter)
- FLIR: Thermal-Ansicht (invertiert, Infrarot-Look)
- CRT: Retro-Monitor (Scanlines, Vignette)

4 neue Dateien: satellites.js, disasters.js, visualmodes.js,
data_satellites.py, data_disasters.py
2026-03-24 12:50:04 +01:00
Claude Dev
edff097868 Flights: Umstellung auf OpenSky Network API
airplanes.live ersetzt durch OpenSky Network (opensky-network.org).
Ein einzelner API-Call liefert ALLE Flugzeuge weltweit (~6.500).
Kein Grid-System mehr, kein Rate-Limiting, keine fehlenden Regionen.
Refresh alle 15s. Am Boden stehende Flugzeuge gefiltert.

Regionale Abdeckung verifiziert: Europa 2.662, Nordamerika 2.220,
Asien 688, Suedamerika 221, Afrika 92, Nahost 48, Russland 42.
2026-03-24 12:27:31 +01:00
Claude Dev
2912153252 Fix: Magic Link INSERT fehlte email-Feld und Platzhalter
magic_links Tabelle erfordert email NOT NULL.
INSERT um email-Spalte und Parameter ergaenzt.
2026-03-24 12:17:47 +01:00
Claude Dev
338e082467 Auth: Magic Link Login + Globe-Zugangssteuerung
- Magic Link Login (E-Mail + 6-stelliger Code)
- JWT-basierte Session (24h)
- Prueft: is_active=1 UND globe_access=1
- Akzeptiert auch Monitor-JWT-Tokens (Kompatibilitaet)
- Globe-spezifisches E-Mail-Template (Dark Theme)
- Alle Daten-APIs hinter Auth-Middleware
- Login-Seite mit taktischem Design
- Auto-Redirect bei fehlendem/abgelaufenem Token
- Fetch-Wrapper injiziert Authorization Header automatisch
2026-03-24 11:57:00 +01:00
Claude Dev
a22a4e70d1 Flights: Vollstaendigkeit vor Aktualitaet
Batch-Pause 3s -> 5s, Refresh-Zyklus 60s -> 180s, Cache 45s -> 170s.
Alle 64 Stuetzpunkte werden vollstaendig abgefragt bevor Cache erneuert.
1.694 Flugzeuge global, alle Regionen abgedeckt.
2026-03-24 11:47:02 +01:00
Claude Dev
cbb6596513 Fix: Ortsnamen-Layer, InfoBox bei Klick, globale Flugabdeckung
Ortsnamen: Esri World Boundaries als zuschaltbarer Imagery-Layer.
InfoBox: CSS-Ausblendung entfernt, Dark-Theme Styling.
Flugverkehr: Batch-Groesse 3, Pause 3s, zufaellige Reihenfolge —
alle Regionen bekommen Daten statt nur Europa.
2026-03-24 11:44:13 +01:00
Claude Dev
30410f95dc AegisSight Globe: Initiales Release
Eigenstaendige GEOINT-Anwendung mit CesiumJS 3D-Globus.
Echtzeit-Datenlayer: Flugverkehr (airplanes.live, 64 Stuetzpunkte),
Schiffsverkehr (AISStream.io WebSocket), Erdbeben (USGS),
Nachrichten (GDELT GEO). FastAPI Backend, taktisches Dark-UI.
2026-03-24 11:21:27 +01:00