2328 lines
93 KiB
Markdown
2328 lines
93 KiB
Markdown
# Anleitung
|
||
|
||
Bedienung von FLORIAN, Stand Phase 10 (Version 0.11.0). Die Bilder zeigen die
|
||
Beispielwehr aus dem Seed und werden mit `npm run screenshots` neu erzeugt.
|
||
|
||
---
|
||
|
||
## 1. Anmelden
|
||
|
||
Aufgerufen wird FLORIAN im Browser unter der Adresse, die der Administrator
|
||
eingerichtet hat — in der Entwicklung `http://localhost:3100`.
|
||
|
||

|
||
|
||
Die Anmeldeseite zeigt genau die Wege, die in dieser Installation eingerichtet
|
||
sind:
|
||
|
||
| Weg | Wann |
|
||
|---|---|
|
||
| **Anmeldung über authentik** | Der Regelweg, sobald authentik eingerichtet ist. Ein Klick, keine Passworteingabe in FLORIAN. |
|
||
| **E-Mail und Passwort** | Beim Erststart, und wenn authentik gerade nicht erreichbar ist. |
|
||
| **Terminal im Gerätehaus** | Am Wandtablet, mit PIN oder Ausweiskarte. Eigene Oberfläche, kommt in Phase 4. |
|
||
|
||
Beim allerersten Start gibt es genau ein Konto: das aus `SEED_ADMIN_EMAIL` und
|
||
`SEED_ADMIN_PASSWORT` in der `.env`. Vorgabe:
|
||
|
||
```
|
||
admin@beispielwehr.de
|
||
Feuerwehr2026
|
||
```
|
||
|
||
**Dieses Passwort gehört nach dem ersten Login geändert.**
|
||
|
||
### Wenn die Anmeldung nicht klappt
|
||
|
||
Nach mehreren Fehlversuchen wird das Konto vorübergehend gesperrt — voreingestellt
|
||
nach fünf Versuchen für fünf Minuten (`KIOSK_MAX_FEHLVERSUCHE`,
|
||
`KIOSK_SPERRDAUER`). Die Meldung nennt nicht, ob die E-Mail-Adresse oder das
|
||
Passwort falsch war; das ist Absicht und verhindert, dass sich vorhandene
|
||
Konten erraten lassen.
|
||
|
||
---
|
||
|
||
## 2. Die Übersicht
|
||
|
||
Nach der Anmeldung steht die Übersicht der eigenen Wehr.
|
||
|
||

|
||
|
||
Von oben nach unten:
|
||
|
||
**Kopfzeile.** Name der Wehr und darunter, wer angemeldet ist und mit welchen
|
||
Rollen. Wer mehrere Rollen trägt — der Gerätewart ist oft auch Ausbilder —
|
||
sieht alle.
|
||
|
||
**Sicherheitshinweis.** Der gelbe Kasten bleibt stehen, solange die Wehr die
|
||
Anwendung nicht ausdrücklich freigegeben hat. Er ist keine Formalität:
|
||
Atemschutzüberwachung und Alarmmonitor sind sicherheitsrelevant, und bis zur
|
||
Freigabe bleibt die analoge Überwachung führend.
|
||
|
||
**Kennzahlen.** Vier Kacheln mit aktiven Mitgliedern, Fahrzeugen, Geräten und
|
||
fälligen Prüfungen. Sie zählen nur die eigene Wehr — was eine andere Wehr auf
|
||
derselben Installation hat, ist nicht sichtbar und nicht abfragbar.
|
||
|
||
**Stand des Aufbaus.** Welche Phasen fertig sind und was als Nächstes kommt.
|
||
|
||
### Die Seitenleiste
|
||
|
||
Links stehen alle Module. Was noch nicht existiert, ist ausgegraut und trägt
|
||
rechts sein Phasenkürzel — `P4` heißt „kommt in Phase 4".
|
||
|
||
Was jemand überhaupt sieht, hängt an seinen Rechten. Ein einfaches Mitglied
|
||
sieht die Mitgliederliste, aber nicht das Protokoll. Wichtig zum Verständnis:
|
||
das Ausblenden ist nur Bequemlichkeit. Der eigentliche Schutz sitzt auf dem
|
||
Server — wer eine Adresse direkt aufruft, für die ihm das Recht fehlt, bekommt
|
||
trotzdem nichts.
|
||
|
||
---
|
||
|
||
## 3. Helle und dunkle Darstellung
|
||
|
||
Oben rechts wird zwischen hell und dunkel umgeschaltet. Voreingestellt ist die
|
||
Einstellung des Betriebssystems.
|
||
|
||

|
||
|
||
Die dunkle Darstellung ist bewusst kein invertiertes Schwarz, sondern ein
|
||
warmes Grau. Wer abends vom Fahrzeug hereinkommt und ans Terminal tritt, soll
|
||
nicht geblendet werden.
|
||
|
||
---
|
||
|
||
## 4. Geräte
|
||
|
||

|
||
|
||
Die Geräteliste ist die Ansicht, die am häufigsten offen ist. Von links nach
|
||
rechts steht dort, was man beim Suchen braucht: Inventarnummer, was es ist, von
|
||
wem, wo es liegt, in welchem Zustand und wann es wieder geprüft werden muss.
|
||
|
||
### Suchen und filtern
|
||
|
||
**Das Suchfeld** durchsucht Inventarnummer, Bezeichnung, Hersteller, Modell und
|
||
Seriennummer gleichzeitig. Es genügt ein Teil — „press" findet alle
|
||
Pressluftatmer. Gesucht wird erst, wenn man kurz aufhört zu tippen; das
|
||
verhindert eine Abfrage bei jedem Anschlag.
|
||
|
||
**Alle Zustände** schränkt auf einen Status ein. Praktisch, wenn man wissen
|
||
will, was gerade fällig oder gesperrt ist.
|
||
|
||
**Spalten** blendet Spalten ein und aus. Zwölf stehen zur Auswahl, sechs sind
|
||
voreingestellt. Die Auswahl bleibt im Browser gespeichert — der Gerätewart
|
||
schaut auf Prüftermine, der Kassier auf Anschaffungspreise, und beide finden
|
||
ihre Einstellung beim nächsten Mal wieder.
|
||
|
||
**Sortiert** wird durch einen Klick auf die Spaltenüberschrift, ein zweiter
|
||
Klick dreht die Richtung um.
|
||
|
||
### Farben und Fristen
|
||
|
||
| Farbe | Bedeutung |
|
||
|---|---|
|
||
| grün | einsatzbereit |
|
||
| gelb | Prüfung fällig, oder eine Frist läuft in den nächsten 30 Tagen ab |
|
||
| rot | gesperrt, ausgesondert oder überfällig |
|
||
| grau | in Reparatur |
|
||
|
||
Hinter jedem Datum steht, wie viele Tage noch bleiben — „in 12 Tagen" sagt mehr
|
||
als ein Datum, das man erst im Kopf ausrechnen muss. Was vorbei ist, steht als
|
||
„seit 62 Tagen" da.
|
||
|
||
Die Farbe allein trägt nie die Information: daneben steht immer Klartext.
|
||
|
||
### Mehrere Geräte auf einmal
|
||
|
||
Über die Kästchen links lassen sich Geräte auswählen. Sobald mindestens eines
|
||
ausgewählt ist, erscheint eine Leiste mit zwei Möglichkeiten:
|
||
|
||
- **Etiketten drucken** erzeugt den Etikettenbogen als PDF.
|
||
- **Status setzen auf …** ändert den Zustand aller ausgewählten Geräte. Der
|
||
häufigste Handgriff überhaupt: Nach einer Sammelprüfung stehen zwanzig Geräte
|
||
auf einmal wieder auf einsatzbereit.
|
||
|
||
Jede Änderung wird einzeln protokolliert — am jeweiligen Gerät, nicht als
|
||
Sammelvorgang, den später niemand mehr zuordnen kann.
|
||
|
||
---
|
||
|
||
## 5. Ein einzelnes Gerät
|
||
|
||

|
||
|
||
### Woher das Prüfintervall kommt
|
||
|
||
Steht am Gerät kein eigenes Intervall, gilt die Vorgabe des Gerätetyps. Das
|
||
Bild zeigt es: „alle 12 Monate (aus dem Gerätetyp)". So muss man bei vierzig
|
||
Pressluftatmern nicht vierzigmal dasselbe eintragen. Schreibt der Hersteller
|
||
für eine bestimmte Charge etwas anderes vor, wird der Wert am Gerät gesetzt und
|
||
gewinnt dann.
|
||
|
||
Dasselbe gilt für die Lebensdauer. Ob sie ab Herstellung oder ab
|
||
Indienststellung zählt, hängt von der Vorschrift ab: Seile und Druckbehälter
|
||
altern ab Herstellung, Schutzkleidung meist ab Indienststellung.
|
||
|
||
### QR-Code
|
||
|
||
Rechts steht der QR-Code des Geräts. **Etikett drucken** erzeugt daraus einen
|
||
Aufkleber für den Geräteraum.
|
||
|
||
Der Code zeigt auf `.../g/<Inventarnummer>`. Wer ihn scannt und angemeldet ist,
|
||
landet direkt auf dieser Seite. Wer nicht angemeldet ist, landet zuerst auf der
|
||
Anmeldung und danach hier — **der Aufkleber ist keine Berechtigung.** Wer ihn
|
||
fotografiert, bekommt dadurch keinen Zugang.
|
||
|
||
Bewusst steht die Inventarnummer im Code und nicht die interne Kennung: Eine
|
||
UUID wäre 36 Zeichen lang, das Muster entsprechend fein, und auf einem
|
||
38 × 21 mm großen Aufkleber im staubigen Geräteraum wird das unzuverlässig.
|
||
|
||
### Verlauf
|
||
|
||
Unten steht, was mit dem Gerät passiert ist — direkt aus dem Audit-Log. Es gibt
|
||
bewusst keine zweite Historie: zwei Quellen könnten auseinanderlaufen.
|
||
|
||
---
|
||
|
||
## 5a. Ein Gerät anlegen oder ändern
|
||
|
||

|
||
|
||
Über **Neues Gerät** in der Geräteliste, oder über **Bearbeiten** auf der
|
||
Detailseite eines vorhandenen Geräts. Für größere Bestände ist der Import der
|
||
schnellere Weg; dieses Formular ist für den Neuzugang zwischendurch.
|
||
|
||
Pflicht sind nur zwei Angaben: **Inventarnummer** und **Bezeichnung**. Alles
|
||
andere kann später nachgetragen werden.
|
||
|
||
### Der Gerätetyp nimmt Arbeit ab
|
||
|
||
Wird oben ein Gerätetyp gewählt, gelten dessen Prüfintervall, Prüfvorschrift
|
||
und Lebensdauer — man muss sie nicht eintragen. Die Felder darunter bleiben
|
||
trotzdem änderbar: Was dort steht, überschreibt die Vorgabe für dieses eine
|
||
Gerät. Das braucht man, wenn der Hersteller für eine bestimmte Charge etwas
|
||
anderes vorschreibt.
|
||
|
||
Ist die Bezeichnung noch leer, wird sie aus dem Typ übernommen.
|
||
|
||
### „Daraus ergibt sich"
|
||
|
||
Der graue Kasten zeigt, was aus den Angaben folgt: wann die nächste Prüfung
|
||
fällig wird und wann die Nutzungsdauer endet. Er rechnet beim Tippen mit,
|
||
sodass man vor dem Speichern sieht, was herauskommt. Gerechnet wird mit
|
||
denselben Regeln wie auf dem Server — beim Speichern rechnet dieser erneut und
|
||
behält das letzte Wort.
|
||
|
||
Steht dort „keine", fehlt entweder das Prüfintervall oder die Indienststellung.
|
||
Das ist kein Fehler: Für Geräte ohne Prüfpflicht ist es der Normalfall.
|
||
|
||
### Wo liegt es?
|
||
|
||
Entweder an einem Standort **oder** auf einem Fahrzeug. Der Umschalter lässt
|
||
nur eines von beidem zu — deshalb kann hier gar nicht erst der Fehler
|
||
entstehen, den die Datenbank sonst abweisen würde.
|
||
|
||
Bei „Auf einem Fahrzeug" lässt sich zusätzlich der Geräteraum angeben. Er darf
|
||
leer bleiben: Manches liegt lose in der Kabine. Wird das Fahrzeug gewechselt,
|
||
wird die Raumangabe zurückgesetzt — der Raum gehört zum Fahrzeug.
|
||
|
||
Gibt es in der Wehr nur einen Standort, ist er beim Anlegen schon ausgewählt.
|
||
|
||
> Jede Änderung landet im Verlauf des Geräts. Wer wissen will, wann ein
|
||
> Prüftermin verschoben wurde und von wem, findet es dort.
|
||
|
||
---
|
||
|
||
## 6. Etiketten drucken
|
||
|
||
Der Bogen ist auf das gängige Format mit **65 Etiketten je DIN-A4-Seite**
|
||
(38,1 × 21,2 mm, 5 Spalten × 13 Zeilen) ausgelegt — den gibt es in jedem
|
||
Schreibwarenladen und er passt in jeden Laserdrucker.
|
||
|
||
Auf jedem Etikett stehen drei Dinge: der QR-Code, die Inventarnummer zum
|
||
Ablesen ohne Handy, und die Bezeichnung. Bei verlasteten Geräten kommt der
|
||
Funkrufname des Fahrzeugs dazu.
|
||
|
||
Der Druck kann an einer beliebigen Position des Bogens beginnen. Wer drei
|
||
Etiketten braucht, muss so keinen ganzen Bogen opfern.
|
||
|
||
> Erzeugt wird das PDF von Gotenberg, einem eigenen Container im Stack. Kommt
|
||
> die Meldung „Der Etikettenbogen ließ sich nicht erzeugen", läuft er nicht:
|
||
> `docker compose ps` zeigt es.
|
||
|
||
---
|
||
|
||
## 7. Gerät scannen
|
||
|
||
Über **Scannen** in der Geräteliste öffnet sich der QR-Scanner. Der Browser
|
||
fragt beim ersten Mal nach der Kamerafreigabe. Das Bild verlässt das Gerät
|
||
nicht — ausgewertet wird direkt im Browser.
|
||
|
||
Zwei Dinge sind bewusst so gebaut:
|
||
|
||
- **Es geht immer auch ohne Kamera.** Darunter steht ein Eingabefeld für die
|
||
Inventarnummer. Wenn die Freigabe verweigert wurde oder das Etikett zerkratzt
|
||
ist, tippt man sie ein.
|
||
- **Fremde Codes brechen nichts ab.** Der Barcode des Herstellers klebt oft
|
||
direkt daneben. Wird er erkannt, kommt ein Hinweis statt einer Fehlermeldung.
|
||
|
||
---
|
||
|
||
## 8. Fahrzeuge
|
||
|
||

|
||
|
||
Die Übersicht zeigt die Fahrzeuge als Kacheln — eine Wehr hat drei bis zehn,
|
||
nicht dreihundert. Auf jeder Kachel stehen der nächste TÜV-Termin und die Zahl
|
||
der verlasteten Geräte.
|
||
|
||
Auf der Detailseite steht die **Beladung nach Geräteräumen**, in der Reihenfolge
|
||
der Beladeordnung: G1 bis G6, Heck, Dach, Mannschaftsraum. Genau so sucht der
|
||
Gerätewart — nicht „wo ist die Motorsäge", sondern „was ist in G3".
|
||
|
||
Beim Anlegen eines neuen Fahrzeugs werden diese Räume auf Wunsch gleich
|
||
mitangelegt. Ein Mannschaftstransportwagen bekommt weniger Fächer als ein
|
||
Löschfahrzeug.
|
||
|
||
Ein Gerät liegt **entweder** an einem Standort **oder** auf einem Fahrzeug.
|
||
Beides gleichzeitig lässt die Datenbank nicht zu — das ist keine Formalität,
|
||
sondern verhindert, dass ein Gerät zweimal gezählt wird.
|
||
|
||
Was verlastet ist, aber keinem Raum zugeordnet wurde, erscheint unter „Ohne
|
||
Raumangabe" statt stillschweigend zu verschwinden.
|
||
|
||
---
|
||
|
||
## 9. Mitglieder und Qualifikationen
|
||
|
||

|
||
|
||
Die Mitgliederliste ist nach Abteilung gruppiert — Aktive, Jugendfeuerwehr,
|
||
Passive. Eine durchlaufende alphabetische Liste vermischt Gruppen, die in der
|
||
Wehr nichts miteinander zu tun haben.
|
||
|
||
Auf der Seite **Qualifikationen** steht oben, was abgelaufen ist oder demnächst
|
||
abläuft. Das ist der Grund, warum jemand diese Seite öffnet.
|
||
|
||
**Gewarnt wird mit der Vorwarnzeit des jeweiligen Typs**, nicht mit einer
|
||
pauschalen Frist. Eine G26.3-Untersuchung braucht 120 Tage Vorlauf, weil erst
|
||
ein Termin beim Betriebsarzt gefunden werden muss; eine jährliche Unterweisung
|
||
kommt mit deutlich weniger aus. Einsatzrelevante Qualifikationen sind
|
||
gekennzeichnet.
|
||
|
||
Das Ablaufdatum wird beim Speichern aus der Gültigkeitsdauer des Typs
|
||
gerechnet — lässt sich aber überschreiben. Auf einer Urkunde steht manchmal
|
||
etwas anderes, als die Regel hergäbe.
|
||
|
||
---
|
||
|
||
## 10. Daten importieren
|
||
|
||

