Skip to content

tb-it-git/einsatzassistent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš’ Einsatzassistent

KI-gestΓΌtztes Lagebriefing + Objektdatenbank fΓΌr die Feuerwehr

Der Einsatzassistent verwandelt die Anfahrtszeit in Vorbereitungszeit. GruppenfΓΌhrer erhalten auf Basis des Alarmstichworts und hinterlegter Objektdaten ein taktisches Lagebriefing β€” bevor sie an der Einsatzstelle ankommen.

Hausbewohner kΓΆnnen sicherheitsrelevante Daten ΓΌber ihr GebΓ€ude hinterlegen (PV-Anlage, Γ–ltank, Sauerstoffpatient, Gefahrstoffe...), die im Einsatzfall den KrΓ€ften zur VerfΓΌgung stehen.

⚠️ Prototyp β€” Dieses Projekt befindet sich in aktiver Entwicklung. Die KI-generierten Briefings sind kein Ersatz fΓΌr Ausbildung, Erfahrung und Erkundung vor Ort.

Warum?

Bei einer Alarmierung weiß der GruppenfΓΌhrer bis zur Ankunft nur das Alarmstichwort der Leitstelle: Kellerbrand, TΓΌrΓΆffnung dringend, VU Lage unklar. FeuerwehrplΓ€ne existieren nur fΓΌr Sonderbauten β€” aber das normale Wohnhaus mit Γ–ltank im Keller, PV-Anlage auf dem Dach und Sauerstoffpatient im Obergeschoss? Da fΓ€hrt der GF blind hin.

Der Einsatzassistent schließt diese Lücke.

Features

🏠 Objektdatenbank

  • GebΓ€udedaten erfassen: Bauweise, Stockwerke, Keller, Dach
  • Energieversorgung: PV-Anlage, Batteriespeicher, Γ–ltank, Gas
  • Gefahren: Gefahrstoffe, Werkstatt, Druckgas, Munition
  • Personen: Sauerstoffpatienten, MobilitΓ€tseinschrΓ€nkungen, Kinder
  • Zugang: Zufahrten, AufstellflΓ€chen, SchlΓΌsseldepot, Hydranten
  • Adresssuche, Import/Export als JSON
  • TestdatensΓ€tze zum Ausprobieren

πŸš’ Einsatzassistent

  • Alarmstichwort aus kategorisierter Liste wΓ€hlen
  • Adresseingabe mit automatischem Objekt-Lookup aus der Datenbank
  • OpenStreetMap-Karte mit Geokodierung der Einsatzstelle
  • KI-generiertes Lagebriefing mit:
    • Lagebewertung (objektspezifisch)
    • Gefahren (stichwortrelevante Objektdaten priorisiert)
    • Erstmaßnahmen (nach PrioritΓ€t)
    • Erkundungsauftrag (Ja/Nein-Fragen)
    • Befehlsvorschlag (FwDV 3 Schema)
    • Funk-Beispiel (realistische Lagemeldung)
  • Feedback-System: Briefings bewerten mit Tags und Kommentaren

πŸ“Š Feedback-Auswertung

  • Dashboard mit Bewertungsstatistik pro Stichwort
  • Schwachstellen im KI-Prompt identifizieren
  • Export der Feedback-Daten als JSON

Quickstart

Mit Docker (empfohlen)

git clone https://github.com/DEIN-USER/einsatzassistent.git
cd einsatzassistent

# .env anlegen
cp .env.example .env
# Optional: Anthropic API-Key eintragen (ohne Key funktioniert die Objektdatenbank, aber keine Briefings)
nano .env

# Starten
docker compose up -d

# Γ–ffnen: http://localhost:3000

Ohne Docker

git clone https://github.com/DEIN-USER/einsatzassistent.git
cd einsatzassistent
npm install

# Starten (ohne KI-Briefings)
node server.js

# Starten (mit KI-Briefings)
ANTHROPIC_API_KEY=sk-ant-... node server.js

Seiten

URL Beschreibung
/ Startseite
/objektdaten.html Objektdatenbank verwalten
/einsatz.html Taktisches Lagebriefing
/feedback.html Feedback-Auswertung
/api/health Diagnose-Endpunkt

API

Objektdaten

