Phase 3: Einsatz- und Uebungserfassung
Schnellerfassung im Alarmfall, sechs Zeitstempel mit Ausrueckzeit, Anfahrt und Hilfsfrist, Staerke nach FwDV 3, Personalvorschlag mit Qualifikationsstand, Einsatzbericht als PDF, Jahresexport fuer die Gemeinde, Statistik und Uebungen mit Anwesenheitsliste. Dazu das Einsatzportal fuer Fremdwehren: ein signierter Link ohne Anmeldung, zeitlich und mengenbegrenzt, der Stichwort, Ort, Zeiten und Lagemeldungen zeigt und Meldungen mit Foto annimmt. Es sind die ersten oeffentlich erreichbaren Endpunkte in FLORIAN. Acht neue Tabellen, alle mit organisationId und Row Level Security. Ein freigegebener Einsatzbericht ist unveraenderlich; ein Datenbanktrigger setzt das durch. Koordinaten liegen doppelt — als Dezimalgrad und als PostGIS-Punkt, zusammengehalten von einem Trigger. 57 neue Tests (32 Unit, 14 gegen eine echte Datenbank, 11 E2E). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bc62a9c1e8
commit
91954c402b
+113
-1
@@ -8,7 +8,119 @@ Die Regeln dazu stehen in [docs/VERSIONIERUNG.md](docs/VERSIONIERUNG.md).
|
||||
|
||||
## [Unveröffentlicht]
|
||||
|
||||
Nächster Schritt ist Phase 3 (Einsätze und Übungen).
|
||||
Nächster Schritt ist Phase 4 (Kiosk-PWA mit Offline-Betrieb).
|
||||
|
||||
---
|
||||
|
||||
## [0.4.0] — 2026-09-03
|
||||
|
||||
Phase 3: Einsätze und Übungen. Ab hier dokumentiert die Wehr, was sie tut —
|
||||
für die Gemeinde, für die Versicherung und für die eigene Mannschaft.
|
||||
|
||||
### Hinzugefügt
|
||||
|
||||
**Datenmodell**
|
||||
|
||||
- `Einsatz` mit den sechs Zeitstempeln (alarmiert, ausgerückt, eingetroffen,
|
||||
Einsatzende, eingerückt, einsatzbereit), Ort samt Koordinaten, Kategorie nach
|
||||
der bayerischen Feuerwehrstatistik und den Zahlen für die Gemeindemeldung.
|
||||
- `Einsatzfahrzeug` mit eigenen Zeiten je Fahrzeug — Nachalarmierung bleibt
|
||||
sichtbar —, Kilometerstand und Wasserabgabe.
|
||||
- `Einsatzkraft` mit Funktion nach FwDV 3, Fahrzeug, Zeitraum und
|
||||
Atemschutz-Kennzeichen.
|
||||
- `Materialverbrauch` und `Lagemeldung` mit Foto und Herkunft.
|
||||
- `PortalZugang` — ein zeitlich begrenzter Link für eine Fremdwehr, gespeichert
|
||||
nur als Hash.
|
||||
- `Uebung` und `Uebungsteilnahme` mit Thema, Lernzielen und Anwesenheit.
|
||||
|
||||
**Schnellerfassung**
|
||||
|
||||
- Stichwort, Ort, ausgerückte Fahrzeuge — mehr fragt die Erfassung im Alarmfall
|
||||
nicht. Alarmzeit ist der Moment des Anlegens, alles Weitere wird nachgetragen.
|
||||
- Fortlaufende Einsatznummer `JJJJ-NNNN` je Wehr und Jahr, vergeben unter einer
|
||||
Transaktionssperre.
|
||||
|
||||
**Zeiten und Stärke**
|
||||
|
||||
- Ein Knopf je Zeitstempel, solange der Einsatz läuft.
|
||||
- Daraus gerechnet: Ausrückzeit, Anfahrtszeit, Hilfsfrist und Einsatzdauer.
|
||||
- Stärke nach FwDV 3 in der Schreibweise `Führer/Unterführer/Mannschaft/Gesamt`,
|
||||
mit Zuordnung zur taktischen Einheit (Trupp, Staffel, Gruppe, Zug).
|
||||
- Hinweise statt Sperren: eine verdrehte Zeitreihenfolge oder eine fehlende
|
||||
Führungskraft wird angezeigt, verhindert das Speichern aber nicht — ein
|
||||
Einsatz, der drei Wochen später nachgetragen wird, ist immer noch besser als
|
||||
einer, den niemand erfasst.
|
||||
|
||||
**Personalvorschlag**
|
||||
|
||||
- Sortiert nach Einsatzerfahrung der letzten zwölf Monate, mit dem
|
||||
Qualifikationsstand daneben: eine abgelaufene G26.3 fällt auf, bevor jemand
|
||||
unter Atemschutz geht.
|
||||
|
||||
**Einsatzbericht und Freigabe**
|
||||
|
||||
- Bericht als PDF über Gotenberg: Kopf, Zeitleiste mit Kennzahlen, Fahrzeuge,
|
||||
Mannschaft mit Stärke, Material, Verlauf und Bericht.
|
||||
- Mit der Freigabe wird der Einsatz festgeschrieben — durchgesetzt von einem
|
||||
Datenbanktrigger, nicht vom Anwendungscode. Ausgenommen bleiben das
|
||||
nachgetragene PDF und die Lagemeldungen.
|
||||
- Jahresexport als quer gedrucktes PDF unter `/api/einsaetze/jahresexport`.
|
||||
|
||||
**Statistik**
|
||||
|
||||
- Einsätze nach Kategorie und Monat, Verteilung der Hilfsfristen mit dem
|
||||
80-Prozent-Wert, Beteiligung je Person (Einsätze, davon unter Atemschutz,
|
||||
Übungen) und Auslastung je Fahrzeug.
|
||||
|
||||
**Einsatzportal für Fremdwehren**
|
||||
|
||||
- Signierter Link ohne Anmeldung, gültig 24 Stunden, jederzeit widerrufbar,
|
||||
jeder Aufruf wird mitgezählt.
|
||||
- Zeigt Stichwort, Ort, Zeitstempel und Lagemeldungen — keine Namen von
|
||||
Einsatzkräften, keinen Bericht, keinen Weg in den Rest der Anwendung.
|
||||
- Nimmt Lagemeldungen mit Foto an, begrenzt auf 30 Meldungen und 10 Fotos je
|
||||
Zugang und Stunde.
|
||||
- Eigene Zugriffsbegrenzung über Redis (`src/lib/ratelimit.ts`), die bei
|
||||
Störung durchlässt statt zu blockieren.
|
||||
|
||||
**Übungen**
|
||||
|
||||
- Thema, Art, Lernziele, Ort und Leitung; Anwesenheit als Liste zum Abhaken.
|
||||
- Fließt in die Beteiligungsstatistik ein.
|
||||
|
||||
**Adressen zu Koordinaten**
|
||||
|
||||
- Anbindung an einen **selbst betriebenen** Nominatim hinter einer Schnittstelle
|
||||
in `lib/integrations/`. Ohne Konfiguration bleibt die Suche leer und die
|
||||
Koordinaten werden von Hand eingetragen.
|
||||
- Koordinaten liegen doppelt: als Dezimalgrad für die Anwendung und als
|
||||
PostGIS-Punkt für die Karte ab Phase 6, zusammengehalten von einem Trigger.
|
||||
|
||||
**Sonstiges**
|
||||
|
||||
- Der Seed legt acht Einsätze über das Jahr verteilt an — Brände, technische
|
||||
Hilfeleistungen, ein Fehlalarm einer Brandmeldeanlage — dazu sechs Übungen
|
||||
und die Beteiligung der Mannschaft.
|
||||
- 57 neue Tests: 32 Unit-Tests zu Stärke, Zeiten und Nummernkreis, 14 gegen eine
|
||||
echte Datenbank (Koordinaten-Trigger, Freigabe, Mandantentrennung) und 11
|
||||
Playwright-Durchläufe einschließlich des Portals in einem Browser **ohne**
|
||||
Sitzung.
|
||||
|
||||
### Geändert
|
||||
|
||||
- Der Nummernkreis `JJJJ-NNNN` liegt jetzt in `src/lib/nummernkreis.ts` und wird
|
||||
von Prüfprotokollen, Einsätzen und Übungen gemeinsam verwendet.
|
||||
- Die Seitenleiste zeigt Einsätze und Übungen als verfügbar.
|
||||
- Das Zeitlimit der E2E-Erwartungen steigt von 15 auf 25 Sekunden: mit fünfzig
|
||||
Routen dauert die erste Übersetzung einer Seite im Entwicklungsserver unter
|
||||
Last länger als vorher, und daran scheiterten gelegentlich Tests, die einzeln
|
||||
grün sind.
|
||||
|
||||
### Behoben
|
||||
|
||||
- Die Anwesenheitsliste einer Übung forderte 300 Mitglieder an und lief damit
|
||||
in die Höchstzahl von 200 je Seite — die Liste blieb leer. Gefunden über die
|
||||
Server-Ausgabe während der E2E-Tests.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user