|
||
|
||
Der Import geht in drei Schritten, und der mittlere ist der eigentliche Punkt.
|
||
|
||
### Schritt 1: Datei wählen
|
||
|
||
CSV oder Excel (`.xlsx`). Die erste Zeile muss die Spaltenüberschriften
|
||
enthalten. Höchstens 10 MB und 5.000 Zeilen.
|
||
|
||
Erkannt werden die Formate, die in der Praxis herauskommen:
|
||
|
||
| Fall | Wird verstanden |
|
||
|---|---|
|
||
| Trennzeichen | Semikolon, Komma, Tabulator, senkrechter Strich |
|
||
| Zeichensatz | UTF-8 (auch mit BOM) und Windows-1252 |
|
||
| Datum | 02.09.2026, 2.9.26, 2026-09-02, und die Seriennummer aus Excel |
|
||
| Zahlen | 1.234,56 und 1,234.56, mit und ohne Eurozeichen |
|
||
| Ja/Nein | ja, j, x, 1, wahr — und die Gegenstücke |
|
||
|
||
### Schritt 2: Zuordnung prüfen
|
||
|
||
FLORIAN rät die Zuordnung anhand der Überschriften. „Inv.-Nr." landet bei
|
||
Inventarnummer, „Fabrikat" bei Hersteller. Jede Zuordnung lässt sich ändern,
|
||
und die Vorschau passt sich sofort an.
|
||
|
||
**Die Vorschau ist der Grund, warum es diesen Zwischenschritt gibt.** Sie zeigt
|
||
Zeile für Zeile, was übernommen würde, und markiert rot, was nicht stimmt:
|
||
fehlende Pflichtfelder, unlesbare Daten, Inventarnummern, die in der Datei
|
||
doppelt vorkommen. Eine falsch zugeordnete Spalte verteilt sonst Seriennummern
|
||
auf Inventarnummern, und das merkt man erst Wochen später am Regal.
|
||
|
||
### Schritt 3: Übernehmen
|
||
|
||
Übernommen wird nur, was fehlerfrei ist. Zeilen mit Fehlern bleiben in der
|
||
Datei und lassen sich nach der Korrektur erneut einlesen.
|
||
|
||
**Vorhandene Datensätze aktualisieren** entscheidet, was mit Datensätzen
|
||
passiert, die es schon gibt: überspringen (Vorgabe) oder überschreiben.
|
||
Erkannt werden sie über die Inventarnummer, bei Mitgliedern über die
|
||
Mitgliedsnummer oder die E-Mail-Adresse.
|
||
|
||
Zum Schluss steht da, wie viele Datensätze angelegt, aktualisiert und
|
||
übersprungen wurden. Der ganze Vorgang steht auch im Protokoll.
|
||
|
||
---
|
||
|
||
---
|
||
|
||
## 11. Prüfungen und Fristen
|
||
|
||

|
||
|
||
Die Seite, die der Gerätewart morgens aufmacht. Sie beantwortet eine Frage:
|
||
**was ist zu tun.**
|
||
|
||
Ganz oben stehen vier Zahlen, nach Dringlichkeit geordnet:
|
||
|
||
| Topf | Bedeutung |
|
||
|---|---|
|
||
| **überfällig** | hätte längst geprüft sein müssen |
|
||
| **diese Woche** | in den nächsten sieben Tagen |
|
||
| **diesen Monat** | in den nächsten 30 Tagen |
|
||
| **nächste 90 Tage** | mittelfristig zu planen |
|
||
|
||
Jede Zahl ist gleichzeitig ein Filter: ein Klick, und die Liste darunter zeigt
|
||
nur noch diesen Zeitraum. Nochmal klicken hebt den Filter wieder auf.
|
||
|
||
„Überfällig" wird jeden Tag neu gerechnet und nicht gespeichert. Ein Termin,
|
||
der heute Nacht fällig geworden ist, steht morgen früh im richtigen Topf, ohne
|
||
dass jemand etwas anstoßen muss.
|
||
|
||
### Verteilung
|
||
|
||
Darunter steht, **wo** die offenen Termine hängen — wahlweise nach Fahrzeug,
|
||
Standort, Gerätetyp oder Zuständigem. Wer einen Prüftag ansetzt, arbeitet ein
|
||
Fahrzeug ab und keine alphabetische Liste; deshalb ist Fahrzeug die Vorgabe.
|
||
|
||
### Termine zuweisen
|
||
|
||
In der Terminliste lassen sich mehrere Zeilen ankreuzen und in einem Zug jemandem
|
||
zuweisen. Der Zuständige bekommt die Erinnerungen; ist niemand zuständig, gehen
|
||
sie an die Gerätewarte der Wehr.
|
||
|
||
### Erinnerungen
|
||
|
||
Nachts um 3:45 Uhr verschickt FLORIAN eine **Sammelnachricht je Empfänger** —
|
||
nicht eine Mail je Gerät. Erinnert wird bei 30 Tagen (oder der Vorwarnzeit der
|
||
Vorlage), bei 7 Tagen, am Fälligkeitstag und einmal, wenn ein Termin überfällig
|
||
geworden ist. Jede Stufe genau einmal.
|
||
|
||
Solange `MAIL_ENABLED=false` steht, landen die Nachrichten im Protokoll statt
|
||
im Postfach.
|
||
|
||
---
|
||
|
||
## 12. Wartungsvorlagen
|
||
|
||

|
||
|
||
Eine Wartungsvorlage sagt, **was** an einem Gerätetyp **in welchem Takt**
|
||
geprüft wird. Sie ist die Regel; der Termin ist ihre Anwendung auf ein einzelnes
|
||
Gerät.
|
||
|
||
**Ohne Vorlage gibt es keine Termine.** Das ist die erste Seite, die eine Wehr
|
||
in diesem Modul ausfüllt.
|
||
|
||
| Angabe | Wofür |
|
||
|---|---|
|
||
| **Gerätetyp** | für welche Bauart die Vorlage gilt. Ohne Gerätetyp plant der nächtliche Lauf nichts. |
|
||
| **Intervall in Monaten** | zählt ab der letzten durchgeführten Prüfung |
|
||
| **Vorwarnzeit in Tagen** | wann die erste Erinnerung rausgeht |
|
||
| **Prüfvorschrift** | steht später im Protokoll und in der Fußzeile des PDF |
|
||
| **Übliche Dauer** | Erfahrungswert für die Planung eines Prüftags |
|
||
|
||
### Die Checkliste
|
||
|
||

|
||
|
||
Jeder Punkt hat eine von vier Antwortarten:
|
||
|
||
| Art | Wann |
|
||
|---|---|
|
||
| **Ja / Nein** | Sichtprüfungen: „ohne Risse", „Kennzeichnung lesbar" |
|
||
| **Messwert** | alles Gemessene, mit zulässigem Bereich und Einheit |
|
||
| **Text** | Befunde, die sich nicht ankreuzen lassen |
|
||
| **Foto** | wenn der Zustand belegt werden soll |
|
||
|
||
Bei einem Messwert entscheidet der zulässige Bereich, ob der Punkt in Ordnung
|
||
ist. Gerechnet wird das auf dem Server, nicht im Browser.
|
||
|
||
**Pflichtpunkt heißt: davon hängt die Einsatzbereitschaft ab.** Ein
|
||
Pflichtpunkt, der durchfällt, bedeutet „nicht bestanden" und sperrt das Gerät.
|
||
Ein Kann-Punkt, der durchfällt, bedeutet „bestanden mit Mängeln". Wer einen
|
||
Punkt als Pflicht anlegt, trifft also eine fachliche Entscheidung.
|
||
|
||
Die Reihenfolge zählt: der Prüfwizard arbeitet die Punkte genau so ab, wie sie
|
||
hier stehen. Umsortiert wird mit den Pfeiltasten — das geht auch mit Handschuhen
|
||
und mit der Tastatur.
|
||
|
||
---
|
||
|
||
## 13. Eine Prüfung durchführen
|
||
|
||
Gestartet wird sie entweder im Fristen-Dashboard über **Prüfen** oder auf der
|
||
Gerätedetailseite über **Prüfung durchführen**. Wer das Gerät am Regal
|
||
gescannt hat, ist schon auf der richtigen Seite.
|
||
|
||
Der Wizard zeigt **einen Prüfpunkt je Bildschirm**. Oben läuft die Zeit mit;
|
||
sie landet im Protokoll und gehört zum Nachweis, wie gründlich geprüft wurde.
|
||
|
||
Zu jedem Punkt lassen sich zusätzlich ein Foto und eine Bemerkung erfassen.
|
||
Auf dem Tablet öffnet der Fotoknopf unmittelbar die Kamera.
|
||
|
||
**Jede Antwort geht sofort zum Server.** Wenn im Gerätehaus das WLAN wegbricht,
|
||
ist höchstens die letzte Antwort verloren. Beim erneuten Öffnen wird der
|
||
angefangene Durchgang fortgesetzt — es entsteht keine zweite halbe Prüfung.
|
||
|
||
### Der Abschluss
|
||
|
||
Am Ende steht:
|
||
|
||
1. **Ergebnis** — vorgeschlagen wird, was sich aus den Antworten ergibt.
|
||
Übersteuern darf der Prüfer; er trägt die Verantwortung, nicht die Software.
|
||
2. **Mängel** — aus den beanstandeten Punkten vorgeschlagen, frei ergänzbar.
|
||
Ein kritischer Mangel sperrt das Gerät.
|
||
3. **Unterschrift** — auf dem Zeichenfeld, mit Finger, Stift oder Maus. Ohne
|
||
Unterschrift lässt sich nicht abschließen: ein Protokoll ohne Unterschrift
|
||
ist kein Nachweis.
|
||
|
||
Wurde die Prüfung **extern** durch eine Fachfirma gemacht, lassen sich hier
|
||
Firma, Kosten und das Fremdprotokoll als PDF anhängen.
|
||
|
||
Mit dem Abschluss passiert alles auf einmal: die Prüfung wird festgeschrieben,
|
||
der Termin gilt als erledigt, der nächste wird geplant, der Gerätestatus zieht
|
||
nach, und das PDF entsteht im Hintergrund.
|
||
|
||
---
|
||
|
||
## 14. Prüfprotokolle
|
||
|
||

|
||
|
||
Jedes abgeschlossene Protokoll bekommt eine laufende Nummer im Format
|
||
`JJJJ-NNNN` — das ist die Nummer, die man bei einer Rückfrage der Unfallkasse
|
||
nennt.
|
||
|
||
Über **Protokoll als PDF** kommt die Fassung zum Ausdrucken oder Weiterreichen:
|
||
Kopf mit Wehr, Gerät und Prüfer-Kennung, die Checkliste mit Soll, Ist und
|
||
Befund, die Fotos, die Unterschriften und eine Fußzeile mit Prüfvorschrift und
|
||
Prüfdatum. Alles ist im PDF eingebettet — es lädt nichts nach und sieht in zehn
|
||
Jahren noch genauso aus.
|
||
|
||
### Ein Protokoll lässt sich nicht ändern
|
||
|
||
Das ist keine Bequemlichkeitsfrage, sondern der Kern der Sache: ein Nachweis,
|
||
den man nachträglich ändern kann, ist keiner. FLORIAN verhindert das in der
|
||
Datenbank, nicht bloß in der Oberfläche.
|
||
|
||
Wenn etwas falsch ist, legt **Korrektur anlegen** eine neue Prüfung an — mit den
|
||
bisherigen Antworten vorbelegt und einem Verweis auf das alte Protokoll. Sobald
|
||
sie abgeschlossen ist, gilt das alte als „ersetzt". **Beide bleiben lesbar**,
|
||
und im Korrekturprotokoll steht, warum korrigiert wurde.
|
||
|
||
---
|
||
|
||
## 15. Mängel
|
||
|
||

|
||
|
||
Der Weg ist immer derselbe:
|
||
|
||
```
|
||
gemeldet → zugewiesen → in Arbeit → behoben
|
||
```
|
||
|
||
**Melden darf jedes Mitglied.** Der Riss im Schlauch fällt dem auf, der ihn in
|
||
der Hand hat, nicht dem Gerätewart am Schreibtisch. Zum Melden gehören das
|
||
Gerät, eine Beschreibung, eine Dringlichkeit und auf Wunsch ein Foto.
|
||
|
||
Ein Mangel der Stufe **kritisch** sperrt das Gerät sofort. Beim Beheben wird
|
||
die Sperre wieder aufgehoben — aber nur, wenn kein anderer offener Mangel
|
||
dasselbe Gerät sperrt. Ein behobener Kratzer gibt kein Gerät frei, das wegen
|
||
eines Risses gesperrt ist.
|
||
|
||
Eine Fehlmeldung wird **verworfen**, nicht gelöscht: dass gemeldet wurde und
|
||
was, bleibt nachvollziehbar.
|
||
|
||
---
|
||
|
||
## 16. Rückrufe
|
||
|
||

|
||
|
||
Kommt ein Sicherheitshinweis des Herstellers, wird er hier erfasst — mit der
|
||
betroffenen Bauart, wahlweise eingegrenzt über Modell, Seriennummernbereich und
|
||
Herstellungszeitraum.
|
||
|
||
FLORIAN sucht dann im Bestand nach passenden Geräten und zeigt sie als
|
||
**Vorschlag**. Zugeordnet wird nur, was der Gerätewart bestätigt — eine
|
||
Chargenangabe des Herstellers passt selten eins zu eins auf die eigenen
|
||
Seriennummern.
|
||
|
||
Zugeordnete Geräte lassen sich in einem Zug sperren. Je Gerät wird
|
||
fortgeschrieben, wie es steht: offen, nicht betroffen, Maßnahme läuft, erledigt.
|
||
Mit „erledigt" fällt die Sperre wieder — sofern kein Mangel dasselbe Gerät
|
||
sperrt. Abschließen lässt sich der Rückruf erst, wenn zu jedem betroffenen Gerät
|
||
ein Ergebnis steht.
|
||
|
||
---
|
||
|
||
## 17. Lebensdauer
|
||
|
||

|
||
|
||
Helme, Seile, Schutzkleidung und Pressluftatmer sind ab einem Stichtag nicht
|
||
mehr zugelassen — unabhängig davon, wie gut sie aussehen. Diese Seite zeigt,
|
||
was abgelaufen ist und was in den nächsten Monaten abläuft.
|
||
|
||
Ein Gerät mit abgelaufener Nutzungsdauer wird nachts automatisch **gesperrt**.
|
||
**Ausgesondert** wird es von einem Menschen: das entscheidet, wer weiß, ob
|
||
Ersatz da ist. Der Knopf dazu steht in der Zeile.
|
||
|
||
Voraussetzung ist, dass am Gerätetyp eine Lebensdauer hinterlegt ist
|
||
(Kapitel 5).
|
||
|
||
---
|
||
|
||
## 18. Einen Einsatz erfassen
|
||
|
||

|
||
|
||
Im Alarmfall zählt eines: dass der Einsatz überhaupt angelegt wird. Die
|
||
**Schnellerfassung** fragt deshalb nur drei Dinge:
|
||
|
||
1. **Stichwort** — das, was die Leitstelle durchgegeben hat: „B 3 Wohnhausbrand"
|
||
2. **Ort** — Straße, Hausnummer, gegebenenfalls das Objekt
|
||
3. **Fahrzeuge** — welche ausgerückt sind
|
||
|
||
Die Alarmzeit ist der Moment des Anlegens. Alles andere — Mannschaft, Zeiten,
|
||
Bericht — wird später nachgetragen. Der Einsatz bekommt sofort eine
|
||
fortlaufende Nummer im Format `JJJJ-NNNN`.
|
||
|
||
**Koordinaten** lassen sich über „Koordinaten suchen" ermitteln, wenn die Wehr
|
||
einen eigenen Nominatim betreibt (Kapitel 38). Ohne den bleibt das Feld leer —
|
||
das ist in Ordnung, die Karte kommt in Phase 6.
|
||
|
||
---
|
||
|
||
## 19. Der Einsatz von innen
|
||
|
||