Methode Endpunkt Beschreibung
GET /api/objekte Alle Objekte auflisten
GET /api/objekte/:key Einzelnes Objekt laden
PUT /api/objekte/:key Objekt speichern/aktualisieren
DELETE /api/objekte/:key Objekt lΓΆschen
DELETE /api/objekte Alle Objekte lΓΆschen
POST /api/objekte/import Bulk-Import (JSON Array)

Briefing

Methode Endpunkt Beschreibung
POST /api/briefing KI-Briefing generieren (Anthropic Proxy)

Feedback

Methode Endpunkt Beschreibung
GET /api/feedback Alle Bewertungen
POST /api/feedback Bewertung speichern
GET /api/feedback/stats Statistik pro Stichwort
DELETE /api/feedback/:key Einzelne Bewertung lΓΆschen

Export-Formate

Die Objektdaten lassen sich ΓΌber /api/objekte als JSON abrufen und sind damit fΓΌr externe Systeme (Leitstellen, Einsatzplanung) zugΓ€nglich. CSV/XML-Export ist auf der Roadmap.

Konfiguration

Umgebungsvariable Beschreibung Standard
ANTHROPIC_API_KEY API-Key fΓΌr KI-Briefings β€” (ohne Key nur Objektdatenbank)
PORT Server-Port 3000

Architektur

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  🏠 Objektdaten      β”‚     β”‚  πŸš’ Einsatz          β”‚     β”‚  πŸ“Š Feedback      β”‚
β”‚  objektdaten.html    β”‚     β”‚  einsatz.html        β”‚     β”‚  feedback.html   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                           β”‚                            β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
              β”‚  Express    β”‚
              β”‚  REST API   │──── /api/briefing ───► Anthropic API
              β”‚  server.js  β”‚                        (oder Ollama)
              β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
              β”‚ state.json  β”‚
              β”‚ (Dateisys.) β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • Frontend: Vanilla React (via Babel Standalone, kein Build-Step)
  • Backend: Express.js mit In-Memory-Store + File-Persistenz
  • Karte: OpenStreetMap + Leaflet + Nominatim Geokodierung
  • KI: Anthropic API (Claude) β€” perspektivisch auch Ollama (lokal)
  • Daten: JSON-Datei (data/state.json), Volume-Mount in Docker

Designprinzipien

  1. OpenSource (AGPL-3.0) β€” Kein Vendor-Lock-in. Jede Wehr kann es selbst betreiben.
  2. Niedrige EinstiegshΓΌrde β€” Kein Account nΓΆtig fΓΌr Dateneingabe. Formular so einfach wie mΓΆglich.
  3. Leitstellen-kompatibel β€” REST-API als universelle Schnittstelle. CSV/XML-Export geplant. Perspektivisch UCRI/BosMon.
  4. Minimale Kosten β€” Self-hosted, OSM statt Google Maps, Ollama als kostenlose KI-Option.

Berechtigungskonzept

Die Objektdatenbank enthΓ€lt hochsensible Daten. "BettlΓ€geriger Senior, allein, Erdgeschoss links" ist nicht nur einsatzrelevant, sondern auch ein Einbruchsrisiko. Deshalb ist der Zugriff an konkrete EinsΓ€tze gekoppelt β€” ohne Alarmierung keine Daten.

Drei SΓ€ulen

1. Hausbesitzer-Portal (Dateneingabe)

Hausbewohner erfassen ihre Objektdaten ΓΌber ein einfaches Webformular. Der Zugang erfolgt niedrigschwellig, z.B. per QR-Code auf einem Infoflyer der Feuerwehr. Jeder Hausbesitzer sieht und verwaltet nur seine eigenen Daten. Authentifizierung perspektivisch per Passkey β€” kein Passwort nΓΆtig.

2. Zugangssteuerung ΓΌber die Leitstelle (Schleusenprinzip)

Die Leitstelle ist der Gatekeeper. EinsatzkrΓ€fte haben keinen dauerhaften Zugriff auf die Objektdaten. Erst wenn die Leitstelle einen Einsatz an einer Adresse disponiert, wird ein zeitlich begrenzter Zugangstoken erzeugt. Dieser Token ist an drei Bedingungen geknΓΌpft:

  • Adressbindung β€” gilt nur fΓΌr das Objekt an der Einsatzadresse
  • Zeitfenster β€” verfΓ€llt automatisch (z.B. 4 Stunden nach Alarmierung)
  • Einheitsbindung β€” nur die disponierte Einheit kann die Daten abrufen

