ETB – Das Einsatztagebuch

ETB – Das Einsatztagebuch

ETB – Das Einsatztagebuch (kurz: ETB) ist das Einsatzdokumentations-Produkt von BrunSoft.

Web-basiertes Einsatztagebuch mit automatischem Mail-Parser, Lagekarte, Telegram-Alarmierung und Rollen-Konzept — entwickelt für eine Feuerwehr in NRW, von Grund auf darauf ausgelegt, von anderen Feuerwehren übernommen und über einen Setup-Wizard auf die eigene Wache konfiguriert zu werden.

Status: aktiv im Einsatz bei einer Feuerwehr. Andere Feuerwehren sind willkommen — die ortspezifischen Stellen werden Schritt für Schritt in den Setup-Wizard und in Konfigurations-Settings verschoben.


Was es kann

  • Mail-Parser — eingehende Alarm-Mails der Leitstelle werden automatisch geparst (Stichwort, Adresse, Sachverhalt, Einsatzmittel, Melder) und erzeugen einen Einsatz in der Datenbank.
  • Stichwort-Katalog — administrierbarer Katalog der Einsatzstichworte (Kategorie, volles Stichwort, Anzeige-Variante, Aliase) inkl. CSV-Import und automatisch abgeleiteter Anzeige-Variante über Ausblend-Präfixe. Im Einsatz-Formular wählst du das Stichwort verkettet (Kategorie → Stichwort); Freitext bleibt für noch nicht katalogisierte Stichworte möglich. Der Mail-Parser gleicht eingehende Alarm-Mails gegen den Katalog ab (Treffer auf volles Stichwort oder Alias → Anzeige-Variante).
  • Lagekarte — Leaflet/OpenStreetMap, zeigt offene und abgeschlossene Einsätze, Hydranten und Einsatzmittel-Marker. Das Einsatzmittel-Panel öffnet am Smartphone und im Tablet-Hochformat als Vollbild-Overlay.
  • Karten-Links je Einsatz — direkte Sprünge zur Einsatzstelle in externen Karten-Diensten: TIM-Online (NRW-Kataster), Digitaler Zwilling NRW (dz.nrw.de, landesweites 3D-Geosystem — je Instanz ab-/zuschaltbar), OpenStreetMap und der eigene Hydrantenplan — in der Einsatz-Detailseite und in der Telegram-Alarm-Nachricht. Die für den Digitalen Zwilling nötigen UTM-Koordinaten (EPSG:25832) berechnet das ETB automatisch aus den GPS-Daten.
  • Kurz-Standort je Einsatz — optionales, kompaktes Standort-Kürzel zusätzlich zur Adresse, automatisch aus den GPS-Koordinaten abgeleitet: als Plus Code (Open Location Code, offline berechnet, kostenlos) und/oder what3words (kostenpflichtiger API-Schlüssel in config/.env). Beide Anbieter sind je Instanz einzeln zuschaltbar und standardmäßig aus; im Bearbeiten-Formular lässt sich der Standort auch per Kürzel setzen (bidirektionale Angleichung mit GPS/UTM). what3words mit Monatszähler und Verbindungstest im Admin sowie Kontingent-Karte im System-Status.
  • Hydrantenplan — eigene OSM-basierte Karte mit dem Hydranten-Inventar der Wehr, gespeist aus einer selbst hochgeladenen GeoJSON-Datei (zweistufiger Upload mit Vorschau, tolerant bei Feldnamen). Farb-Klassen nach Nennweite (Schwellen, Bezeichnungen und Farben frei konfigurierbar), Filter nach Ort und Dimension.
  • Meldungs-Bus & Alarmierung — alle Nachrichten des ETB laufen über eine kanal-unabhängige Schicht: Adressiert wird an Benutzer, Rollen und Löschgruppen, ein austauschbarer Kanal-Adapter macht daraus die Zustellung (heute Telegram, weitere Wege folgen). Der Zustellweg gilt für die ganze Installation — ein einzelner Benutzer wählt ihn bewusst nicht selbst. Im Admin-Bereich Mitteilungen legst du je Meldungsart mehrere Regeln fest (die Führungsstelle bekommt anderen Text und andere Rückmeldungen als eine Löschgruppe; pro Person greift die erste passende), je Regel eine Kurzfassung für Benachrichtigungen — bewusst ohne Personendaten — und eine Langfassung. Dazu ein Zustellnachweis mit fünf Zuständen (zugestellt, nur eingeschränkt, nur im ETB sichtbar, nicht gesendet, fehlgeschlagen) und Eskalation bei echter Fehlzustellung; einen Ausweichkanal gibt es bewusst nicht. Jeder Benutzer sieht unter Meldungen, was an ihn ging. Für reine Alarm-Empfänger gibt es die Rolle Einsatzkraft: ein Konto ohne Zugang, das die Person nur adressierbar macht. Telegram bringt weiterhin die Sonder-Nachricht für IuK-Alarmstichworte und sechs frei editierbare Nachrichten-Templates (Alarm, Alarmierungsliste, Fehler, Heartbeat, ETB-Reset, Selbsttest) mit Platzhaltern und Live-Vorschau.
  • Multi-Alarm-Regeln & manuelle Auslösung — ein Stichwort kann automatisch mehrere Folge-Einsätze (oder -Abschnitte) anlegen (z. B. UW-ERSTALARM → Grundschutz + Bereitstellung). Bleibt die Leitstellen-Mail aus, löst der Knopf Alarm auslösen" dieselbe Regel von Hand aus — Basis-Einsatz + Folge-Einsätze an wählbarer Adresse inklusive echter Telegram-Alarmierung, mit Cooldown gegen Doppelauslösung (Recht „Alarm manuell auslösen", Default Lage/EL/Admin). Auch bei manuell angelegten oder geänderten Einsätzen bietet ein Bestätigungs-Banner das Auslösen passender Regeln an (Telegram optional, je Regel und Einsatz nur einmal).
  • Rollen-Konzeptadmin, lage, einsatzleiter, dispo, sp_dispo, gast mit abgestuften Rechten auf Einsätze, Abschnitte, Schwerpunkte und Stammdaten, dazu einsatzkraft als reiner Meldungs-Empfänger ohne Login (das Konto macht die Person nur über ihre Löschgruppe adressierbar). Berechtigungen pro Rolle administrierbar (/admin/rollen.php) über eine Häkchen-Matrix aus 47 atomaren Permissions — mit Admin-Failsafe und Locked-Permissions gegen Selbst-Aussperren. Rollen-, Aktiv- und Einsatz-Rollen-Änderungen wirken ohne Neuanmeldung (Status-Prüfung pro Request; deaktivierte Konten werden sofort ausgeloggt). Passwort-Selbsthilfe per E-Mail-Link (zeitlich begrenzt, einmalig, nur für Konten mit hinterlegter E-Mail) über ausgehenden SMTP-Versand; keine Selbstregistrierung.
  • Einsatz-Rollen (temporäre Rollen) — einem Benutzer befristet (max. 48 h) die höhere Rolle Einsatzleiter oder Lage leihen, z. B. für eine mehrtägige Lage. Wirkt sofort ohne Neuanmeldung, das höhere Recht gewinnt („Highlander"), und läuft automatisch aus. Administrator und Schwerpunkt-Dispo sind ausgeschlossen. Wer die Rolle selbst nur geliehen hat, darf sie ihrerseits weitervergeben — die Kette wird dabei über die Laufzeit gedeckelt (endet spätestens mit der eigenen geliehenen Rolle), nicht über ein Verbot. Dazu der Alarm-Knopf (je Alarm-Regel konfigurierbar): Löst die Regel aus, kann ein Disponent die Rolle Lage oder Einsatzleiter einmalig selbst übernehmen — für Alarmlagen ohne anwesende Führung; die so übernommene Lage darf dabei unabhängig vom sonst nötigen Vergabe-Recht weitervergeben, höhere Rollen können das Angebot stattdessen entschärfen. Entziehen („Entfernen", „Alle zurücksetzen") bleibt dagegen der festen Basis-Rolle vorbehalten — eine geliehene Rolle kann ihrem Verleiher nichts wegnehmen.
  • Abschnitts-Funktion — größere Einsätze in operative Abschnitte unterteilen (Wasserversorgung, Brandbekämpfung, …) mit eigenem Status, Abschnittsleiter, Funk-Rufgruppe und Einsatzmittel-Zuweisung.
  • Schwerpunkte (Großlagen-Gruppierung) — bei Unwetter, Flächenbrand oder Großübung mehrere Einsätze unter einem dedizierten Disponenten bündeln; eigener Einsatzmittel-Pool, eigene Lagekarte mit Dichte- Visualisierung, automatische Einsatz-Zuweisung nach Ort, eigenes „Schwerpunkttagebuch" mit gefiltertem Sub-View aller Module. Optional entsteht beim Anlegen automatisch ein Leitungs-Einsatz für die Schwerpunkt-Führung — ein ganz normaler, oben fixierter Einsatz, der sich wie jeder andere verhält (auch beim Abschluss). Wichtige Einsätze lassen sich in der Übersicht per Reißzwecken-Symbol anheften und stehen dann unabhängig von Sortierung immer oben.
  • Bevölkerungswarnung (MoWaS) — das standardisierte Anforderungsformular für eine Warnung über das Modulare Warnsystem (Warn-App NINA, Sirenen, Cell Broadcast, Rundfunk) im ETB erfassen, freigeben und als versandfertiges PDF erzeugen — an einem Einsatz oder Schwerpunkt gestartet und aus dessen Daten vorbelegt. Mit Vier-Augen-Freigabe je Zyklus (Erstwarnung → Aktualisierung → Entwarnung), Warnbereichen (eigen/Nachbar/„Gesamt"), editierbaren Handlungsempfehlungen und Meldungsvorlagen mit Platzhaltern, administrierbaren Katalogen samt Musterdaten-Loader, revisionsfester Historisierung der übermittelten Stände, einem Zivilschutz-Warn-Indikator in Listen/Detail und Warnflächen auf den Karten. Der zu warnende Bereich ist wahlweise ein Umkreis oder die gesamte Gemeinde — gilt die Warnung der ganzen Gemeinde (Feld 7 oder ein als „Gesamt" markierter Warnbereich), zeichnen Lagekarte und Einsatz-Karte statt eines Kreises den Gemeinde-Umriss (einmalig aus OpenStreetMap geholt oder als GeoJSON-Datei hochgeladen). Eine offene Warnung blockiert das Erledigen des zugehörigen Einsatzes bzw. Schwerpunkts, bis sie abgeschlossen ist. Vier eigene Rechte (mowas.view/create/release/export) — Sehen und das Herunterladen der Formulare (PDF/Excel) sind getrennt, Downloads werden protokolliert; die Warnung wird nie automatisch versendet. Verlangt Eure Leitstelle ihr eigenes Formular, füllt das ETB es maschinell: Für die Kreisleitstelle Rhein-Sieg-Kreis entsteht das Original-Formular (F.1 Anlage A) als fertige, in Excel weiter bedienbare Excel-Datei zum Download (umschaltbar in den Stammdaten, PDF bleibt daneben erhalten). Die Gemeinde wird einmalig aus dem Formular selbst gewählt, und eine neue Formular-Version der Leitstelle spielt der Administrator geprüft selbst ein.
  • Wetter (zubuchbares Zusatzmodul) — amtliche Warnungen des Deutschen Wetterdienstes für frei wählbare Beobachtungsgebiete (eigene Gemeinde, Nachbarn, Kreis — komfortabel aus dem amtlichen DWD-Gebietskatalog gewählt), aktuelle Messwerte, eine 24-Stunden-Vorschau mit Vorwarnzeit im Klartext und ein Lagebild zum Ausdrucken für die Lagebesprechung. Auf Lagekarte, Wetterseite und maximierter Einsatzkarte drei zuschaltbare Ebenen: DWD-Warnflächen (schraffiert, Muster kodiert die Stufe, dazu das Symbol der Warnart — Gewitter, Sturm, Regen, Schnee, Glätte, Frost, Tauwetter, Nebel, Hitze, UV; Hitze und UV nach der eigenen Farbskala des DWD), Regenradar mit Zeitleiste (−2 h bis +2 h, abspielbar) und Blitze & Vorhersage (erkannte Blitze plus Vorhersage für die nächste Stunde). Ein Klick auf die Karte setzt die Wetter-Rose (Temperatur als Ring und Zahl, Windkeil in Wehrichtung, Böen als Zacken) und daneben die Warntafel mit der Warnlage an genau diesem Punkt, inklusive Gebietsname. Die Wetterkarte lässt sich maximieren, ohne Ausschnitt und Schalterstellung zu verlieren. Jeder neue Einsatz hält automatisch fest, wie das Wetter bei der Anlage war (Detailsicht und PDF-Export); Warnung und aktuelles Wetter lassen sich per Knopf als Kommentar ins Tagebuch übernehmen (Text serverseitig erzeugt, nie aus dem Formular). Warnungen, Warnflächen, Radar und Blitze kommen immer vom DWD (über Bright Sky und die DWD-Geodienste, mit Ausweichweg für die Warnungen); für Kennzahlen und Vorhersage ist zusätzlich MET Norway wählbar (CC BY 4.0, Kontakt-Kennung Pflicht), wahlweise als Modellwert für den Ort (MOSMIX) oder als Stationsmessung — die Anzeige nennt immer den Dienst und sagt, was von beidem sie zeigt. Ein Leserecht (wetter.view), standardmäßig nicht freigeschaltet: ohne Freischaltung sind Menüpunkt, Seiten und Karten-Ebenen für alle unsichtbar.
  • Audit-Log — jede Mutation (Einsatz, Abschnitt, EM-Zuweisung, Kommentar) wird revisionsfest geloggt.
  • PDF-Export — kompletter Einsatz-Bericht inkl. Kommentaren, Anhängen, Abschnitten, einer Einsatzmittel-Übersicht mit Stärke & Kontakt und optional Audit-Historie. Bild-Anhänge werden für die PDF-Datei automatisch verkleinert (max. 1600 px, JPEG) — die Originale bleiben unverändert.
  • Setup-Wizard — geführte Erst-Konfiguration (Org-Name, Logo, Karten- Center, Telegram, Mailbox, …).
  • Mehrmandanten-fähig — Tabellen-Präfix pro Instanz, mehrere ETBs können in derselben DB nebeneinander laufen.
  • Dark-Mode & UI-Komfort — app-weiter dunkler Modus (folgt initial dem Betriebssystem), einklappbare Sidebar und ein separater Hell/Dunkel-Schalter für die Vollkarten (Lagekarte, Hydrantenplan); die Mini-Karten in Einsatz- und Abschnitts-Detail folgen automatisch dem App-Theme. Die Einsatz-Übersicht lässt sich zwischen Komfort (luftige Karten-Zeilen) und Kompakt (dicht, für viele Einsätze) umschalten; jeder Einsatz trägt eine farbige Status-Kachel (laufende Nummer + Kurz-Status) in Liste, Detail-Kopf, je Abschnitt und als Lagekarte-Marker, Abschnitte lassen sich direkt in der Liste aufklappen. Status und Wichtigkeit werden über Farbe + Label unterschieden (keine Icons/Marker-Formen); die Farben der fünf Einsatz-Status sind admin-konfigurierbar (/admin/einsatz-status-farben.php) und wirken überall — Pillen, Zeilenbalken, Kacheln, Lagekarte-Marker und Filter. Durchgängige Inline-SVG-Icons (Tabler-Stil) statt Emoji. Zentrale Design-Tokens (tokens.css) für ein konsistentes, an einer Stelle anpassbares Erscheinungsbild. Die laufende Programmversion steht dezent unten in der Seitenleiste und auf der Login-Seite — bei jedem Deploy automatisch aus dem Git-Stand erzeugt.
  • Mobil nutzbar & installierbar (PWA) — auf schmalen Bildschirmen ausklappbares Off-Canvas-Menü, einspaltige Formulare und größere Touch-Ziele; per „Zum Startbildschirm hinzufügen" als App-ähnliche Verknüpfung installierbar (HTTPS), mit echten App-Icons in allen Größen (192/512 px inkl. adaptiver „maskable"-Variante für Android, opakes 180-px-Icon für iOS) — automatisch aus dem Branding-Logo gerendert. Bewusst ohne Offline-Datenspeicher (Network-first) — ein Einsatztagebuch zeigt stets den aktuellen Stand. Ohne Netz erscheint statt der Browser-Fehlerseite eine eigene Offline-Seite mit „Erneut versuchen"-Knopf und Verbindungs-Status, die ausdrücklich darauf hinweist, dass gerade Abgeschicktes nicht gespeichert ist. Auf schmalen Bildschirmen führt ein Sprungknopf „Zu den Einsatzmitteln" direkt zur unter den Inhalt gerutschten EM-Seitenleiste.
  • Branding — Login-Logo, separates Menü-Logo für die Seitenleiste und Favicon hochladen sowie die Leitstellen-Adresse hinterlegen. Farben und Schrift kommen bewusst aus dem ausgelieferten Design (zentrale Design-Tokens) mit sauberer Hell-/Dunkel-Variante.
  • Integriertes Handbuch & Kontext-Hilfe — seiten-genaue Bedienungsanleitung (ein Thema je Bildschirm) in der App („Hilfe"), als „?"-Schublade direkt im Kontext jeder Seite, ohne Login unter /handbuch.php lesbar und ins GitLab-Wiki gespiegelt — Inhalt einmal als Markdown gepflegt.

Anforderungen

  • PHP 8.1+ (auf 8.4 getestet) mit Extensions: pdo_mysql, imap, mbstring, fileinfo, curl, dom, gd; optional zip (nur für den Excel-Export der Bevölkerungswarnung im Original-Formular einer Leitstelle — ohne die Erweiterung läuft alles andere unverändert; es entfallen dann auch die Gemeinde-Auswahl und das Einspielen einer neuen Formular-Version, weil beides aus der Formular-Datei gelesen wird)
  • MySQL 5.7+ / MariaDB 10.3+
  • Webserver mit Document-Root auf public/ und Rewrite-Modul (Apache mod_rewrite oder Nginx)
  • Cron alle 1–5 Minuten für die Mailbox-Abfrage
  • Ausgehende HTTPS-Verbindungen vom Server (nur für das Zusatzmodul Wetter: api.brightsky.dev und maps.dwd.de, bei gewähltem Dienst MET Norway zusätzlich api.met.no; die Bilder von Regenradar und Blitzen holt der Browser direkt beim DWD)

Installation

  1. Code in den Webserver kopieren und Document-Root auf public/ setzen.
  2. Konfiguration anlegen:
    cp config/.env.example config/.env
    # DB-Zugang + IMAP-Postfach (Alarm-Mails) eintragen; optional SMTP_*
    # fuer „Passwort vergessen" (ausgehende Mail). APP_TIMEZONE nur, wenn
    # die Wehr NICHT in Europe/Berlin liegt (das ist die Vorgabe).
  3. Im Browser öffnen — der Setup-Wizard erscheint automatisch und führt durch die restlichen Schritte (Org-Name, Logo, Standort, Erste User, Telegram-Bot, Cron-Token).
  4. Cron einrichten — der Wizard zeigt am Ende den passenden Crontab-Eintrag mit Token; alternativ unter Admin → Einstellungen einsehbar:
    */2 * * * * curl -fsS "https://etb.example.de/cron.php?token=…" >/dev/null

Update einer bestehenden Installation

git pull
# Schema-Aenderungen wendet die SchemaProvider-Migration beim naechsten
# Login automatisch an.

Erscheint nach dem Update der Schema-Banner, einmalig /admin/schema-check.php → „Reparieren" ausführen — legt neue Tabellen und Spalten an (z. B. für den Passwort-Reset). Wer „Passwort vergessen" nutzen will, ergänzt zusätzlich die SMTP_*-Werte in config/.env.

Für den Meldungs-Bus legt derselbe Schema-Check die Tabellen user_loeschgruppe, meldung_arten, meldung_regeln, meldungen, meldung_zustellungen und meldung_kanal_ziele an, spielt den Meldungskatalog ein, ergänzt die Rolle einsatzkraft und rüstet das Recht mitteilung.durchsage nach. An der Alarmierung ändert sich dabei nichts: Die Chat-IDs aus der config/.env gelten als Rückfall weiter, bis du sie unter Admin → Mitteilungen durch eigene Zuordnungen ersetzt.

Das Zusatzmodul Wetter schaltest Du unter Admin → Feuerwehr → Wetter → Freischaltung frei. Das Leserecht wetter.view zieht der Schema-Check für alle Rollen nach, die schon die Lagekarte sehen dürfen; feiner einstellen kannst Du es danach unter Admin → Rollen & Berechtigungen.

Backups (DB-Dump + storage/uploads/ + public/branding/) vor jedem Update werden empfohlen.

Dokumentation

Eine ausführliche Bedienungsanleitung liegt unter docs/handbuch/seiten-genau geschnitten (ein Thema je Bildschirm, mit Frontmatter für Reihenfolge und Gruppierung) — und ist über vier Wege zugänglich, immer derselbe Inhalt:

  • Kontext-Hilfe: das „?" rechts in der Aktionsleiste der meisten Seiten öffnet das passende Thema in einer seitlichen Hilfe-Schublade (bleibt über Reload/Seitenwechsel offen; auf schmalen Bildschirmen/PWA ausgeblendet).
  • In der App: Sidebar-Eintrag „Hilfe" — das ganze Handbuch mit aufklappbaren Gruppen, ergänzt um dein konfiguriertes Branding.
  • Öffentlich ohne Login: /handbuch.php — dasselbe Handbuch ohne Anmeldung lesbar (eigenes, bewusst helles Layout); auf der Login-Seite neben „Passwort vergessen?" verlinkt.
  • Im GitLab-Wiki: Home — zum Nachlesen außerhalb der Anwendung (z. B. auf dem Tablet während eines Einsatzes).

Master-Quelle sind immer die Markdown-Dateien im Repo. Das Wiki wird via scripts/wiki-sync.ps1 aktuell gehalten.

Releases

  • v4.8.0 — Feature-Release: Wetter als zubuchbares Zusatzmodul (#210 (closed)). Amtliche Warnungen des Deutschen Wetterdienstes für frei wählbare Beobachtungsgebiete, aktuelle Messwerte, eine 24-Stunden-Vorschau mit Vorwarnzeit im Klartext und ein Lagebild zum Ausdrucken. Auf Lagekarte, Wetterseite und maximierter Einsatzkarte drei Ebenen: DWD-Warnflächen (schraffiert, mit dem Symbol der Warnart; Hitze und UV nach der eigenen Farbskala des DWD), Regenradar mit Zeitleiste und Blitze & Vorhersage. Ein Klick auf die Karte setzt die Wetter-Rose und daneben die Warntafel mit der Warnlage an genau diesem Punkt; die Wetterkarte lässt sich maximieren. Jeder neue Einsatz hält automatisch fest, wie das Wetter bei der Anlage war; Warnung und aktuelles Wetter lassen sich als Kommentar ins Tagebuch übernehmen. Warnungen, Flächen, Radar und Blitze kommen immer vom DWD; für Kennzahlen und Vorhersage ist zusätzlich MET Norway wählbar (CC BY 4.0, Kontakt-Kennung Pflicht). Neues Leserecht wetter.view; das Modul ist standardmäßig aus. Mit gebündelt ist das nie veröffentlichte Zwischenrelease 4.7.5: Einsätze anheften, optionaler Leitungs-Einsatz am Schwerpunkt, eine offene Bevölkerungswarnung blockiert das Erledigen, der Formular-Download hängt am neuen Recht mowas.export, Filter „Mit Warnung", Sperrmeldungen nennen Namen statt Anzahl — dazu die selbst gesetzte Zeitzone (APP_TIMEZONE, PHP und Datenbank gemeinsam). Schema-Check nötig (vier Wetter-Tabellen, Spalte einsaetze.ist_fixiert, Rechte wetter.view und mowas.export).
  • v4.7.0 — Feature-Release: Export der Bevölkerungswarnung im Original-Formular der Leitstelle (#208 (closed)). Die Kreisleitstelle Rhein-Sieg-Kreis akzeptiert nur ihr eigenes Excel-Formular — das ETB befüllt dieses Original (F.1 Anlage A, Version 8.3) jetzt maschinell aus der Warnung und bietet es ab der Freigabe als Download an („Formular Leitstelle (Excel)"), inklusive Ankreuzfeldern, Koordinaten- Kästchen, Warnbereichen und archivierten Ständen; die Datei rechnet beim Öffnen neu durch und bleibt in Excel bedienbar (Auswahllisten, Klartext-Zeilen). Umgestellt wird das in den MoWaS-Stammdaten über die neue Export-Vorlage (Voreinstellung bleibt das bisherige Standard-Dokument, das PDF bleibt zusätzlich erhalten). Dort wird auch die Gemeinde einmalig festgelegt (Auswahl aus dem Formular selbst — sie bestimmt Feld 2 und den Verwaltungsbereich-Code), eine neue Formular-Version der Leitstelle geprüft selbst eingespielt und die Gemeindegrenze für die Karten geholt (oder als GeoJSON-Datei hochgeladen); dazu Standardwerte für die Bürgerinformation (Feld 17). Im Melde-Formular ist Feld 7 jetzt eine Entscheidung zwischen Umkreis und gesamter Gemeinde; gilt die Warnung der ganzen Gemeinde — über Feld 7 oder über einen als „Gesamt" markierten Warnbereich (Feld 11) —, zeichnen Lagekarte und Einsatz-Karte den Gemeinde-Umriss statt eines Kreises. Ohne gespeicherte Gemeindegrenze bleibt die Fläche bewusst leer, ein Kreis wäre dort irreführend. Der Übermittlungs-Hinweis nennt jeweils das richtige Dokument. Für den Excel-Export braucht der Server die PHP-Erweiterung zip; fehlt sie, bleibt es sichtbar beim Standard-Dokument. Schema-Check nötig (neue Spalte für die gespeicherte Auswahlreihenfolge der Warnbereiche).
  • v4.6.0 — Feature-Release: Bevölkerungswarnung (MoWaS) (#208 (closed)). Das ETB kann das Anforderungs-/Meldeformular für eine Bevölkerungswarnung erfassen, über ein Vier-Augen-Prinzip freigeben und als PDF-Dokument für die Leitstelle erzeugen — gestartet an einem Einsatz oder Schwerpunkt. Der Ablauf ist Phase × Zyklus (Erstwarnung → Aktualisierung 1…n → Entwarnung, je Entwurf → Zur Freigabe → Freigegeben → Bei Leitstelle → Aktiv), jede Übermittlung wird als revisionsfester Stand historisiert und am Einsatz per System-Kommentar dokumentiert. Dazu Gefahrenbereich (vier Koordinatenformate, Pflicht-Umkreis, bis zu drei Warnbereiche), editierbare Handlungsempfehlungen mit Auswahl-Fenster, ein Warn-Indikator (Zivilschutz-Zeichen) und Warn-Radius auf den Karten, drei Rechte mowas.view/create/release sowie eine eigene MoWaS-Leitstelle in den Stammdaten. Die Warnung wird nicht automatisch versendet — das ETB erzeugt nur das Dokument. Schema-Check nötig (/admin/schema-check.php → „Reparieren").
  • v4.5.1 — Wartungs-Release (#200 (closed) komplett, überwiegend intern): der bislang auf rund 40 Sidebar-Seiten von Hand kopierte Seitenrahmen (<!DOCTYPE> bis layout-main samt schließender Tags) wandert in drei neue Helfer MainNavSidebar::pageHead() / pageBody() / pageEnd() (#200 (closed)-B1); Erfolgsmeldungen laufen über einen Session-Flash statt ?msg=-URL-Parameter (#200 (closed)-B2), der sp_url()-Helfer trägt den Schwerpunkt-Kontext auch in der Einsatzübersicht (#200 (closed)-C) und die Modal-Mechanik ist vereinheitlicht (geteiltes Schließen-X, ein EtbModal-Öffnen/Schließen-Helfer, zentrale Tab-Fokusfalle; #200 (closed)-A). Einzige sichtbare Änderungen: eine kleine Barrierefreiheits-Verbesserung (Tastatur-Fokus bleibt jetzt auch in den beiden Schwerpunkt-Einstellungen-Fenstern) und sauberere URLs nach dem Speichern — sonst kein neues Feature. Kein Schema-Check nötig.
  • v4.5.0 — Feature- und Härtungs-Release: Kurz-Standort je Einsatz (#186 (closed)) — kompakte Standort-Kürzel (Plus Codes offline/kostenlos und what3words, letzteres auch ohne API-Schlüssel von Hand pflegbar), beide auf die jeweilige Karte verlinkt, mit Kostenschutz (Pro-Einsatz-Deckel) für die kostenpflichtige what3words-Automatik; Hydrantenplan aus eigener GeoJSON-Datei statt Google MyMaps (#181 (closed), konfigurierbare Dimensionsklassen); PWA-Offline-Seite + mobiler EM-Sprungknopf (#195 (closed)); Rechte-Konsolidierung und -Härtung (#201 (closed)/#202 (closed)/#204 (closed)/ #205 (closed)/#206 (closed)): der Status-Riegel und abschnitt.create sitzen zentral/serverseitig, „Max. Abschnitte pro Einsatz" wird erzwungen; export-Bild-Cache mit Eviction (#203 (closed)) und ein Deploy-Schutz, der einen fehlenden Schema-Stand nach einem Update mit einer freundlichen Hinweisseite statt einer Fehlerseite abfängt. Update-Hinweis: einmaliger Schema-Check nötig (legt die neuen Kurz-Standort- Spalten an; Plus Codes werden für Bestandseinsätze offline nachgetragen).
  • v4.1.0 — Konsolidierungs-Release (Design-System, Endpoints, Security): Sondersignal-Automatik (#41 (closed)) — das Sondersignal der Leitstellen-Mail setzt automatisch die Eil-/Zeit-Wichtigkeit (frei konfigurierbar über zwei neue Spalten in der Wichtigkeit-Verwaltung); Design-System-Konsolidierung (#189 (closed)): zentrale Design-Tokens (Schrift/Radius/Schatten), geteilte Komponenten-Bausteine (.cmp-scope), eine einheitliche z-index-Leiter (schwebende Hinweise liegen jetzt zuverlässig über Dialogen), projektweit einheitliche AJAX-Antwortform und ein zentraler sp_url()-Helfer für den Schwerpunkt-Kontext; echte PWA-App-Icons (#194 (closed)) und automatische Bild-Verkleinerung im PDF-Export (#191 (closed)); ein Security-Block (500er-Deckel für Massen-Aktionen, 5000-Zeilen-Limit im CSV-Import, Cleanup abgelaufener Temp-Rollen, HTTPS-only-Weiterleitungen + datensparsames Telegram-Protokoll, einheitliche Scope-Meldungen) sowie kleinere Bugfixes (#187 (closed)/#193 (closed)). Außerdem Projekt-Umzug zu GitLab. Update-Hinweis: einmaliger Schema-Check nötig (legt die neuen Eil-/Zeit-Einstellungen idempotent an).
  • v4.0.0 — Großes Funktions- und Fundament-Release: neuer Einsatz-Status-Lebenszyklus mit Abschnitts-Sperre und geführtem Abschluss-Workflow; Einsatz-Rollen (temporär geliehene Führungsrollen, „Highlander"), manuelles Auslösen von Alarmregeln und der Alarm-Knopf (einmaliges Rollen-Angebot zur Selbstübernahme); Stichwort-Katalog (Pflege, Auswahl im Einsatz-Formular, Mail-Parser-Abgleich, Auslösen auch bei manuellen Einsätzen); Entmandantisierung (neutrale Standard-Texte); Design-Konsolidierung (Status-Kachel, Komfort/Kompakt-Umschalter, durchgängige SVG-Icons, vereinfachtes Branding); Orts- & Abschluss-Block (verbindliche Katalog-Orte, Adress-Suffix je Ort, Geocode-Cache-Zugriff, Schwerpunkt-Abschluss Erledigt/Abgeschlossen); Stärke-Block (Drei-Felder- Eingabe ZVF/GF/Ma, zuletzt zugewiesene Stärke, Gruppe „entlassen"), überörtliche Einsatzmittel im SP-Wizard (tastaturbedienbar) und die mitscrollende EM-Übersicht; das Karten-Paket „Digitaler Zwilling NRW" (automatische UTM-Koordinaten EPSG:25832) plus Tablet-Hochformat der Lagekarte; Einsätze endgültig löschen (Hard-Delete mit Begründung; Recht einsatz.delete, Kommentar-Moderation wandert nach comment.delete); dazu ein Barrierefreiheits- und Politur-Block (Einsatzmittel-Status zusätzlich als Text statt nur Farbe, markenrote statt blaue Bestätigungs-Dialoge, Tastatur-Fokusfallen, Dark-Kontraste) und die Lagekarten-Scope-Härtung für Disponenten. Update-Hinweis: einmaliger Schema-Check nötig; die Entmandantisierung meldet beim Update außerdem alle aktiven Sitzungen einmalig ab
  • v3.0.1 — Bugfixing & Feinschliff: neues Recht „Als Disponent arbeiten" (Default Dispo fest, Lage/Einsatzleiter zuschaltbar, Admin via Failsafe; SP-Dispo bleibt ausgeschlossen); Einsatzmittel-Seitenleiste zeigt durchgängig die laufende Nummer (#007) und frisch alarmierte Mittel korrekt als „im Einsatz"; zugeordnete Einsatzmittel jetzt auch mobil sichtbar; Live-Update der EM-Seitenleiste bei Statuswechsel; app-weit neutrale Link-/ Button-/Kachel-Farben (kein Blau nach Klick); Dark-Mode-Korrekturen (Setup-Wizard, Geocode-Admin/-Cache, EM-Gruppen, Lagekarte); Lagekarte- und Geocode-Nummern im #007-Format; diverse Disponenten-Feinheiten
  • v3.0.0 — Schwerpunkte, Sicherheit & UX-Overhaul: Schwerpunkt- Einsatzstärke getrennt nach „im Einsatz" und „Reserve", Einsatzmittel- Stärke im Schema A/B/C/S (Gesamt automatisch); Theme-Engine inkl. Dark-Mode-Feinschliff, gruppiertes Hauptmenü, Menü-Logo, Setup-Wizard mit vertikaler Schritt-Navigation, mobil/PWA inkl. Touch-Drag für die Einsatzmittel-Zuweisung, Versionsanzeige in Sidebar + Login; Lagekarte ohne „Taktisch"-Modus; Kommentar-Bild-Galerie, PDF-Export mit Stärke & Kontakt, sauberer Bild-Pagination und immer hellem Druck; Passwort-vergessen per E-Mail-Link (SMTP) + Session-Invalidierung, CSRF-Schutz für Setup-Wizard und Admin-Formulare; großes Refactoring (Services/JS/CSS) mit Tests, PHPStan & CI; 11 Triage-Issues behoben
  • v2.4.0 — Schwerpunkt-Dispo-Kopplung, Folge-Abschnitte & Übersichtlichkeit: Einsatz-/Abschnitts-Dispo folgt im Schwerpunkt automatisch dem SP-Dispo (gesperrt, Herauslösen-Modal), Alarm-Regeln mit Folge-Abschnitten + Auto-Reset-Stopp pro Regel, administrierbare Standard-Werte (+ Abschnitts-Status „geplant"), Personalstärke-Anzeige & Gesamtstärke, Einsatzmittel nach Gruppen, Lagekarte-Filter-Toggle (Beamer), Geocode-Cache-Verwaltungsseite
  • v2.3.0 — Dark-Mode, UI-Politur & CSS-Zentralisierung: app-weiter dunkler Modus, einklappbare Sidebar, Karten-Hell/Dunkel-Toggle, einklappbare Filterleiste, zentrale Design-Tokens (tokens.css + components.css), einheitliche Admin-Breadcrumbs + Kachel-Reorg
  • v2.2.0 — Bug-Fixing & Alarm-Regeln: Multi-Alarm-Regelwerk (UW-ERSTALARM → Grundschutz + Bereitstellung), Wichtigkeit „Bereitstellung", Unwettermail-Multi-Einsatz-Parsing, generischer Spalten-Migrations-Mechanismus + Feature-Tabellen-Banner, korrigierte Cron-/Heartbeat-Statistik, SP-Dispo-Dropdown-Trennung
  • v2.1.0 — Handbuch: In-App-Hilfe (/hilfe.php) + Wiki-Sync über 20 Markdown-Topics in docs/handbuch/
  • v2.0.0 — Administrierbare Rollen-/Permission-Matrix, Modal-Dialog- Library, Schwerpunkt-Historie, Schema-Auto-Migration, Lagekarte- Verbesserungen (Tooltip-z-Index, warme Heatmap, Cluster-Toggle)
  • v1.5.0 — Schwerpunkte (Großlagen-Gruppierung)
  • v1.0.0 — Erste stabile Version

Vollständige Änderungshistorie mit allen Bugfixes und Upgrade-Hinweisen im CHANGELOG.

Lizenz

GPL-3.0 — frei nutzen, weitergeben und anpassen, solange Änderungen ebenfalls unter GPL-3.0 verfügbar gemacht werden.

Entwicklung

Repository: privat. Kontakt für Fragen / Mitarbeit über die im Repo hinterlegten Issues bzw. direkt an den Maintainer.