|
||
|
||
### Zeitstempel
|
||
|
||
Sechs Stempel beschreiben einen Einsatz vollständig:
|
||
|
||
| Stempel | wann |
|
||
|---|---|
|
||
| alarmiert | die Leitstelle hat alarmiert |
|
||
| ausgerückt | das erste Fahrzeug verlässt das Gerätehaus |
|
||
| eingetroffen | das erste Fahrzeug ist an der Einsatzstelle |
|
||
| Einsatzende | die Arbeit an der Einsatzstelle ist beendet |
|
||
| eingerückt | zurück im Gerätehaus |
|
||
| einsatzbereit | Fahrzeuge und Geräte sind wieder hergerichtet |
|
||
|
||
Jeder Stempel ist ein Knopf und setzt die aktuelle Uhrzeit. Ein Klick auf
|
||
„zurücknehmen" macht ihn wieder leer, falls er zu früh gedrückt wurde.
|
||
|
||
Daraus errechnet FLORIAN vier Zahlen:
|
||
|
||
- **Ausrückzeit** — Alarm bis Ausrücken. Sagt etwas über die Wehr aus.
|
||
- **Anfahrt** — Ausrücken bis Eintreffen. Sagt etwas über die Lage aus.
|
||
- **Hilfsfrist** — Alarm bis Eintreffen. Die Zahl, nach der die Gemeinde fragt.
|
||
- **Einsatzdauer** — Alarm bis Einrücken.
|
||
|
||
Stimmt die Reihenfolge nicht, erscheint ein Hinweis. **Gespeichert wird
|
||
trotzdem**: Zeiten werden oft Tage später aus dem Gedächtnis nachgetragen, und
|
||
ein Einsatz mit unsicheren Zeiten ist besser als einer, den niemand erfasst.
|
||
|
||
### Mannschaft
|
||
|
||
„Mannschaft erfassen" zeigt einen Vorschlag, sortiert danach, wer im letzten
|
||
Jahr am häufigsten dabei war. Daneben steht, ob die einsatzrelevanten
|
||
Qualifikationen noch gelten — eine abgelaufene G26.3 fällt so auf, **bevor**
|
||
jemand unter Atemschutz geht.
|
||
|
||
Ein Klick übernimmt die Person, danach lassen sich Funktion und Atemschutz in
|
||
der Tabelle einstellen.
|
||
|
||
Rechts steht laufend die **Stärke nach FwDV 3**:
|
||
|
||
```
|
||
1/3/5/9 entspricht einer Gruppe
|
||
│ │ │ └── gesamt
|
||
│ │ └──── Mannschaft
|
||
│ └────── Unterführer (Truppführer)
|
||
└──────── Führer (Gruppen-, Zug-, Staffelführer, Einsatzleiter)
|
||
```
|
||
|
||
> **Regional unterschiedlich.** Hier zählt der Maschinist zur Mannschaft. Manche
|
||
> Wehren rechnen ihn zu den Unterführern, andere schreiben dreistellig ohne
|
||
> Unterführer. Die Zuordnung steht an einer Stelle im Code und lässt sich
|
||
> anpassen.
|
||
|
||
### Verlauf
|
||
|
||
Lagemeldungen halten fest, was währenddessen passiert ist — mit Foto und
|
||
wahlweise als **wichtig** gekennzeichnet (Menschenrettung, Nachforderung,
|
||
Lageänderung). Meldungen bleiben auch nach der Freigabe möglich.
|
||
|
||
---
|
||
|
||
## 20. Bericht und Freigabe
|
||
|
||
Der Bericht ist der Text des Einsatzleiters: Lage bei Eintreffen, was getan
|
||
wurde, wie es endete. Er lässt sich jederzeit speichern und weiter ergänzen.
|
||
|
||
**Freigeben** schließt den Einsatz ab. Danach:
|
||
|
||
- ist der Bericht **unveränderbar** — er geht an die Gemeinde und im
|
||
Schadensfall an die Versicherung,
|
||
- entsteht im Hintergrund das PDF (Knopf „Bericht als PDF"),
|
||
- bleiben nur die Lagemeldungen weiter möglich.
|
||
|
||
Vor der Freigabe prüft FLORIAN zwei Dinge: dass eine Alarmzeit gesetzt ist und
|
||
dass mindestens eine Einsatzkraft erfasst wurde. Ein Bericht ohne Mannschaft
|
||
ist kein Nachweis.
|
||
|
||
---
|
||
|
||
## 21. Einsatzportal für Fremdwehren
|
||
|
||

|
||
|
||
Bei einer größeren Sache sind Nachbarwehren, THW oder Rettungsdienst mit vor
|
||
Ort. Die brauchen kein Konto in FLORIAN — sie bekommen einen **Link**.
|
||
|
||
So geht es:
|
||
|
||
1. Auf der Einsatzseite unter „Portal für Fremdwehren" eintragen, für wen der
|
||
Link ist („FF Nachbarhausen").
|
||
2. **Erzeugen** klicken. Der Link erscheint **einmal** — danach steht in der
|
||
Datenbank nur noch sein Hash.
|
||
3. Link kopieren und weitergeben, oder als QR-Code zeigen.
|
||
|
||
Was die Fremdwehr sieht: Stichwort, Ort, die Zeitstempel und den Verlauf. Was
|
||
sie **nicht** sieht: Namen von Einsatzkräften, den Bericht, irgendetwas
|
||
außerhalb dieses Einsatzes.
|
||
|
||
Was sie tun kann: eine Lagemeldung mit Foto absetzen.
|
||
|
||
Der Link gilt 24 Stunden, lässt sich jederzeit **widerrufen**, und jeder Aufruf
|
||
wird mitgezählt — ein Link, der nach dem Einsatz noch benutzt wird, fällt auf.
|
||
|
||
---
|
||
|
||
## 22. Statistik
|
||
|
||

|
||
|
||
Zwei Fragen, eine Seite.
|
||
|
||
**Was die Gemeinde fragt:** wie viele Einsätze welcher Art, und wie schnell wart
|
||
ihr da? Dafür stehen oben die Zahlen nach der Landesstatistik und die
|
||
**Hilfsfrist als 80-Prozent-Wert**.
|
||
|
||
> Warum nicht der Durchschnitt? Weil ein einzelner Einsatz auf der Autobahn ihn
|
||
> nach oben zieht, während neunzig Prozent der Fälle im Ort liegen. In Bayern
|
||
> gilt als Ziel: in 80 Prozent der Fälle binnen zehn Minuten. Genau diese Zahl
|
||
> steht hier.
|
||
|
||
**Was die Wehr fragt:** wer trägt die Last? Dafür steht unten die Beteiligung je
|
||
Person — Einsätze, davon unter Atemschutz, und Übungen.
|
||
|
||
**Jahresexport als PDF** erzeugt das Blatt für die Gemeinde: Überblick,
|
||
Kategorien und alle Einsätze des Jahres in einer Tabelle. Es wird nicht
|
||
gespeichert, sondern jedes Mal neu gerechnet — es ist eine Auswertung, keine
|
||
Urkunde.
|
||
|
||
---
|
||
|
||
## 23. Übungen
|
||
|
||

|
||
|
||
Eine Übung besteht aus Thema, Art, Datum und den **Lernzielen** — was danach
|
||
sitzen soll.
|
||
|
||

|
||
|
||
Die Anwesenheit wird als Liste abgehakt: alle aktiven Mitglieder auf einmal,
|
||
nicht einzeln gesucht. Bei einer Übung ist die halbe Wehr da.
|
||
|
||
Die Teilnahme fließt in die Beteiligungsstatistik ein — das ist die Zahl, nach
|
||
der in der Jahreshauptversammlung gefragt wird und die bei Beförderungen zählt.
|
||
|
||
---
|
||
|
||
## 24. Das Terminal im Gerätehaus
|
||
|
||

|
||
|
||
Das Terminal ist eine **eigene Oberfläche** unter `/kiosk`, gedacht für ein
|
||
Wandtablet neben der Fahrzeughalle. Große Kacheln statt Seitenleiste, alles
|
||
Bedienbare mindestens 64 Pixel hoch, jede Kachel mit Symbol **und** Text — das
|
||
ist kein Geschmack, sondern die Voraussetzung dafür, dass es mit
|
||
Feuerwehrhandschuhen bedienbar bleibt.
|
||
|
||
### Einmal je Tablet einrichten
|
||
|
||
Bevor sich jemand anmelden kann, muss das Tablet wissen, zu welcher Wehr es
|
||
gehört. Das macht der Administrator einmal unter `/kiosk/einrichten`: Kurzname
|
||
der Wehr und das Gerätegeheimnis aus der `.env` (`KIOSK_DEVICE_SECRET`).
|
||
|
||
Damit am Tablet nichts abgetippt werden muss, nimmt die Seite beides auch aus
|
||
der Adresse an:
|
||
|
||
```
|
||
http://florian.example/kiosk/einrichten?wehr=ff-musterhausen&schluessel=…
|
||
```
|
||
|
||
Diesen Link schickt sich der Administrator einmal selbst — etwa als QR-Code vom
|
||
eigenen Rechner — und ruft ihn am Tablet auf.
|
||
|
||
> **Das Gerätegeheimnis ist die erste Schranke.** Ohne eingerichtetes Tablet
|
||
> nimmt der Server keine PIN und keine Karte an. Ein fremdes Handy, das
|
||
> `/kiosk` aufruft, kommt nicht weiter, auch nicht mit richtiger PIN.
|
||
|
||
### Anmelden
|
||
|
||

|
||
|
||
Drei Wege, in dieser Reihenfolge:
|
||
|
||
1. **Ausweis auflegen** — der Regelfall. Der Leser am Tablet gibt die
|
||
Kartenkennung wie eine Tastatur aus; es muss vorher nichts angetippt werden.
|
||
2. **QR-Code vom Handy** — für den, der den Ausweis vergessen hat (Kapitel 29).
|
||
3. **Mitgliedsnummer und PIN** — wenn beides fehlt.
|
||
|
||
Nach `KIOSK_IDLE_TIMEOUT` Sekunden ohne Bedienung (Vorgabe: 120) meldet sich das
|
||
Terminal von selbst ab, mit sichtbarer Warnung vorher. Ein Terminal, an dem die
|
||
letzte Anmeldung stehen bleibt, schreibt irgendwann alles dem Falschen zu.
|
||
|
||
### Was auf dem Kachelschirm steht
|
||
|
||
Die Kacheln richten sich nach zwei Dingen: den Rechten der angemeldeten Person
|
||
und ihrem aktuellen Zustand.
|
||
|
||
| Kachel | Wann sie sich ändert |
|
||
|---|---|
|
||
| Kommen / **Gehen** | Wer eingecheckt ist, sieht „Gehen" samt Zeit, seit wann |
|
||
| Fahrt beginnen / **Fahrt beenden** | Wer mit einem Fahrzeug unterwegs ist, sieht dessen Funkrufname |
|
||
| Wäsche abgeben | Zeigt an, wie viele Stücke noch nicht zurück sind |
|
||
| Inventur | Nur für den Gerätewart |
|
||
| Prüfung durchführen | Ohne Netz gesperrt, mit dem Hinweis „braucht Netz" |
|
||
|
||
---
|
||
|
||
## 25. Mangel melden am Terminal
|
||
|
||

|
||
|
||
Der Vorgang, an dem sich das Terminal misst — Anspruch war **unter dreißig
|
||
Sekunden**. Deshalb drei Schritte und kein Formular:
|
||
|
||
1. **QR-Code am Gerät scannen.** Oder die Inventarnummer eintippen, wenn das
|
||
Etikett unleserlich ist. Steht die Nummer im Bestand, erscheint sofort
|
||
Bezeichnung und Zustand.
|
||
2. **Foto und ein Satz dazu.** Das Foto ist kein Pflichtfeld, macht aber die
|
||
halbe Arbeit: „Riss im Schlauch, etwa 20 cm von der Kupplung" plus Bild sagt
|
||
dem Gerätewart mehr als jedes Formular.
|
||
3. **Dringlichkeit antippen.** Damit ist die Meldung abgeschickt.
|
||
|
||
| Dringlichkeit | Was passiert |
|
||
|---|---|
|
||
| Kleinigkeit | kann warten |
|
||
| Normal | beim nächsten Dienst |
|
||
| Dringend | vor dem nächsten Einsatz |
|
||
| **Kritisch** | Das Gerät wird **sofort gesperrt** |
|
||
|
||
Eine unbekannte Inventarnummer hält die Meldung nicht auf. Sie geht trotzdem
|
||
raus und landet notfalls in der Konfliktliste (Kapitel 27) — lieber ein Zettel
|
||
zu viel als ein Riss im Schlauch, den niemand gemeldet hat.
|
||
|
||
---
|
||
|
||
## 26. Ohne Netz weiterarbeiten
|
||
|
||
In einer Fahrzeughalle ist das Netz regelmäßig weg: Stahlbeton, Tore aus
|
||
Metall, ein Repeater, der irgendwann ausfällt. Das Terminal ist dafür gebaut,
|
||
nicht dagegen abgesichert.
|
||
|
||
Über jeder Terminalseite läuft eine Leiste, die den Zustand in Klartext sagt:
|
||
|
||
| Leiste | Bedeutung |
|
||
|---|---|
|
||
| **Verbunden · alles übertragen** | Alles, was erfasst wurde, ist beim Server |
|
||
| **Verbunden · 2 Änderungen warten** | Wird gerade übertragen |
|
||
| **Kein Netz · 1 Änderung wartet** | Erfasst und gespeichert, wartet auf Netz |
|
||
|
||
Und so funktioniert es: **jede** erfasste Aktion geht zuerst in eine
|
||
Warteschlange im Tablet — auch dann, wenn Netz da ist. Erst von dort geht sie
|
||
zum Server. Deshalb ist der Ablauf ohne Netz derselbe wie mit Netz, nur dauert
|
||
er länger.
|
||
|
||
Was das im Betrieb bedeutet:
|
||
|
||
- **Die Bestätigung kommt sofort.** Wer eine Meldung abschickt, kann das Tablet
|
||
weglegen. Es ist gespeichert, auch wenn es noch nicht übertragen ist.
|
||
- **Ein Neustart des Tablets schadet nicht.** Die Warteschlange liegt im
|
||
Speicher des Browsers, nicht im Arbeitsspeicher.
|
||
- **Fotos warten mit.** Das Bild liegt neben der Meldung und wird beim
|
||
Übertragen zuerst hochgeladen.
|
||
- **Nichts wird doppelt gebucht.** Jeder Vorgang bekommt beim Erfassen eine
|
||
eigene Kennung. Bricht die Übertragung mitten drin ab und wird wiederholt,
|
||
erkennt der Server dieselbe Kennung wieder und bucht nicht erneut.
|
||
- **Die Prüfung braucht Netz.** Ein Prüfprotokoll mit Checkliste, Messwerten,
|
||
Fotos und Unterschrift lässt sich nicht sinnvoll zwischenspeichern — ein halb
|
||
erfasstes Protokoll wäre schlechter als keins. Die Kachel sagt das, statt ins
|
||
Leere zu führen.
|
||
|
||
Bleibt ein Vorgang mehr als fünf Versuche liegen, lässt er sich über „anzeigen"
|
||
einsehen und im Notfall verwerfen. Vorher nicht — und das ist Absicht.
|
||
|
||
---
|
||
|
||
## 27. Konflikte nachbearbeiten
|
||
|
||

|
||
|
||
Ein Tablet, das drei Tage offline war, schickt irgendwann Vorgänge, deren Ziel
|
||
es nicht mehr gibt: das Gerät wurde ausgesondert, die Prüfung inzwischen
|
||
abgeschlossen und damit festgeschrieben.
|
||
|
||
FLORIAN erzwingt in diesem Fall nichts und verwirft nichts. Der Vorgang landet
|
||
als **Konflikt** in der Übersicht unter `/terminal` — mit Zeitpunkt, Art,
|
||
Grund und der Person, die ihn erfasst hat. Der Gerätewart entscheidet und
|
||
vermerkt, wie es gelöst wurde.
|
||
|
||
Auf derselben Seite steht das Übrige, was am Terminal zusammenkommt: wer im
|
||
Haus ist, welche Wäsche in der Reinigung ist und das Fahrtenbuch.
|
||
|
||
---
|
||
|
||
## 28. Hallenmonitor
|
||
|
||

|
||
|
||
`/kiosk/monitor` ist für einen Fernseher in der Fahrzeughalle gedacht: Vollbild,
|
||
große Schrift, **keine Bedienung**. Zu sehen sind Uhrzeit und Datum, ein
|
||
laufender Einsatz, wer gerade im Haus ist, die Fahrzeuge samt laufenden Fahrten,
|
||
fällige Prüfungen und die nächsten Termine.
|
||
|
||
Optional dazu **Wetterwarnungen des DWD**:
|
||
|
||
```bash
|
||
# .env
|
||
WETTER_ENABLED=true
|
||
DWD_WARNCELL=809162000
|
||
```
|
||
|
||
> Das ist die einzige Verbindung, die FLORIAN von sich aus nach außen aufbaut,
|
||
> und sie ist deshalb standardmäßig aus. Nach draußen geht nur die
|
||
> Warnzellen-Nummer, keine Daten der Wehr. Fällt der Abruf aus, bleibt die
|
||
> Kachel leer — eine Wetterwarnung ist eine Zugabe, alarmiert wird über die
|
||
> Leitstelle.
|
||
|
||
Die Nummer der eigenen Gemeinde steht in der
|
||
[Warnzellenliste des DWD](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv).
|
||
|
||
---
|
||
|
||
## 29. Anmeldemarke fürs Handy
|
||
|
||

|
||
|
||
Wer den Ausweis vergessen hat, öffnet in FLORIAN auf dem Handy die Seite
|
||
**Anmeldemarke** und hält den QR-Code vor die Kamera des Terminals.
|
||
|
||
Der Code gilt **60 Sekunden** und wird von der Seite selbst erneuert. Er ist
|
||
signiert und nirgends gespeichert: ein abfotografierter Code aus der Umkleide
|
||
nützt eine Minute später nichts mehr.
|
||
|
||
---
|
||
|
||
## 30. Atemschutz — was das Modul ist und was nicht
|
||
|
||

|
||
|
||
> **Über jeder Ansicht dieses Moduls steht:**
|
||
> *Ergänzendes System — die analoge Atemschutzüberwachung bleibt führend.*
|
||
|
||
Das ist kein Kleingedrucktes. Die Überwachung, die im Ernstfall zählt, hängt am
|
||
Fahrzeug und wird mit Stift geführt. FLORIAN schreibt mit, rechnet mit und
|
||
druckt am Ende ein Protokoll — aber wenn dieses Tablet ausfällt, läuft der
|
||
Einsatz unverändert weiter.
|
||
|
||
Der Hinweis lässt sich abschalten, aber nur zusammen mit einem Beleg:
|
||
|
||
```bash
|
||
# .env
|
||
ATEMSCHUTZ_HINWEIS=false
|
||
ATEMSCHUTZ_FREIGABE=Kommandantenbeschluss vom 12.03.2026
|
||
```
|
||
|
||
Fehlt die Fundstelle, bleibt der Hinweis stehen — egal was in
|
||
`ATEMSCHUTZ_HINWEIS` steht. Eine Freigabe ohne Beschluss ist keine. Ist er
|
||
abgeschaltet, verschwindet er nicht spurlos: dann steht dort, worauf sich die
|
||
Freigabe stützt, und dasselbe steht später im Protokoll.
|
||
|
||
Die Startseite zeigt die Zahl, nach der im Einsatz als Erstes gefragt wird:
|
||
**wie viele Atemschutzgeräteträger heute einsetzbar sind** — und wie viele
|
||
davon knapp davor stehen, es nicht mehr zu sein.
|
||
|
||
---
|
||
|
||
## 31. Eine Überwachung führen
|
||
|
||

|
||
|
||
### Eröffnen
|
||
|
||
Auf `/atemschutz` genügt eine Bezeichnung — „Zimmerbrand Hauptstraße 12". Die
|
||
Zuordnung zu einem Einsatz lässt sich nachtragen; im Ernstfall wird zuerst
|
||
überwacht und später sortiert.
|
||
|
||
### Trupp anlegen
|
||
|
||
Zwei oder drei Personen, für jede der Eingangsdruck vom Manometer, eine davon
|
||
Truppführer. Neben jedem Namen steht, ob die Person nach FwDV 7 einsetzbar ist
|
||
und was gegebenenfalls fehlt.
|
||
|
||
> **Verweigert wird nichts.** Im Einsatz entscheidet der Einheitsführer. Ein
|
||
> Programm, das ihm im entscheidenden Moment eine Person sperrt, wird umgangen —
|
||
> und dann steht am Ende gar nichts im Protokoll. Der Hinweis nützt, die Sperre
|
||
> schadet.
|
||
|
||
### Was auf der Karte steht
|
||
|
||
| Anzeige | Bedeutung |
|
||
|---|---|
|
||
| **unter Atemschutz** | Zeit seit dem Einstieg — läuft, solange der Trupp drin ist |
|
||
| **niedrigster Druck** | Der ungünstigste Wert im Trupp. Der Trupp geht gemeinsam zurück |
|
||
| **Rückzug bei** | Der errechnete Rückzugsdruck |
|
||
|
||
Die Farbe der Karte ist die Ampel, und daneben steht immer der Text dazu:
|
||
„im Rahmen", „Rückzugsdruck bald erreicht", „Rückzugsdruck erreicht — Trupp
|
||
zurückziehen". Gelb kommt schon zehn Prozent vor der Grenze — der Trupp soll
|
||
losgehen, bevor der Wert erreicht ist.
|
||
|
||
### Der Rückzugsdruck
|
||
|
||
Gerechnet wird nach dem **doppelten Anmarschverbrauch**:
|
||
|
||
```
|
||
Rückzug = 2 × (Eingangsdruck − Druck am Einsatzziel) + Warndruck + Zuschlag
|
||
```
|
||
|
||
Dafür meldet der Trupp einmal, wenn er das Einsatzziel erreicht hat — dafür ist
|
||
der Knopf **„Einsatzziel erreicht"** da. Bis dahin steht ein vorläufiger Wert
|
||
nach der Zwei-Drittel-Regel; er liegt höher und ist damit die vorsichtigere
|
||
Annahme. Die Karte sagt das auch dazu.
|
||
|
||
Beispiel: 300 bar rein, 260 bar am Ziel — 40 bar für den Hinweg, also 80 für
|
||
hin und zurück, plus 55 bar Warndruck und 10 bar Zuschlag: **Rückzug bei
|
||
145 bar.**
|
||
|
||
### Druckabfrage
|
||
|
||
Alle Werte des Trupps in einer Zeile, ein Knopf. Bleibt eine Meldung aus, steht
|
||
nach `ATEMSCHUTZ_ABFRAGE_INTERVALL` Sekunden (Vorgabe zehn Minuten) ein
|
||
deutlicher Hinweis auf der Karte — gerechnet ab der letzten Meldung, nicht ab
|
||
dem Einstieg.
|
||
|
||
### Mayday
|
||
|
||
Ein Knopf je Trupp. Er ändert nichts an der Lage: er hält fest, wann es losging,
|
||
macht es auf jedem Bildschirm sichtbar und lässt einen Ton hören. Aufgehoben
|
||
wird er **ausdrücklich**, nicht durch Wegklicken — und beides steht im
|
||
Protokoll.
|
||
|
||
### Beenden
|
||
|
||
Geht erst, wenn alle Trupps als draußen gemeldet sind. Das ist keine Schikane:
|
||
eine beendete Überwachung mit einem Trupp, der noch drin steht, wäre die
|
||
gefährlichste Zeile im ganzen Protokoll.
|
||
|
||
---
|
||
|
||
## 32. Was passiert, wenn die Technik streikt
|
||
|
||
Die wichtigste Eigenschaft dieser Ansicht ist, dass man ihr nichts anhaben
|
||
kann. Der Grund dafür ist einfach: **es gibt keinen Timer.** In der Datenbank
|
||
steht, wann der Trupp eingestiegen ist; wie lange er drin ist, rechnet der
|
||
Bildschirm jede Sekunde neu aus.
|
||
|
||
| Was passiert | Was Sie sehen |
|
||
|---|---|
|
||
| Seite neu laden | Dieselbe Zeit läuft weiter |
|
||
| Zweites Tablet daneben | Dieselbe Zeit, ohne Abgleich |
|
||
| WLAN bricht ab | Die Uhr läuft weiter; oben steht **Verbindung unterbrochen** |
|
||
| Server neu gestartet | Nach der ersten Antwort ist alles wieder da |
|
||
|
||
Oben rechts steht dauerhaft, ob die Verbindung steht. Das ist Absicht: wer
|
||
nicht sieht, dass der Draht weg ist, hält einen alten Stand für den aktuellen.
|
||
Meldet sich der Server acht Sekunden lang nicht, springt die Anzeige auf
|
||
„unterbrochen" — auch dann, wenn der Browser selbst keinen Fehler meldet.
|
||
|
||
Ist die Verbindung weg, bleibt die Ansicht bedienbar; sie fragt weiter im Takt
|
||
nach und holt auf, sobald es wieder geht.
|
||
|
||
---
|
||
|
||
## 33. Nachweise und Tauglichkeit
|
||
|
||

|
||
|
||
Drei Nachweise müssen **gleichzeitig** gelten, sonst ist jemand nicht
|
||
einsetzbar:
|
||
|
||
| Nachweis | Frist | Wo erfasst |
|
||
|---|---|---|
|
||
| **G26.3** | drei Jahre, ab 50 Jahren eines | `/atemschutz/nachweise` |
|
||
| **Belastungsübung** | jährlich | dort, für die ganze Gruppe auf einmal |
|
||
| **Einsatzübung unter Atemschutz** | jährlich | dort — ein echter Einsatz zählt ebenso |
|
||
|
||
Dazu die Qualifikation als Atemschutzgeräteträger aus Kapitel 9.
|
||
|
||
Das Ablaufdatum der G26 wird nach dem Alter vorgeschlagen; was auf der
|
||
Bescheinigung steht, gilt und lässt sich überschreiben. Eine Untersuchung mit
|
||
dem Ergebnis „Nachuntersuchung" oder „nicht tauglich" zählt nicht als Nachweis.
|
||
|
||
In der Übersicht steht neben jedem Namen **im Klartext**, was fehlt — „G26.3 ist
|
||
abgelaufen", „Belastungsübung in diesem Jahr fehlt". Eine rote Ampel ohne
|
||
Begründung hilft am Fahrzeug niemandem.
|
||
|
||
Drei Monate vor Ablauf der G26 wechselt die Ampel auf Gelb: die Person ist
|
||
weiter einsetzbar, aber es wird Zeit für einen Termin.
|
||
|
||
---
|
||
|
||
## 34. Die Karte
|
||
|
||

|
||
|
||
Die Karte beantwortet die Frage, die auf der Anfahrt gestellt wird: **Was liegt
|
||
in der Nähe, und was gibt es her?**
|
||
|
||
### Kartenhintergrund einrichten
|
||
|
||
FLORIAN lädt **keine** Kacheln aus dem Netz. Wo Ihre Wehr ausrückt und wo Ihre
|
||
Hydranten liegen, ist niemandes Geschäft — es gibt deshalb keinen Rückfall auf
|
||
einen öffentlichen Kartendienst. Der Kartenserver läuft selbst:
|
||
|
||
```bash
|
||
docker compose --profile karte up -d
|
||
```
|
||
|
||
Dafür brauchen Sie eine MBTiles-Datei Ihres Ausrückegebiets; woher, steht in
|
||
`docker/karten/LIESMICH.md`. Danach in der `.env`:
|
||
|
||
```
|
||
KARTE_STIL_URL=http://localhost:8085/styles/basic/style.json
|
||
```
|
||
|
||
> **Ohne Kartenserver funktioniert alles außer den Straßen.** Punkte liegen an
|
||
> der richtigen Stelle, Entfernungen stimmen, die Umkreissuche rechnet. Die
|
||
> Karte sagt oben, dass der Hintergrund fehlt — sie tut nicht so, als wäre
|
||
> nichts.
|
||
|
||
### Was auf der Karte liegt
|
||
|
||
| Ebene | Farbe |
|
||
|---|---|
|
||
| **Löschwasser** | grün einsatzbereit, gelb eingeschränkt, rot defekt, grau ungeprüft |
|
||
| **Objekte** | blau, mit Verweis auf den Feuerwehrplan |
|
||
|
||
Beide lassen sich einzeln ab- und anschalten: wer Löschwasser sucht, will keine
|
||
Objekte sehen und umgekehrt.
|
||
|
||
### Umkreissuche
|
||
|
||
**In die Karte tippen** — rechts steht, was in 500 Metern erreichbar ist, nach
|
||
Entfernung sortiert, mit Nennweite und Durchfluss. Findet sich nichts, steht
|
||
das ausdrücklich da: eine Angabe, die man vor dem Einsatz wissen will, nicht
|
||
währenddessen.
|
||
|
||
---
|
||
|
||
## 35. Hydranten pflegen und importieren
|
||
|
||
### Import — der übliche Weg
|
||
|
||
Die Stadtwerke oder das Landratsamt haben die Liste. FLORIAN nimmt sie in zwei
|
||
Formaten:
|
||
|
||
- **GeoJSON** (aus QGIS, vom Landratsamt, aus einem OSM-Auszug)
|
||
- **CSV** — mit den Spaltennamen, die eben drinstehen
|
||
|
||
Erkannt werden unter anderem `Nummer`, `Bauart`, `DN`, `Lage`, `Latitude`,
|
||
`Pruefdatum`, `Versorger` und ihre Geschwister. Auch „DN 100" in der
|
||
Zahlenspalte, „48,5031" mit Komma und „24.05.2026" als Datum. Sind Breite und
|
||
Länge vertauscht, wird das erkannt und zurückgedreht.
|
||
|
||
Der Import läuft **in zwei Schritten**:
|
||
|
||
1. Datei wählen — FLORIAN zeigt, was herauskäme: wie viele Hydranten gefunden
|
||
wurden, welche Zeilen übersprungen werden und warum.
|
||
2. Erst dann „übernehmen".
|
||
|
||
> **Zweimal importieren ist ungefährlich.** Hydranten mit einer Nummer des
|
||
> Versorgers werden aktualisiert, nicht doppelt angelegt. Fehlt die Nummer,
|
||
> sagt der Import das vorher.
|
||
|
||
Was FLORIAN **nicht** tut: raten. Fehlt die Position, wird die Zeile
|
||
übersprungen — ein Hydrant ohne Ort ist kein Hydrant. Und ohne Statusangabe
|
||
steht „ungeprüft", nicht „einsatzbereit".
|
||
|
||
### Einzeln erfassen
|
||
|
||
In die Karte tippen setzt den Ort, darunter kommen Bezeichnung, Art, Zustand
|
||
und Nennweite. Für den einen Hydranten, der beim Neubaugebiet dazugekommen ist.
|
||
|
||
---
|
||
|
||
## 36. Objekte und Feuerwehrpläne
|
||
|
||

|
||
|
||
Für jedes Objekt, für das es einen Feuerwehrplan gibt oder geben sollte:
|
||
Schule, Pflegeheim, Aussiedlerhof, Betrieb.
|
||
|
||
Die Detailseite ist so sortiert, wie auf der Anfahrt gelesen wird:
|
||
|
||
| Block | Was hineingehört |
|
||
|---|---|
|
||
| **Zufahrt** | Tordurchfahrt, Höhenbegrenzung, Aufstellfläche, Schranke |
|
||
| **Gefahren** | Photovoltaik, Gasflaschen, Silo, Tiere, Personen |
|
||
| **Schlüsseldepot** | Wo der FSD hängt und was er aufsperrt |
|
||
| **Löschwasser am Objekt** | Wandhydranten, Steigleitung, Sprinklerzentrale |
|
||
|
||
Darunter die **Ansprechpartner** — mit der einzigen Angabe, die im Einsatz
|
||
zählt: wer nachts ans Telefon geht. Die Nummern lassen sich antippen.
|
||
|
||
Und die **Planblätter nach DIN 14095** mit Art und Stand. Der Stand gehört
|
||
dazu: ein Feuerwehrplan von 2009 ist eine Vermutung.
|
||
|
||
Gesucht wird über alles — Name, Straße, Gefahrenstichwort, Ansprechpartner. Wer
|
||
im Einsatz sucht, weiß selten, wie das Objekt im System heißt, aber oft, was
|
||
dort ist: „Photovoltaik" findet die Schule.
|
||
|
||
---
|
||
|
||
## 37. Lagekarte und Wasserförderung
|
||
|
||
### Lagekarte
|
||
|
||
Jeder Einsatz hat eine, unterhalb der Einsatzdaten. 22 taktische Zeichen nach
|
||
FwDV 102: Fahrzeuge, Einheiten, Führung, Stellen, Gefahren, Maßnahmen.
|
||
|
||
**Ein Werkzeug, ein Klick**: Zeichen antippen, in die Karte tippen. Dazu
|
||
Linienzüge (Schlauchleitung, Absperrung), Flächen (Bereitstellungsraum) und
|
||
freie Beschriftungen.
|
||
|
||
Was einer einträgt, sehen die anderen — auch auf einem zweiten Tablet. Oben
|
||
steht, ob der Abgleich läuft; steht er nicht, sehen Sie eine ältere Lage und
|
||
wissen das.
|
||
|
||
Eingetragenes lässt sich **zurücknehmen**, nicht löschen: was um 14:12
|
||
eingezeichnet wurde, gehört zur Mitschrift, auch wenn es um 14:20 nicht mehr
|
||
stimmte.
|
||
|
||
### Wasserförderung
|
||
|
||

|
||
|
||
Die Rechnung, die sonst mit Tabelle und Bleistift auf der Motorhaube entsteht.
|
||
Punkte in die Karte tippen — der erste ist die Entnahmestelle, der letzte die
|
||
Einsatzstelle —, dann Schlauchdurchmesser und Fördermenge einstellen.
|
||
|
||
Sofort steht da:
|
||
|
||
- **wie viele Pumpen** gebraucht werden und wo ein Verstärker stehen muss,
|
||
- **wie viele Schlauchlängen** je Abschnitt,
|
||
- **welcher Druck** am Ende ankommt.
|
||
|
||
Zwei Dinge kosten Druck: die Reibung im Schlauch (steigt mit dem **Quadrat** der
|
||
Fördermenge — doppelte Menge, vierfacher Verlust) und die Steigung (zehn Meter
|
||
sind ein bar). Wo die Höhe bekannt ist, sollte sie eingetragen werden; ohne
|
||
rechnet FLORIAN mit ebenem Gelände, und das ist im Zweifel zu günstig.
|
||
|
||
Geht eine Strecke nicht auf, sagt die Ausgabe das — statt eine Zahl
|
||
auszuwerfen, die niemand halten kann.
|
||
|
||
> **Es bleibt eine Planungshilfe.** Was zählt, ist der Druck am Verteiler — und
|
||
> den liest jemand ab.
|
||
|
||
---
|
||
|
||
## 38. Adressen zu Koordinaten (Nominatim)
|
||
|
||
FLORIAN löst Einsatzadressen nur auf, wenn die Wehr einen **eigenen** Nominatim
|
||
betreibt:
|
||
|
||
```bash
|
||
# .env
|
||
GEOCODING_ENABLED=true
|
||
NOMINATIM_URL=http://nominatim:8080
|
||
GEOCODING_LAENDER=de,at,ch
|
||
```
|
||
|
||
> **Kein öffentlicher Dienst.** Einsatzadressen sagen, wo es gebrannt hat und
|
||
> wer betroffen war. Solche Anfragen gehören nicht an einen fremden Server —
|
||
> und die Nutzungsbedingungen des öffentlichen Nominatim erlauben es ohnehin
|
||
> nicht.
|
||
|
||
Ohne Konfiguration bleibt die Suche leer. Koordinaten lassen sich dann von Hand
|
||
eintragen oder weglassen.
|
||
|
||
## 39. Der Terminkalender
|
||
|
||

|
||
|
||
Unter **Termine** steht, was ansteht: Dienste, Übungen, Lehrgänge,
|
||
Arbeitsdienste, Veranstaltungen, Sitzungen. Die Liste blickt nach vorn — das
|
||
ist, was fast immer gemeint ist.
|
||
|
||
An jeder Zeile stehen zwei Knöpfe: **Zusagen** und **Absagen**. Mehr braucht
|
||
das normale Mitglied nicht.
|
||
|
||
### Rückmeldung ist die Ausnahme
|
||
|
||
Beim Übungsabend meldet sich niemand an, man kommt oder man kommt nicht. Erst
|
||
beim Lehrgang mit zwölf Plätzen und beim Ausflug mit Busbestellung wird beim
|
||
Anlegen **Rückmeldung verlangen** angekreuzt.
|
||
|
||
Wer dann Plätze begrenzt, bekommt automatisch eine **Warteliste**: Zusagen über
|
||
die Platzzahl hinaus landen dort, nummeriert in der Reihenfolge der Anmeldung.
|
||
Sagt jemand ab, rückt der Erste von selbst nach und erfährt es. Niemand muss
|
||
eine Liste führen.
|
||
|
||
### Serientermine
|
||
|
||
Beim Anlegen unter **Wiederholung** wählen: wöchentlich, alle zwei Wochen,
|
||
monatlich, jährlich. Dazu ein Datum, bis zu dem die Serie läuft.
|
||
|
||
Darunter steht dann in einem Kasten, **wie viele Termine daraus werden** —
|
||
lesen Sie das, bevor Sie auf „Anlegen" drücken. Wöchentlich über ein Jahr sind
|
||
52 Einträge.
|
||
|
||
FLORIAN legt jeden Abend als eigenen Termin an, nicht als Regel. Das ist
|
||
Absicht: so lässt sich der Abend im August absagen, der im Dezember eine Woche
|
||
vorziehen, und für jeden gibt es eine eigene Teilnehmer- und Anwesenheitsliste.
|
||
Bei „monatlich" bleibt der Tag im Monat gleich — der 31. rutscht im Februar auf
|
||
den 28., nicht in den März.
|
||
|
||
### Absagen statt löschen
|
||
|
||
Ein Termin, zu dem schon jemand zugesagt hat, lässt sich nicht löschen. Er wird
|
||
**abgesagt**, mit Grund. Er bleibt dann durchgestrichen im Kalender stehen, der
|
||
Grund steht daneben, und wer zugesagt hatte, bekommt eine Nachricht — nicht die
|
||
ganze Wehr.
|
||
|
||
Gehört der Termin zu einer Serie, können Sie im selben Schritt **alle folgenden
|
||
Termine** absagen. Vergangene bleiben unberührt; man sagt nicht rückwirkend ab,
|
||
was schon stattgefunden hat.
|
||
|
||
### Anwesenheitsliste
|
||
|
||
Auf jedem Termin oben rechts. Sie zeigt **alle aktiven Mitglieder**, nicht nur
|
||
die Angemeldeten — auf einem Blatt zum Abhaken muss jeder stehen. Daneben, was
|
||
jemand gemeldet hatte.
|
||
|
||
Wer das Recht dazu hat, hakt gleich hier ab; sonst führt **Drucken** zu einem
|
||
Blatt mit leeren Kästchen.
|
||
|
||
> Zusage und Anwesenheit sind zwei verschiedene Dinge. Wer zugesagt hat und
|
||
> nicht kam, steht genau so in der Liste — das ist der Zweck der Trennung.
|
||
|
||
---
|
||
|
||
## 40. Benachrichtigungen einrichten
|
||
|
||

|
||
|
||
> **Niemand wird ungefragt benachrichtigt.** Wer hier nichts einträgt, bekommt
|
||
> nichts. Es gibt keine Voreinstellung, die alle anmeldet.
|
||
|
||
Unter **Benachrichtigungen** richten Sie Ihre eigenen Wege ein — Ihre, nicht
|
||
die von jemand anderem. Auch der Kommandant kann niemanden für Sie anmelden.
|
||
|
||
### Die vier Wege
|
||
|
||
| Weg | Was Sie brauchen | Bleibt im Haus? |
|
||
|---|---|---|
|
||
| **E-Mail** | nichts, es gilt Ihre hinterlegte Adresse | ja |
|
||
| **ntfy** | die ntfy-App und ein Thema | ja, wenn der Server der Wehr gehört |
|
||
| **Telegram** | Ihre Chat-Kennung vom Bot | **nein** |
|
||
| **Browser-Push** | nur die Erlaubnis des Browsers | **nein** |
|
||
|
||
Neben den Wegen, die das Netz der Wehr verlassen, steht ein Warnhinweis. Dorthin
|
||
gehen nur **Kurzfassungen**: „3 Prüfungen fällig", nicht welche. Wer es genau
|
||
wissen will, bekommt es per E-Mail oder schaut in FLORIAN nach.
|
||
|
||
### ntfy einrichten
|
||
|
||
Der bequemste Weg, wenn die Wehr einen eigenen ntfy betreibt:
|
||
|
||
1. Die App „ntfy" aus dem Store laden.
|
||
2. In der App den Server eintragen, der auf dieser Seite steht.
|
||
3. In FLORIAN **ntfy** wählen; das vorgeschlagene Thema übernehmen.
|
||
4. In der App dasselbe Thema abonnieren.
|
||
|
||
> **Das Thema ist Ihr Schlüssel.** Wer den Namen kennt, liest mit. Deshalb
|
||
> schlägt FLORIAN einen zufälligen vor — nehmen Sie nicht „florian-mueller".
|
||
|
||
### Browser-Push
|
||
|
||
**Einrichten** drücken; der Browser fragt nach Erlaubnis. Das Abo gilt für
|
||
**diesen einen Browser auf diesem einen Gerät** — auf dem Diensthandy und am
|
||
Rechner im Büro also zweimal einrichten.
|
||
|
||
Auf dem iPhone funktioniert es erst, wenn FLORIAN über „Zum Home-Bildschirm"
|
||
abgelegt wurde. Vorher bietet der Browser es gar nicht an.
|
||
|
||
### Wofür?
|
||
|
||
Unter jedem Weg stehen die sechs Anlässe zum Ankreuzen:
|
||
|
||
| Anlass | Wann er kommt |
|
||
|---|---|
|
||
| Prüfung fällig | im morgendlichen Lauf |
|
||
| Mangel gemeldet | sofort |
|
||
| Qualifikation läuft ab | 90, 30 und 7 Tage vorher |
|
||
| Neuer Termin | beim Anlegen |
|
||
| Erinnerung an einen Termin | 7 Tage und 1 Tag vorher |
|
||
| Einsatzbericht freigegeben | bei der Freigabe |
|
||
|
||
### Der Probeknopf
|
||
|
||
**Drücken Sie ihn.** Er steht direkt an jedem Weg und schickt eine
|
||
Probenachricht durch dieselbe Maschinerie wie alles andere. Ohne ihn merken Sie
|
||
einen Tippfehler im Thema erst in drei Wochen — dann, wenn die Nachricht
|
||
wichtig gewesen wäre.
|
||
|
||
Sie geht mit dem nächsten Lauf raus, üblicherweise binnen einer Minute.
|
||
|
||
### Was ankam
|
||
|
||
Ganz unten steht, was FLORIAN Ihnen zuletzt geschickt hat und ob es angekommen
|
||
ist. Steht dort mehrfach **Fehlgeschlagen**, ist der Weg kaputt — der Grund
|
||
steht daneben.
|
||
|
||
---
|
||
|
||
## 41. Den Kalender aufs Handy holen
|
||
|
||
Auf derselben Seite unter **Kalender abonnieren**. Namen für das Gerät eingeben,
|
||
**Adresse erzeugen** — und die Adresse gleich übernehmen.
|
||
|
||
> **Sie wird genau einmal angezeigt.** FLORIAN speichert nur ihre Prüfsumme.
|
||
> Wer sie verliert, erzeugt eine neue und widerruft die alte.
|
||
|
||
Die Adresse dann eintragen:
|
||
|
||
| Gerät | Weg |
|
||
|---|---|
|
||
| **iPhone/iPad** | Einstellungen → Kalender → Accounts → Account hinzufügen → Andere → Kalenderabo hinzufügen |
|
||
| **Android** | in Google Kalender am Rechner: Andere Kalender → Per URL |
|
||
| **Thunderbird** | Neuer Kalender → Im Netzwerk → iCalendar (ICS) |
|
||
| **Outlook** | Kalender hinzufügen → Aus dem Internet abonnieren |
|
||
|
||
Danach stehen die Termine der Wehr neben allem anderen im Kalender. Neue
|
||
Termine und Absagen kommen von selbst nach; die meisten Programme fragen
|
||
stündlich nach.
|
||
|
||
**Nur eigene Termine** angekreuzt heißt: nur die, zu denen Sie sich
|
||
zurückgemeldet haben.
|
||
|
||
> **Die Adresse ist ein Schlüssel.** Wer sie hat, sieht die Termine der Wehr —
|
||
> ohne Anmeldung. Geben Sie sie nicht weiter; bei einem verlorenen Handy
|
||
> genügt ein Klick auf **Widerrufen**.
|
||
|
||
Ausgeliefert werden ausschließlich Termine — keine Teilnehmerlisten, keine
|
||
Mängel, keine Einsätze. Wer aus der Wehr austritt, verliert das Abo.
|
||
|
||
---
|
||
|
||
## 42. Textvorlagen und der Dienstausweis
|
||
|
||
### Textvorlagen
|
||
|
||

|
||
|
||
Für Kommandant, Schriftführer und Administrator: unter **Benachrichtigungen →
|
||
Vorlagen bearbeiten** steht, was in den Nachrichten steht. Was hier geändert
|
||
wird, gilt für **alle**.
|
||
|
||
Links der Text, rechts die Vorschau mit erfundenen Beispielwerten. Die
|
||
**Platzhalter** darunter sind anklickbar und werden beim Versand ersetzt:
|
||
`{titel}` wird zu „Übungsabend", `{datum}` zum Datum.
|
||
|
||
Ein Platzhalter, den es für diesen Anlass nicht gibt, wird beim Speichern
|
||
abgewiesen — mit der Liste der erlaubten daneben. Und einer, der stehen bleibt,
|
||
bleibt auch in der fertigen Nachricht sichtbar: eine Lücke, die niemand
|
||
bemerkt, wäre schlimmer.
|
||
|
||
Ohne eigene Vorlage greift der eingebaute Text. **Auf Standard zurücksetzen**
|
||
stellt ihn wieder her.
|
||
|
||
> Bei Telegram und Browser-Push steht ein Warnhinweis über dem Feld. Was Sie
|
||
> dort hineinschreiben, läuft über einen fremden Server — also keine Namen,
|
||
> keine Adressen, keine Einsatzdetails.
|
||
|
||
### Der digitale Dienstausweis
|
||
|
||

|
||
|
||
Unter **Dienstausweis**: ein QR-Code mit Ihrem Namen, Ihrer Wehr, Ihrer
|
||
Funktion und Ihren gültigen Qualifikationen. Zum Vorzeigen an der Absperrung,
|
||
beim Lehrgang oder bei einer Kontrolle.
|
||
|
||
Wer ihn scannt, landet auf einer Prüfseite und sieht genau das — **ohne sich
|
||
anzumelden**. Denn wer prüft, hat keinen Zugang zu FLORIAN.
|
||
|
||
Drei Dinge sollten Sie darüber wissen:
|
||
|
||
- **Der Code gilt fünf Minuten.** Danach zeigt die Seite ihn selbst neu an. Ein
|
||
abfotografierter Code nützt nichts.
|
||
- **Er öffnet nichts.** Die Prüfseite zeigt an, sie lässt nicht hinein.
|
||
- **Es steht nicht mehr darauf als auf einem Ausweis aus Papier.** Keine
|
||
Anschrift, kein Geburtsdatum, keine Telefonnummer.
|
||
|
||
Die Prüfseite nennt außerdem, wann der Code erzeugt wurde. Das ist der Punkt,
|
||
auf den ein Prüfender schauen sollte: „vor zwei Minuten" ist ein Ausweis,
|
||
„gültig" allein wäre wertlos.
|
||
|
||
Wer aus der Wehr ausgetreten ist, bekommt dort **Kein aktives Mitglied** — auch
|
||
wenn sein Code technisch noch stimmt.
|
||
|
||
---
|
||
|
||
## 43. Das Wiki der Wehr
|
||
|
||

|
||
|
||
Unter **Wissen** steht, was die Wehr nachschlagen soll: Dienstvorschriften,
|
||
Merkblätter, Ausbildungsunterlagen. Also das, was heute als PDF im Ordner steht
|
||
und im Einsatz niemand findet.
|
||
|
||
Lesen darf jeder. Eine Wehr, in der nur die Führung nachschlagen kann, hat kein
|
||
Wiki, sondern einen Aktenschrank.
|
||
|
||
### Zwei Suchen, und beide werden gebraucht
|
||
|
||
| Suche | Findet | Braucht ein Sprachmodell |
|
||
|---|---|---|
|
||
| **Wortsuche** (das Feld) | was dasteht — „FwDV 7" findet die Seite mit genau dieser Zeichenfolge | nein |
|
||
| **Frage** (der Kasten oben) | was gemeint ist — „wie lange hält ein Schlauch" findet den Abschnitt über Ablegereife | ja |
|
||
|
||
Die Wortsuche zeigt nicht nur den Seitennamen, sondern die **Textstelle**. So
|
||
sieht man beim Suchen, ob es die richtige Stelle ist, ohne die Seite zu öffnen.
|
||
|
||
### Eine Seite schreiben
|
||
|
||
**Seite anlegen**, dann Titel, Bereich und Inhalt. Der Inhalt ist Markdown:
|
||
|
||
```
|
||
## Eine Überschrift
|
||
|
||
Ein Absatz.
|
||
|
||
- Ein Aufzählungspunkt
|
||
- Noch einer
|
||
|
||
| Spalte | Spalte |
|
||
|---|---|
|
||
| Wert | Wert |
|
||
```
|
||
|
||
Die **Überschriften sind wichtiger, als sie aussehen**: an ihnen wird die Seite
|
||
für die Suche zerlegt, und sie stehen später als Fundstelle unter einer
|
||
Antwort. Eine Seite ohne Überschriften ist ein einziger großer Block und liefert
|
||
entsprechend grobe Fundstellen.
|
||
|
||
Unter dem Textfeld steht beim Bearbeiten, in wie viele Abschnitte zerlegt wird.
|
||
|
||
### Fundstelle angeben
|
||
|
||
Das Feld **Fundstelle** ist freiwillig und trotzdem das wichtigste: Es steht
|
||
unter jeder Antwort, die aus dieser Seite gebaut wird.
|
||
|
||
> „Zusammenfassung nach FwDV 7, Ausgabe 2002" sagt einem Leser, woran er ist.
|
||
> Eine Antwort ohne Herkunft ist eine Behauptung.
|
||
|
||
Abschreiben sollten Sie eine Dienstvorschrift übrigens nicht — die sind
|
||
urheberrechtlich geschützt. Was hier hineingehört, ist die **eigene
|
||
Zusammenfassung** mit Verweis auf die Fundstelle, so wie ein Merkblatt der Wehr.
|
||
|
||
### Entwurf oder veröffentlicht
|
||
|
||
Ein **Entwurf** wird nicht durchsucht und nicht für Antworten herangezogen. Das
|
||
ist der Zustand für eine Seite, an der noch gearbeitet wird — sie steht dann nur
|
||
für die, die bearbeiten dürfen, in der Liste.
|
||
|
||
### Jede Änderung wird aufgehoben
|
||
|
||
Beim Speichern wird die vorherige Fassung vollständig weggeschrieben. Über
|
||
**Verlauf** lässt sich jede frühere Fassung im Wortlaut ansehen.
|
||
|
||
Das ist keine Bequemlichkeit: eine Dienstvorschrift, die sich unbemerkt ändert,
|
||
ist schlimmer als keine. Deshalb lässt sich eine Fassung auch nicht löschen.
|
||
|
||
---
|
||
|
||
## 44. Fragen stellen
|
||
|
||
> **Beantwortet wird ausschließlich aus den hinterlegten Seiten.** Steht die
|
||
> Antwort dort nicht, sagt FLORIAN genau das — statt etwas Plausibles zu
|
||
> erfinden.
|
||
|
||
Im Kasten oben auf der Wissensseite eine Frage eintippen und **Fragen** drücken.
|
||
Nach ein paar Sekunden steht die Antwort da — in einem gestrichelten Rahmen mit
|
||
dem Vermerk **Maschinell erzeugt**.
|
||
|
||
Darunter stehen die **Fundstellen**, aus denen die Antwort gebaut wurde. Das
|
||
sind Verweise: ein Klick führt auf die Seite. Lesen Sie sie, bevor Sie sich auf
|
||
die Antwort verlassen — sie sind das Belegte, die Antwort ist die
|
||
Zusammenfassung.
|
||
|
||
Findet FLORIAN keine passende Stelle, wird das Modell **gar nicht erst gefragt**.
|
||
Dann steht dort, dass es in den Unterlagen nicht steht. Das ist die richtige
|
||
Antwort und keine Fehlermeldung.
|
||
|
||
### Wenn kein Modell eingerichtet ist
|
||
|
||
Dann steht statt des Kastens ein Hinweis. Die Wortsuche funktioniert weiter,
|
||
und die ist für „FwDV 7" oder „Ablegereife" ohnehin die bessere.
|
||
|
||
### Der Hinweis „Suchstand ist älter als der Text"
|
||
|
||
Steht auf einer Seite, die geändert, aber noch nicht neu eingebettet wurde. Bis
|
||
das nachgeholt ist, findet die Frage-Funktion noch die vorherige Fassung —
|
||
gelesen wird auf der Seite natürlich die aktuelle.
|
||
|
||
Der Hintergrundprozess holt das von selbst nach, spätestens im nächtlichen Lauf.
|
||
Wer nicht warten will, drückt **Jetzt nachziehen**.
|
||
|
||
---
|
||
|
||
## 45. Diktieren statt tippen
|
||
|
||
Auf der Einsatzseite unter **Bericht** → **Beim Schreiben helfen lassen**.
|
||
|
||
Der Weg, den es in jeder Wehr schon gibt: jemand spricht auf der Rückfahrt in
|
||
sein Telefon, und daraus wird abends ein Bericht. Neu ist nur, dass abends schon
|
||
ein Text dasteht.
|
||
|
||
1. **Diktat aufnehmen** drücken. Der Browser fragt nach dem Mikrofon.
|
||
2. Sprechen. Der Zähler läuft mit.
|
||
3. **Fertig** drücken. Die Aufnahme wird übertragen und erkannt — bei einer
|
||
langen Aufnahme dauert das ein bis zwei Minuten. Die Seite kann offen
|
||
bleiben, der Text erscheint von selbst.
|
||
4. Text lesen, dann **In den Bericht übernehmen** oder **Verwerfen**.
|
||
|
||
> **Bitte gegenlesen.** Fachbegriffe, Ortsnamen und Fahrzeugbezeichnungen
|
||
> erkennt kein Modell zuverlässig. Die Aufnahme bleibt abgelegt, bis Sie
|
||
> entschieden haben — wer dem Text nicht traut, hört nach.
|
||
|
||
Das Mikrofon fragt der Browser nur über **HTTPS** oder auf `localhost` ab.
|
||
Bleibt der Knopf ohne Wirkung, liegt es fast immer daran.
|
||
|
||
### Aus Stichpunkten einen Entwurf
|
||
|
||
Im selben Kasten. Stichpunkte eintippen — oder das Diktat dorthin übernehmen —
|
||
und **Entwurf erstellen** drücken.
|
||
|
||
```
|
||
Angriffstrupp unter PA ins EG
|
||
Brand in der Küche, Fettbrand
|
||
Löschdecke, kein Wasser
|
||
Belüftung mit Überdrucklüfter
|
||
Übergabe an Polizei
|
||
```
|
||
|
||
Daraus wird ein Fließtext für die Akte. Was das Modell **nicht** bekommt:
|
||
Zeitstempel, Einsatznummer und Fahrzeuge. Die stehen schon als Felder im Bericht
|
||
und stünden sonst zweimal da — beim zweiten Mal womöglich falsch.
|
||
|
||
Der Entwurf landet **nicht** im Berichtsfeld. Er steht daneben, gekennzeichnet,
|
||
mit zwei gleich großen Knöpfen. Erst **Übernehmen** schreibt ihn ins Feld — und
|
||
auch dann ist er nur ein Textvorschlag im Formular. Gespeichert wird er, wenn
|
||
Sie **Bericht speichern** drücken.
|
||
|
||
> Verantwortlich ist, wer freigibt. Ein Einsatzbericht ist ein Nachweis, und im
|
||
> Zweifel liest ihn ein Gericht.
|
||
|
||
---
|
||
|
||
## 46. Belege erfassen
|
||
|
||

|
||
|
||
Unter **Belege**: **Beleg fotografieren** drücken. Auf dem Handy öffnet sich
|
||
direkt die Kamera.
|
||
|
||
Was das Modell erkennt, steht danach in **änderbaren Feldern**. Was es nicht
|
||
erkannt hat, bleibt leer und ist **gelb hinterlegt** — das ist eine
|
||
Aufforderung. Ein geratener Betrag wäre eine falsche Buchung, die niemand
|
||
bemerkt.
|
||
|
||
Prüfen Sie gegen das Foto, das links daneben steht. Dann **Gegenzeichnen**.
|
||
|
||
> Mit dem Gegenzeichnen übernehmen Sie, was **dort steht** — nicht, was die
|
||
> Maschine gelesen hat. Wenn Sie den Betrag berichtigen, ist der berichtigte
|
||
> Betrag der Ihre. Beides bleibt nachvollziehbar: das KI-Protokoll hält fest,
|
||
> was ursprünglich erkannt wurde.
|
||
|
||
Ohne Vision-Modell funktioniert alles bis auf das Auslesen: der Beleg wird
|
||
fotografiert und abgelegt, die Angaben tragen Sie von Hand ein.
|
||
|
||
Ist der Beleg gegengezeichnet, steht in der Liste der erledigten Belege ein
|
||
Knopf **Buchen**. Er führt in einem Schritt ins Kassenbuch — zu wählen sind
|
||
nur Konto und Kategorie. Siehe [Kapitel 48](#48-buchen).
|
||
|
||
### Das KI-Protokoll
|
||
|
||

|
||
|
||
Für Kommandant und Administrator: unter **KI-Protokoll** steht jede Befragung
|
||
eines Modells — was hineinging, was herauskam, wer entschieden hat.
|
||
|
||
Die Zeile **Offen** ist die wichtigste. Sie zählt die Ausgaben, die erzeugt und
|
||
nie angesehen wurden. Steht dort eine große Zahl, benutzt jemand den Assistenten
|
||
und liest nicht gegen.
|
||
|
||
Eingabe, Ausgabe und Modell lassen sich nachträglich nicht ändern, und löschen
|
||
kann man einen Vorgang gar nicht. Das ist der Zweck der Liste: sie soll belegen,
|
||
was war.
|
||
|
||
Daneben unter **Protokoll** steht dasselbe für Menschen: jede Änderung an jedem
|
||
Datensatz, seit dem ersten Tag.
|
||
|
||
---
|
||
|
||
## 47. Die Kasse
|
||
|
||
Unter **Kasse** stehen alle Konten der Wehr mit ihrem heutigen Bestand.
|
||
|
||

|
||
|
||
Drei Arten von Konten:
|
||
|
||
| Art | Wofür |
|
||
|---|---|
|
||
| **Barkasse** | Die Kassette im Gerätehaus. Wechselgeld für Feste, Kleinausgaben. |
|
||
| **Bankkonto** | Das Girokonto der Wehr. Mit IBAN, damit sich Kontoauszüge zuordnen lassen. |
|
||
| **Rücklage** | Angespartes für eine Beschaffung. Wird nicht laufend bewegt. |
|
||
|
||
**Der Bestand wird gerechnet, nicht gespeichert.** Anfangsbestand plus alle
|
||
Buchungen. Wer nachträglich eine Buchung einträgt, sieht den Bestand sofort
|
||
richtig — es gibt keinen zweiten Wert, der danebenläuft.
|
||
|
||
### Beim ersten Mal
|
||
|
||
Steht die Kasse leer, bietet die Übersicht an, den **Standardkontenrahmen**
|
||
anzulegen: rund zwanzig Kategorien, wie sie eine Feuerwehrkasse braucht —
|
||
Kraftstoff, Reparatur, Schutzkleidung, Ausbildung, Verpflegung auf der einen
|
||
Seite; Zuschüsse, Spenden, Mitgliedsbeiträge, Veranstaltungen, Kostenersatz
|
||
auf der anderen.
|
||
|
||
Sie lassen sich danach umbenennen, ergänzen und um eigene Unterkategorien
|
||
erweitern. Wer eine eigene Gliederung hat, legt sie stattdessen von Hand an.
|
||
|
||
---
|
||
|
||
## 48. Buchen
|
||
|
||

|
||
|
||
Oben stehen drei Summen: Einnahmen, Ausgaben, Saldo. Sie beziehen sich auf
|
||
**alle** Treffer der eingestellten Auswahl, nicht nur auf die angezeigten
|
||
Zeilen — eine Summe unter einer abgeschnittenen Liste bedeutete nichts.
|
||
|
||
### Eine Buchung erfassen
|
||
|
||
Der Betrag ist immer positiv; ob es eine Einnahme oder eine Ausgabe ist, steht
|
||
mit den beiden Knöpfen daneben. Eine „negative Ausgabe" gibt es nicht: sie
|
||
wäre eine Einnahme in Verkleidung und in keiner Auswertung als solche zu
|
||
erkennen.
|
||
|
||
Sobald ein Verwendungszweck dasteht, schlägt FLORIAN eine Kategorie vor.
|
||
Zuerst aus den **eigenen früheren Buchungen** der Wehr — steht darunter „zuletzt
|
||
so gebucht", ist dieselbe Sache schon einmal so einsortiert worden. Erst wenn
|
||
es dazu nichts gibt, greift eine Stichwortliste.
|
||
|
||
Der Vorschlag ist ein Angebot, kein Automatismus: er wird erst übernommen,
|
||
wenn er angeklickt wird. Und ist er unsicher, erscheint gar keiner. Ein
|
||
falscher Vorschlag wäre schlechter als keiner — er wird übernommen, ohne
|
||
gelesen zu werden.
|
||
|
||
### Entwurf und festgeschrieben
|
||
|
||
Eine neue Buchung ist zunächst ein **Entwurf**. Sie lässt sich ändern und
|
||
verwerfen, solange der Kassier sie durchsieht.
|
||
|
||
Mit **Festschreiben** wird sie unveränderbar. Das ist der Zustand, den eine
|
||
Kassenprüfung erwartet, und dahinter führt kein Weg zurück — auch nicht über
|
||
einen Umweg, die Datenbank lehnt jede Änderung ab.
|
||
|
||
Ein Schloss in der Zeile zeigt, welche Buchungen festgeschrieben sind.
|
||
|
||
### Einen Beleg buchen
|
||
|
||
Wurde eine Quittung unter **Belege** fotografiert und gegengezeichnet, muss
|
||
sie nicht noch einmal abgetippt werden. In der Liste der erledigten Belege
|
||
steht dort ein Knopf **Buchen**.
|
||
|
||
Zu wählen sind nur Konto und Kategorie — alles andere steht schon fest.
|
||
Betrag, Datum und Händler kommen aus dem gegengezeichneten Beleg, und das
|
||
Foto hängt danach an der Buchung. Das ist der Zustand, den eine
|
||
Kassenprüfung erwartet: zu jeder Ausgabe ein Beleg, und zwar an der Buchung
|
||
und nicht in einem Ordner daneben.
|
||
|
||
Ein Beleg, der noch nicht gegengezeichnet ist, lässt sich nicht buchen. Er
|
||
ist bis dahin ein von einer Maschine ausgefülltes Formular.
|
||
|
||
### Wenn etwas falsch war
|
||
|
||
Bei einem Entwurf: ändern oder verwerfen.
|
||
|
||
Bei einer festgeschriebenen Buchung: **Gegenbuchen**. Es entsteht eine zweite
|
||
Buchung mit derselben Summe in die andere Richtung, mit Verweis auf die erste
|
||
und mit dem eingegebenen Grund im Verwendungszweck. Beide bleiben stehen.
|
||
|
||
Das sieht nach mehr Aufwand aus, als eine Zahl zu korrigieren, und ist genau
|
||
der Punkt: eine verschwundene Buchung kann ein Kassenprüfer nicht prüfen. Eine
|
||
berichtigte kann er nachvollziehen.
|
||
|
||
Das Datum der Gegenbuchung ist immer **heute**. Läge es im geprüften Zeitraum,
|
||
würde die Datenbank sie ablehnen — und das zu Recht.
|
||
|
||
---
|
||
|
||
## 49. Kontoauszug einlesen
|
||
|
||
Statt fünfzig Umsätze abzutippen, lässt sich der Auszug aus dem Online-Banking
|
||
einlesen. Zwei Formate:
|
||
|
||
| Format | Datei |
|
||
|---|---|
|
||
| **CAMT.053** | `.xml` oder `.camt` |
|
||
| **MT940** | `.txt` oder `.sta` |
|
||
|
||
Beides bietet fast jedes Online-Banking zum Herunterladen an, meist unter
|
||
„Umsatzexport" oder „Umsätze exportieren". Welches von beiden, spielt keine
|
||
Rolle — FLORIAN erkennt es am Inhalt.
|
||
|
||
### Was dabei passiert — und was nicht
|
||
|
||
Es entstehen **Entwürfe**, keine fertigen Buchungen. Jeder Posten muss danach
|
||
noch durchgesehen und die Kategorie geprüft werden.
|
||
|
||
Umsätze, die schon in der Kasse stehen, sind grau hinterlegt und mit „steht
|
||
schon in der Kasse" gekennzeichnet. Sie sind nicht vorausgewählt. Das ist der
|
||
eigentliche Wert der Sache: ein zweimal eingelesener Auszug wäre sonst ein
|
||
doppelt gebuchter Monat, und der fällt erst beim Kassenabschluss auf — also
|
||
drei Monate später.
|
||
|
||
Umsätze, die nicht gelesen werden konnten, stehen mit Grund darüber. Sie
|
||
verschwinden nicht stillschweigend.
|
||
|
||
---
|
||
|
||
## 50. Mitgliedsbeiträge
|
||
|
||

|
||
|
||
### Sätze
|
||
|
||
Ein Beitragssatz gilt **ab einem Jahr** und wahlweise für eine Abteilung. Ein
|
||
Satz ohne Abteilung gilt für alle, die keinen eigenen haben.
|
||
|
||
Rückwirkend wird nichts geändert. Wer den Beitrag erhöht, legt einen neuen
|
||
Satz ab dem kommenden Jahr an — sonst stimmten die Beiträge der vergangenen
|
||
Jahre nicht mehr, und die sind bereits geprüft.
|
||
|
||
### Der Beitragslauf
|
||
|
||
Einmal im Jahr, meist im Januar. Vorher zeigt FLORIAN, was entstehen wird:
|
||
|
||
- wie viele Beiträge und über welche Summe
|
||
- wie viele Mitglieder für dieses Jahr schon einen haben (die bleiben unberührt)
|
||
- **wer keinen passenden Satz hat**
|
||
|
||
Der letzte Punkt ist der wichtige. Das sind die Mitglieder, für die niemand
|
||
entschieden hat, was sie zahlen — entweder fehlt ein Satz für ihre Abteilung
|
||
oder es gibt keinen allgemeinen.
|
||
|
||
Der Lauf lässt sich wiederholen. Wer im Februar drei Neue aufgenommen hat,
|
||
startet ihn noch einmal; doppelt entsteht nichts.
|
||
|
||
### Zahlungen und Mahnungen
|
||
|
||
Ein Zahlungseingang erzeugt zugleich die **Buchung** im Kassenbuch. Ein
|
||
Häkchen ohne Geld in der Kasse wäre eine Behauptung.
|
||
|
||
Gemahnt wird als Sammelaktion: die offenen Beiträge auswählen, mahnen. Die
|
||
Mahnstufe zählt hoch. Ab der fünften Stufe hört FLORIAN auf — was danach
|
||
kommt, entscheidet die Kommandantschaft und nicht die Software.
|
||
|
||
Ein **Erlass** braucht eine Begründung. Ohne sie wird er nicht gespeichert:
|
||
ein erlassener Beitrag ohne Grund ist in der Kassenprüfung eine offene Frage,
|
||
und in fünf Jahren weiß es niemand mehr.
|
||
|
||
### Rückstände
|
||
|
||
Ganz oben steht die Rückstandsliste über **alle Jahre**, nach Person
|
||
gruppiert. Sie ist die einzige Ansicht, in der auffällt, wer seit drei Jahren
|
||
offen steht — in der Jahresliste sieht das aus wie ein einzelner offener
|
||
Beitrag.
|
||
|
||
---
|
||
|
||
## 51. Rechnungen an Dritte
|
||
|
||

|
||
|
||
Kostenersatz nach Art. 28 BayFwG (Fehlalarm einer Brandmeldeanlage, Öleinsatz
|
||
mit Verursacher), Vermietung des Schulungsraums, Absicherung einer
|
||
Veranstaltung.
|
||
|
||
### Nummer und Betrag
|
||
|
||
Die **Rechnungsnummer** vergibt FLORIAN fortlaufend je Jahr, lückenlos. Eine
|
||
fehlende Nummer muss in der Kassenprüfung erklärt werden, deshalb wird auch
|
||
eine stornierte Rechnung nicht gelöscht, sondern bleibt mit Grund stehen.
|
||
|
||
Der **Betrag** ist die Summe der Positionen und wird nicht eingegeben. Ein von
|
||
Hand eingetippter Gesamtbetrag neben Positionen, die etwas anderes ergeben,
|
||
ist der Fehler, den niemand bemerkt, bis der Empfänger anruft.
|
||
|
||
Die Menge hat drei Nachkommastellen: Einsatzstunden werden vielerorts
|
||
viertelstündlich abgerechnet, und 0,25 × 47,50 € muss auf den Cent stimmen.
|
||
|
||
### Entwurf, versendet, bezahlt
|
||
|
||
Bis zum **Versenden** ist eine Rechnung ein Entwurf und lässt sich vollständig
|
||
ändern. Danach nicht mehr: was beim Empfänger liegt, muss dem entsprechen, was
|
||
hier steht.
|
||
|
||
Beim Versenden entsteht das PDF im Hintergrund. Es steht kurz darauf zum
|
||
Herunterladen bereit.
|
||
|
||
Der Zahlungseingang erzeugt — wie beim Beitrag — zugleich die Buchung. Wurde
|
||
weniger überwiesen als berechnet, lässt sich der abweichende Betrag eintragen.
|
||
|
||
Für eine Korrektur: stornieren und neu schreiben. Eine bezahlte Rechnung wird
|
||
nicht storniert; dort ist zuerst die Buchung gegenzubuchen.
|
||
|
||
---
|
||
|
||
## 52. Kassenprüfung
|
||
|
||

|
||
|
||
Einmal im Jahr, meist vor der Jahreshauptversammlung. Zwei Kassenprüfer zählen
|
||
die Kasse und vergleichen mit dem Buch.
|
||
|
||
### Der Ablauf
|
||
|
||
1. **Zeitraum wählen.** In der Regel das abgelaufene Kalenderjahr.
|
||
2. **Zählen.** In der Maske stehen links die Bestände laut Buch und rechts
|
||
leere Felder für das Gezählte. Die Reihenfolge ist Absicht: wer erst das
|
||
Buch sieht und dann zählt, zählt, bis es passt.
|
||
3. **Differenz erklären**, falls eine bleibt.
|
||
4. **Prüfer und Prüfdatum eintragen.**
|
||
5. **Festschreiben.**
|
||
|
||
Steht ein Hinweis auf noch nicht festgeschriebene Buchungen im Zeitraum: erst
|
||
durchsehen. Das Festschreiben des Abschlusses nimmt sie mit.
|
||
|
||
### Was das Festschreiben bewirkt
|
||
|
||
Der Zeitraum ist danach **zu**. Es lässt sich keine Buchung mehr mit einem
|
||
Datum darin anlegen, und keine vorhandene mehr dorthin verschieben. Wer nach
|
||
der Prüfung noch eine Quittung findet, bucht sie mit dem heutigen Datum.
|
||
|
||
Der Abschluss selbst ist ebenfalls unveränderbar — Zahlen, Prüfer und
|
||
Erläuterung stehen fest. Nachgetragen wird nur der Prüfbericht, weil das PDF
|
||
im Hintergrund entsteht.
|
||
|
||
Ohne Prüfer und Prüfdatum lässt sich nichts festschreiben: ohne beides ist es
|
||
kein Abschluss, sondern eine Notiz. Und eine Differenz ohne Erläuterung
|
||
ebenfalls nicht — sonst steht in fünf Jahren „stimmt nicht" im Bericht und
|
||
niemand weiß mehr, warum.
|
||
|
||
### Der Prüfbericht
|
||
|
||
Entsteht als PDF mit vier Unterschriftsfeldern: beide Prüfer, der Kassier und
|
||
der Kommandant. Er lässt sich ausdrucken, unterschreiben und abheften — die
|
||
Papierform bleibt für die Entlastung in der Versammlung die maßgebliche.
|
||
|
||
---
|
||
|
||
## 53. Auswertungen und Export
|
||
|
||
Unter **Kasse → Abschluss → Auswertung** stehen die Zahlen für die
|
||
Jahreshauptversammlung:
|
||
|
||
- Einnahmen und Ausgaben je Kategorie, absteigend nach Betrag
|
||
- der Verlauf über zwölf Monate
|
||
- das Vorjahr daneben — eine Zahl ohne Vergleich sagt nichts
|
||
|
||
Das ist die Ansicht, in der auffällt, dass sich die Kraftstoffkosten verdoppelt
|
||
haben.
|
||
|
||
### Export
|
||
|
||
**Kassenbuch als CSV** lädt alle Buchungen eines Jahres herunter: Datum,
|
||
Konto, Richtung, Betrag, Ober- und Unterkategorie, Kontonummer,
|
||
Verwendungszweck, Belegnummer, Gegenüber und ob festgeschrieben.
|
||
|
||
Die Datei ist für den Steuerberater oder die Kämmerei gedacht und öffnet in
|
||
Excel ohne Rückfrage richtig: Semikolon als Trennzeichen, Komma als
|
||
Dezimaltrennzeichen, UTF-8 mit Kennung.
|
||
|
||
---
|
||
|
||
## 54. Mehrere Wehren auf einem Server
|
||
|
||
Ein FLORIAN kann mehrere Wehren führen — eine Gemeinde mit drei Ortswehren,
|
||
ein Landkreis mit zwanzig. Die Wehren sehen einander dabei **nicht**. Jede
|
||
Abfrage ist an eine Wehr gebunden, und zwar in der Datenbank selbst, nicht im
|
||
Programm.
|
||
|
||
### Konto und Personenakte
|
||
|
||
Zwei verschiedene Dinge, und der Unterschied ist der Kern dieses Kapitels:
|
||
|
||
| | Was es ist |
|
||
|---|---|
|
||
| **Konto** | Womit Sie sich anmelden. E-Mail und Passwort. Gehört keiner Wehr. |
|
||
| **Personenakte** | Ihr Eintrag in einer Wehr: Dienstgrad, Qualifikationen, Einsätze. |
|
||
| **Zuordnung** | Verbindet beides — je Wehr eine. |
|
||
|
||
Wer nur zu einer Wehr gehört, merkt davon nichts: ein Konto, eine Akte, eine
|
||
Zuordnung, und alles sieht aus wie vorher.
|
||
|
||
Wer zu **zwei** Wehren gehört — aktiv in der einen, Ehrenmitglied in der
|
||
anderen —, hat trotzdem nur **ein** Passwort. Zwei Akten, ein Konto.
|
||
|
||
### Die Wehr wechseln
|
||
|
||
Steht Ihr Konto bei mehreren Wehren, wird der Name der Wehr in der
|
||
Seitenleiste zu einem Auswahlfeld. Ein Klick darauf, und alle Wehren stehen
|
||
untereinander — mit dem Hinweis, ob Sie dort Mitglied oder Kreisaufsicht sind.
|
||
|
||
Nach der Anmeldung sind Sie immer in **Ihrer eigenen** Wehr, nicht in einer
|
||
betreuten.
|
||
|
||
Nach dem Wechsel wird alles neu geladen. Was Sie danach sehen, gehört zur
|
||
neuen Wehr — es gibt keinen Zustand, in dem Daten der einen unter dem Namen
|
||
der anderen stehen.
|
||
|
||
---
|
||
|
||
## 55. Kreisbrandrat und Kreisbrandinspektion
|
||
|
||
Die Kreisebene bekommt Zugang zu den betreuten Wehren, ohne ihnen anzugehören.
|
||
|
||
**Sie sieht und ändert nichts.** Das ist keine Einstellung, die jemand
|
||
versehentlich anders setzen kann: eine Aufsichtszuordnung bekommt genau die
|
||
Leserechte und keines der Schreibrechte, und zwar automatisch auch für Module,
|
||
die es noch gar nicht gibt.
|
||
|
||
Wer als Aufsicht in einer Wehr unterwegs ist, sieht das durchgehend als Zeile
|
||
über der Ansicht.
|
||
|
||
### Was die Aufsicht sieht
|
||
|
||
Mitglieder, Fahrzeuge, Geräte, Prüfungen, Atemschutz, Einsätze, Übungen,
|
||
Qualifikationen, Termine, Wiki, Karte.
|
||
|
||
Der **Atemschutz** ist dabei der wichtigste Punkt: ob ein Träger tauglich ist,
|
||
ist genau die Frage, für die es eine Kreisebene gibt.
|
||
|
||
### Was sie nicht sieht
|
||
|
||
| | Warum |
|
||
|---|---|
|
||
| **Kasse** | Sie gehört dem Verein oder der Kommune, nicht der Kreisaufsicht. |
|
||
| **Protokoll** | Wer wann was getan hat, bleibt innerhalb der Wehr. |
|
||
| **KI-Protokoll** | Dasselbe. |
|
||
| **Personenexport nach DSGVO** | Das Auskunftsrecht erfüllt die Wehr, die die Daten führt. |
|
||
|
||
### Sie taucht in keiner Mitgliederliste auf
|
||
|
||
Die Aufsicht hat in der betreuten Wehr **keine Personenakte**. Sie ist also
|
||
kein Mitglied, erscheint in keiner Liste, in keiner Stärkemeldung und in
|
||
keiner Anwesenheit — und kann als Urheber einer Änderung auch gar nicht
|
||
eingetragen werden, weil sie keine macht.
|
||
|
||
Ist der Kreisbrandinspektor zugleich Kommandant seiner Heimatwehr, hat er dort
|
||
ganz normal seine Akte und seine Rollen. Es sind zwei Zuordnungen desselben
|
||
Kontos, mehr nicht.
|
||
|
||
---
|
||
|
||
## 56. Wehren und Konten verwalten
|
||
|
||
Unter **Wehren und Konten**. Der Menüpunkt erscheint nur für den, der die
|
||
Installation betreibt — nicht für Kommandanten, auch nicht für
|
||
Administratoren einer einzelnen Wehr.
|
||
|
||
> Dieses Merkmal hebt die Trennung zwischen den Wehren auf. Es gehört an so
|
||
> wenige Konten wie möglich, im Regelfall an eines.
|
||
|
||
### Eine Wehr anlegen
|
||
|
||
Vollständiger Name, Kurzname und eine **Kennung**. Die Kennung steht später
|
||
im Terminal und in Dateipfaden und lässt sich nicht mehr ändern — also mit
|
||
Bedacht wählen: Kleinbuchstaben, Ziffern, Bindestriche, etwa
|
||
`ff-musterhausen`.
|
||
|
||
Die neue Wehr bekommt sofort ihre Rollen samt Rechten. Ein Konto bekommt sie
|
||
nicht: das ist der zweite Schritt.
|
||
|
||
### Ein Konto anlegen
|
||
|
||
E-Mail-Adresse und ein erstes Passwort. Die Adresse gilt über alle Wehren
|
||
hinweg und ist damit die Anmeldung.
|
||
|
||
Das Passwort steht im Klartext da, damit Sie es weitergeben können — FLORIAN
|
||
verschickt keines. Es gehört nach der ersten Anmeldung geändert.
|
||
|
||
Gibt es zu der Adresse schon ein Konto, sagt FLORIAN das und legt **kein
|
||
zweites** an. Wenn diese Person zu einer weiteren Wehr gehören soll, bekommt
|
||
sie eine weitere Zuordnung — genau dafür ist die Trennung da.
|
||
|
||
### Zuordnen
|
||
|
||
Konto wählen, **Wehr zuordnen**, dann:
|
||
|
||
- **Mitglied** — zusätzlich die Personenakte in dieser Wehr wählen. Zur
|
||
Auswahl steht, wer noch kein Konto hat: eine Akte gehört zu höchstens einem,
|
||
sonst wäre nicht entscheidbar, wer unter ihrem Namen gehandelt hat.
|
||
- **Kreisaufsicht** — keine Akte, nur Leserechte.
|
||
|
||
Jede Zuordnung wird **in der betroffenen Wehr** protokolliert. Dort steht also
|
||
nachlesbar, dass jemand von außen Zugang bekommen hat.
|
||
|
||
### Eine Zuordnung beenden
|
||
|
||
Über das Papierkorb-Symbol. Die Personenakte in der Wehr bleibt bestehen —
|
||
entfernt wird nur der Zugang. Wer ausgetreten ist, wird in der Mitgliederliste
|
||
ausgetragen, nicht hier.
|
||
|
||
---
|
||
|
||
## 57. Rollen und was sie dürfen
|
||
|
||
Neun Rollen, jede mit einem festen Satz Rechte. Die Zuordnung steht zentral in
|
||
`src/lib/authz.ts` und wird beim Seed in die Datenbank gespiegelt — eine Wehr
|
||
kann sie also nachträglich zuschneiden, ohne dass jemand Code ändert.
|
||
|
||
| Rolle | Darf im Kern |
|
||
|---|---|
|
||
| **Administrator** | alles, auch über Wehren hinweg |
|
||
| **Kommandant** | alles innerhalb der eigenen Wehr, einschließlich Rollen vergeben und Protokoll einsehen |
|
||
| **Gerätewart** | Fahrzeuge und Geräte anlegen, ändern, aussondern; Prüfungen planen und durchführen |
|
||
| **Atemschutzgerätewart** | zusätzlich Atemschutzgeräte, Träger und die Überwachung nach FwDV 7 |
|
||
| **Kassier** | Kassenbuch, Beiträge, Rechnungen und Kassenabschluss; Belege erfassen und gegenzeichnen |
|
||
| **Schriftführer** | Mitglieder pflegen, Einsätze und Berichte erfassen, den Terminkalender führen |
|
||
| **Ausbilder** | Übungen und Übungstermine planen, Teilnahme, Anwesenheit und Qualifikationen erfassen |
|
||
| **Mitglied** | eigene Daten, Listen lesen, Termine sehen und sich zurückmelden, eigene Benachrichtigungswege einrichten, im Wiki lesen |
|
||
| **Kreisebene** | sieht die betreuten Wehren, ändert nichts — siehe [Kapitel 55](#55-kreisbrandrat-und-kreisbrandinspektion) |
|
||
| **Terminal** | nur anmelden und erfassen — nie verwalten |
|
||
|
||
Zwei Dinge sind bewusst so gebaut:
|
||
|
||
**Der Gerätewart kommt nicht an die Kasse, der Kassier nicht an die Geräte.**
|
||
Trennung nach Verantwortung, nicht nach Bequemlichkeit.
|
||
|
||
**Das Terminal darf fast nichts.** Wer am Wandtablet arbeitet, meldet sich
|
||
zusätzlich mit PIN oder Karte an und handelt dann unter seiner eigenen Person.
|
||
Das Terminal selbst ist nur die Tür.
|
||
|
||
**Seine Benachrichtigungswege richtet jeder selbst ein.** Das ist ein
|
||
Grundrecht jedes Mitglieds und keine Sache des Kommandanten — es gibt bewusst
|
||
keinen Weg, jemand anderem einen Zustellweg einzutragen. Was für alle gilt,
|
||
sind nur die Textvorlagen, und die hängen an einem eigenen Recht.
|
||
|
||
---
|
||
|
||
## 58. Anmeldung über authentik einrichten
|
||
|
||
authentik läuft **getrennt** von FLORIAN und ist nicht Teil dieses Stacks.
|
||
|
||
### In authentik
|
||
|
||
1. Neuen Provider anlegen, Typ **OAuth2/OpenID Provider**
|
||
2. Client-Typ: **Confidential**
|
||
3. Redirect-URI genau so eintragen:
|
||
```
|
||
https://<ihre-florian-adresse>/api/auth/callback/authentik
|
||
```
|
||
4. Scopes: `openid`, `profile`, `email`
|
||
5. Für die Rollenvorbelegung zusätzlich ein Scope-Mapping, das die Gruppen des
|
||
Benutzers als Claim `groups` ausliefert
|
||
6. Eine Application anlegen und mit dem Provider verbinden. Der Slug der
|
||
Application ist der letzte Teil der Issuer-URL.
|
||
|
||
### In der `.env`
|
||
|
||
```bash
|
||
AUTH_OIDC_ENABLED=true
|
||
AUTH_OIDC_ISSUER=https://auth.beispiel.de/application/o/florian/
|
||
AUTH_OIDC_CLIENT_ID=<aus authentik>
|
||
AUTH_OIDC_CLIENT_SECRET=<aus authentik>
|
||
AUTH_OIDC_GROUP_CLAIM=groups
|
||
AUTH_OIDC_GROUP_MAPPING=feuerwehr-kommandant:KOMMANDANT,feuerwehr-geraetewart:GERAETEWART
|
||
AUTH_OIDC_AUTO_PROVISION=true
|
||
AUTH_OIDC_STANDARD_ORGANISATION=ff-musterhausen
|
||
```
|
||
|
||
Danach die Anwendung neu starten. Auf der Anmeldeseite erscheint der Knopf für
|
||
authentik.
|
||
|
||
### Wie die Rollenvorbelegung wirkt
|
||
|
||
Die Zuordnung greift **nur beim allerersten Login** einer Person. Danach ist
|
||
die in FLORIAN gepflegte Rolle führend, und authentik überschreibt sie nicht
|
||
mehr. Wer also einem Mitglied in FLORIAN die Rolle „Gerätewart" gibt, behält
|
||
sie — auch wenn die authentik-Gruppe etwas anderes sagt.
|
||
|
||
Steht `AUTH_OIDC_AUTO_PROVISION=false`, muss die Person vorher in FLORIAN
|
||
angelegt sein. Verknüpft wird über die E-Mail-Adresse.
|
||
|
||
### Wenn authentik ausfällt
|
||
|
||
Solange `AUTH_LOCAL_ENABLED=true` steht, bleibt der Passwort-Login als
|
||
Rückfallweg erreichbar. Für den Wirkbetrieb ist es sinnvoll, mindestens ein
|
||
Konto mit Passwort zu behalten — sonst sperrt ein Ausfall von authentik die
|
||
ganze Wehr aus.
|
||
|
||
---
|
||
|
||
## 59. PIN und Ausweiskarte verwalten
|
||
|
||
Wie sich am Terminal angemeldet wird, steht in Kapitel 24. Hier geht es darum,
|
||
was dahinter liegt.
|
||
|
||
Am Terminal wird zweifach geprüft:
|
||
|
||
1. **Das Gerät** weist sich mit `KIOSK_DEVICE_SECRET` aus. Ohne diesen Wert
|
||
nimmt der Server keine PIN und keine Karte an.
|
||
2. **Die Person** meldet sich mit einer sechsstelligen PIN (zusammen mit ihrer
|
||
Mitgliedsnummer) oder mit einer RFID-Karte an.
|
||
|
||
Beides wird nur als Hash gespeichert — weder die PIN noch die Kartenkennung
|
||
liegen im Klartext in der Datenbank.
|
||
|
||
PINs, die sich zu leicht raten lassen, weist FLORIAN ab: lauter gleiche
|
||
Ziffern und fortlaufende Folgen wie `123456`.
|
||
|
||
Aus dem Seed lässt sich das ausprobieren: Mitgliedsnummer `0001` (Andreas
|
||
Huber), PIN `471203`.
|
||
|
||
---
|
||
|
||
## 60. Was protokolliert wird
|
||
|
||
Jede schreibende Änderung erzeugt einen Eintrag mit Zeitpunkt, Person,
|
||
betroffenem Datensatz und den geänderten Feldern im Vorher-Nachher-Vergleich.
|
||
Auch jede Anmeldung — erfolgreich wie gescheitert.
|
||
|
||
Zwei Eigenschaften sind wichtig:
|
||
|
||
**Der Log lässt sich nicht ändern.** Nicht über die Oberfläche, nicht über die
|
||
Datenbank, auch nicht vom Administrator. Die Datenbank selbst verhindert es.
|
||
|
||
**Er lässt sich nur im Aufbewahrungslauf kürzen.** Nach der eingestellten
|
||
Frist (`AUDIT_AUFBEWAHRUNG_TAGE`, Vorgabe 10 Jahre) sichert der
|
||
Hintergrundprozess die alten Einträge und entfernt sie danach. Das ist der
|
||
einzige Weg, auf dem etwas aus dem Log verschwindet.
|
||
|
||
**Passwörter, PINs und Kartenkennungen stehen nie im Log** — sie werden vor
|
||
dem Schreiben herausgenommen.
|
||
|
||
Einsehbar ist der Log mit dem Recht `system.auditlog`, das Kommandant und
|
||
Administrator haben. Am Gerät und am Fahrzeug ist der Verlauf bereits auf der
|
||
jeweiligen Detailseite sichtbar.
|
||
|
||
---
|
||
|
||
## 61. Wenn etwas nicht geht
|
||
|
||
| Beobachtung | Wahrscheinliche Ursache | Was hilft |
|
||
|---|---|---|
|
||
| Die Anwendung startet nicht und meldet fehlende Variablen | `.env` unvollständig | Die Meldung nennt jede fehlende Variable. Erklärungen dazu stehen in `.env.example`. |
|
||
| Anmeldung schlägt immer fehl, obwohl das Passwort stimmt | Konto nach Fehlversuchen gesperrt | Fünf Minuten warten, oder `gesperrtBis` in der Datenbank zurücksetzen |
|
||
| Listen sind leer, obwohl Daten da sind | Kein Mandantenkontext gesetzt | Das ist der Schutzmechanismus. Der Zugriff muss über `fuerOrganisation()` laufen. |
|
||
| Dateien lassen sich nicht hochladen | MinIO nicht erreichbar oder Bucket fehlt | `http://localhost:9011` öffnen; `docker compose logs minio-init` |
|
||
| Der Knopf für authentik fehlt | Issuer, Client-ID oder Secret nicht gesetzt | Alle drei sind nötig, sonst wird der Weg ausgeblendet |
|
||
| Etikettenbogen lässt sich nicht erzeugen | Gotenberg läuft nicht | `docker compose ps`, dann `docker compose up -d gotenberg` |
|
||
| Kamera bleibt schwarz | Freigabe abgelehnt, oder die Seite läuft nicht über HTTPS | Der Browser fragt nur bei HTTPS oder localhost. Sonst die Inventarnummer eintippen |
|
||
| Import meldet fehlende Pflichtfelder | Keine Spalte ist Inventarnummer oder Bezeichnung zugeordnet | In Schritt 2 die Zuordnung von Hand setzen |
|
||
| Umlaute im Import verstümmelt | Die Datei ist weder UTF-8 noch Windows-1252 | In Excel als „CSV UTF-8" speichern |
|
||
| Gerät lässt sich nicht speichern | Standort **und** Fahrzeug gesetzt, oder keines von beidem | Genau eines von beiden angeben |
|
||
| `docker compose up` startet Traefik mit | Override-Datei wurde nicht mitgeladen | In Produktion `-f docker-compose.yml` angeben |
|
||
| Terminal zeigt „Terminal nicht eingerichtet" | Das Tablet kennt keine Wehr, oder der Browserspeicher wurde geleert | `/kiosk/einrichten` erneut aufrufen |
|
||
| Terminal weist jede PIN ab | Gerätegeheimnis stimmt nicht mit `KIOSK_DEVICE_SECRET` überein | Einrichtung mit dem aktuellen Wert wiederholen |
|
||
| Die Leiste zeigt dauerhaft wartende Änderungen | Server erreichbar, aber der Vorgang wird abgelehnt | Über „anzeigen" den Grund lesen; landet er als Konflikt, steht er unter `/terminal` |
|
||
| „Der Code wurde nicht erkannt" beim QR-Login | Marke älter als 60 Sekunden | Auf dem Handy die Seite Anmeldemarke offen halten, sie erneuert den Code selbst |
|
||
| Der Monitor zeigt keine Wetterwarnung | `WETTER_ENABLED` aus oder `DWD_WARNCELL` leer | Beides setzen; ohne Warnzelle wird nichts abgerufen |
|
||
| Der Sicherheitshinweis im Atemschutz bleibt trotz `ATEMSCHUTZ_HINWEIS=false` | `ATEMSCHUTZ_FREIGABE` ist leer | Fundstelle der Freigabe eintragen — ohne sie bleibt der Hinweis absichtlich stehen |
|
||
| Die Überwachung lässt sich nicht beenden | Ein Trupp ist noch nicht als draußen gemeldet | Trupp abmelden, dann beenden. Die Meldung nennt die Anzahl |
|
||
| Oben steht „Verbindung unterbrochen", obwohl das Netz da ist | Der Ereignisstrom wurde von einem Proxy gepuffert oder gekappt | Die Ansicht arbeitet weiter; bei einem Reverse Proxy `X-Accel-Buffering: no` durchreichen |
|
||
| Das Atemschutzprotokoll fehlt | Die Überwachung ist noch nicht beendet | Ein Protokoll entsteht erst mit dem Ende — vorher wäre es unvollständig und sähe vollständig aus |
|
||
| Die Karte zeigt keinen Hintergrund | Kein Kartenserver eingerichtet oder nicht erreichbar | `docker compose --profile karte up -d`, MBTiles nach `docker/karten/`, `KARTE_STIL_URL` setzen. Ohne läuft alles außer den Straßen |
|
||
| Der Import überspringt alle Zeilen | Keine Spalte wurde als Breite und Länge erkannt | Spalten umbenennen (`lat`/`lon`, `Breitengrad`/`Längengrad`) — die erkannten Namen stehen in `lib/karte/hydrant-import.ts` |
|
||
| Nach dem Import steht überall „ungeprüft" | Die Quelle hat keine Statusspalte | Absicht: ohne Angabe wird nicht „einsatzbereit" behauptet. Zustand nachpflegen |
|
||
| Die Lagekarte gleicht nicht ab | Der Ereignisstrom ist unterbrochen | Steht oben in der Lagekarte. Bei einem Reverse Proxy `X-Accel-Buffering: no` durchreichen |
|
||
| Die Förderstrecke braucht unerwartet viele Pumpen | Fördermenge zu hoch für den Durchmesser | Der Verlust steigt im Quadrat: 800 statt 400 l/min kostet die vierfache Reibung. Größeren Schlauch wählen oder weniger fördern |
|
||
| Es kommt keine Benachrichtigung an | Kein Zustellweg eingerichtet, oder kein Anlass angekreuzt | Unter **Benachrichtigungen** einen Weg einrichten und ankreuzen, wofür. Ohne beides kommt absichtlich nichts |
|
||
| Die Probenachricht bleibt aus | Der Kanal ist auf dem Server nicht eingerichtet | In der Auswahl steht „(nicht eingerichtet)". `MAIL_ENABLED`, `NTFY_ENABLED`, `TELEGRAM_ENABLED` oder `WEBPUSH_ENABLED` setzen |
|
||
| Im Verlauf steht mehrfach „Fehlgeschlagen" | Der Weg ist kaputt — der Grund steht daneben | Bei ntfy meist ein Tippfehler im Thema, bei Telegram eine falsche Chat-Kennung |
|
||
| Browser-Push lässt sich nicht einrichten | Keine VAPID-Schlüssel auf dem Server | `npm run vapid` und die Ausgabe in die `.env` übernehmen |
|
||
| Push kam bisher an, jetzt nicht mehr | Der öffentliche VAPID-Schlüssel wurde gewechselt | Alle Abos sind damit wertlos. Jeder muss Push neu erlauben — deshalb gehören die Schlüssel ins Backup |
|
||
| Auf dem iPhone gibt es keinen Push-Knopf | Web-Push geht dort nur als abgelegte App | Über „Teilen → Zum Home-Bildschirm" ablegen, dann erneut versuchen |
|
||
| Der Kalender im Handy aktualisiert sich nicht | Das Programm fragt nur stündlich nach | Abwarten oder im Kalenderprogramm „Aktualisieren" auslösen |
|
||
| Der Kalender ist plötzlich leer | Der Zugang wurde widerrufen, oder die Person ist ausgetreten | Unter **Benachrichtigungen** eine neue Adresse erzeugen |
|
||
| Eine Vorlage lässt sich nicht speichern | Ein Platzhalter gehört nicht zu diesem Anlass | Die Meldung nennt ihn und listet die erlaubten auf |
|
||
| Ein Termin lässt sich nicht löschen | Es liegen schon Rückmeldungen vor | Absagen statt löschen — dann sehen die Angemeldeten den Grund |
|
||
| Die Zusage wurde zur Warteliste | Die Plätze sind belegt | Sagt jemand ab, rücken Sie von selbst nach und werden benachrichtigt |
|
||
| Der Kasten „Frage an die Unterlagen" fehlt | Kein Sprachmodell eingerichtet | `LLM_ENABLED=true` und `LLM_BASE_URL`; Container mit `docker compose --profile ki up -d`. Die Wortsuche geht trotzdem |
|
||
| Die Frage antwortet „steht nicht in den Unterlagen" | Entweder steht es wirklich nicht drin — oder die Seite ist noch nicht eingebettet | Auf der Seite steht dann „Suchstand ist älter als der Text". **Jetzt nachziehen** drücken |
|
||
| „Das Modell hat nach 120 Sekunden nicht geantwortet" | Ohne Grafikkarte ist das normal | Kleineres Modell (`qwen2.5:7b`) oder `LLM_TIMEOUT` hochsetzen |
|
||
| „Das Modell liefert 1024 Dimensionen, die Datenbank erwartet 768" | Ein anderes Einbettungsmodell eingetragen | Entweder `nomic-embed-text` benutzen oder die Spalte per Migration ändern — siehe README, Phase 8 |
|
||
| Der Diktat-Knopf bewirkt nichts | Der Browser fragt das Mikrofon nur über HTTPS oder auf localhost ab | Über die richtige Adresse aufrufen und die Freigabe erteilen |
|
||
| Das Diktat bleibt bei „Wird erkannt …" stehen | Der Hintergrundprozess läuft nicht, oder Whisper ist nicht erreichbar | `docker compose ps`, dann `docker compose --profile ki up -d whisper`. Die Aufnahme bleibt erhalten |
|
||
| Beim Beleg bleiben alle Felder leer | Kein Vision-Modell, oder das Foto ist unscharf | Angaben von Hand eintragen. Für die Erkennung `LLM_VISION_MODELL` setzen und das Modell holen |
|
||
| Die Migration bricht mit „type vector does not exist" ab | Das Postgres-Image bringt pgvector noch nicht mit | `docker compose build postgres`, dann `docker compose up -d postgres` und erneut migrieren |
|
||
|
||
Zustand aller Randsysteme auf einen Blick:
|
||
|
||
```
|
||
http://localhost:3100/api/health
|
||
```
|
||
|
||
Antwortet mit `200` und `"status": "ok"`, wenn Datenbank, Objektspeicher und
|
||
Warteschlange erreichbar sind — sonst mit `503` und der Angabe, welcher Dienst
|
||
fehlt.
|
||
|
||
---
|
||
|
||
## Bilder erneuern
|
||
|
||
```bash
|
||
docker compose up -d
|
||
npm run dev
|
||
npm run screenshots
|
||
```
|
||
|
||
Die Bilder entstehen in `docs/screenshots/`, jeweils in heller und dunkler
|
||
Darstellung, und werden mit eingecheckt — die Anleitung soll auch dann lesbar
|
||
sein, wenn gerade kein Stack läuft.
|