Technisch ist das ein JWT mit Adresse, Einheit und Ablaufzeit als Claims. Die Leitstelle erzeugt diesen Token automatisch beim Disponieren β€” kein manueller Schritt nΓΆtig.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     Disponiert Einsatz      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              β”‚  ──────────────────────────► β”‚                   β”‚
β”‚  Leitstelle  β”‚                              β”‚  Zugangssteuerung β”‚
β”‚              β”‚  ◄────────────────────────── β”‚  (Token-Service)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     Token (Adresse+Zeit)     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                       β”‚
                     Token via MDT/App                 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β—„β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚              β”‚
β”‚ GruppenfΓΌhrerβ”‚ ──── Fragt Objektdaten ab ──► β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ (Tablet/MDT) β”‚                                β”‚                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  ◄── Daten nur bei gΓΌltigem ── β”‚  Objektdatenbank β”‚
                       Token entschlΓΌsselt      β”‚  (verschlΓΌsselt) β”‚
                                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3. Audit-Trail (Nachvollziehbarkeit)

Jeder Datenzugriff wird protokolliert: wer hat wann welches Objekt abgefragt. Das ist DSGVO-Pflicht und schafft Vertrauen bei den Hausbewohnern, dass ihre Daten nicht "einfach so" einsehbar sind. Der Audit-Trail ist fΓΌr den Datenschutzbeauftragten der Kommune einsehbar.

Umsetzungsstufen

Stufe Beschreibung Status
1. Prototyp Alle Daten offen ΓΌber API abrufbar. Kein Login. Zum Testen und Entwickeln. βœ… Aktuell
2. Basis-Auth Login fΓΌr EinsatzkrΓ€fte. Hausbewohner-Formular per QR-Code ohne Login. Admin-Rolle fΓΌr WehrfΓΌhrer. πŸ”² Geplant
3. Leitstellen-Token Zugriff nur mit gΓΌltigem Einsatz-Token. Automatische Erzeugung bei Disponierung. JWT-basiert. πŸ”² Perspektivisch
4. VerschlΓΌsselung Objektdaten at-rest verschlΓΌsselt. EntschlΓΌsselung nur bei gΓΌltigem Token. Audit-Trail unverΓ€nderbar. πŸ”² Perspektivisch

Hinweis: Im aktuellen Prototyp (Stufe 1) sind alle Daten ungeschützt über die API abrufbar. Nicht mit echten personenbezogenen Daten betreiben! Für den Übungsbetrieb und die Entwicklung mit Testdaten ist das ausreichend.

Roadmap

  • Vereinfachtes Hausbewohner-Formular (QR-Code β†’ 10-Fragen-Version)
  • Ollama-Integration als kostenlose lokale KI-Alternative
  • CSV/XML-Export fΓΌr Leitstellen-Systeme
  • Grundriss-/Bild-Upload pro Objekt
  • Offline-fΓ€hige statische Einsatzkarten als KI-Fallback
  • Anbindung an BOS-Übungsplattform
  • Mobile-optimierte Ansicht fΓΌr Tablets im Fahrzeug
  • Zugangssteuerung (Rollen: Hausbewohner, Einsatzkraft, Admin)
  • Leitstellen-Token-System (Zugriff nur bei aktiver Alarmierung)

Mitmachen

Siehe CONTRIBUTING.md fΓΌr Details.

Kurzfassung: Issues und Pull Requests sind willkommen. Besonders gesucht:

  • EinsatzkrΓ€fte die Briefings testen und Feedback geben
  • Entwickler die bei Frontend, API oder Leitstellen-Integration helfen
  • Feuerwehren die den Prototyp im Übungsbetrieb testen

Lizenz

AGPL-3.0 β€” Du darfst den Code nutzen, Γ€ndern und weitergeben, solange du Γ„nderungen unter derselben Lizenz verΓΆffentlichst. Das gilt auch fΓΌr Server-Deployments (AGPL-Netzwerkklausel).

Hinweis

Dieses Projekt ist ein Prototyp. KI-generierte Briefings sind kein Ersatz fΓΌr Ausbildung und Erfahrung. Alle taktischen Entscheidungen liegen beim GruppenfΓΌhrer. Die Objektdaten werden von Hausbewohnern freiwillig bereitgestellt und kΓΆnnen unvollstΓ€ndig oder veraltet sein.


Ein Projekt von tb-it.eu fΓΌr die Feuerwehr.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors