Legt den kompletten Unterbau an, auf dem die Fachmodule aufsetzen. Betrieb: - docker-compose.yml mit Traefik, App, Worker, PostgreSQL 17 + PostGIS, Redis, MinIO und Gotenberg; Entwicklungs-Override ohne Traefik, dafuer mit Mailpit und Adminer - Mehrstufiges Dockerfile: eigener Benutzer, tini als PID 1, Healthcheck - .env.example mit einem Kommentar zu jeder Variable Mandantentrennung: - Row Level Security auf allen mandantenpflichtigen Tabellen - Zwei getrennte Datenbankverbindungen: florian_app mit aktiver RLS fuer die Anwendung, Eigentuemer-Zugang nur fuer Migration, Seed und Anmeldung - fuerOrganisation() als einziger Weg zu Fachdaten Nachvollziehbarkeit: - AuditLog append-only per Trigger; UPDATE ist dauerhaft gesperrt, DELETE nur im gekennzeichneten Aufbewahrungslauf - Geheimnisse werden vor dem Schreiben entfernt Anmeldung: - OIDC gegen ein extern betriebenes authentik, Rollen aus Gruppen nur als Vorbelegung beim ersten Login - Lokaler E-Mail/Passwort-Login als Rueckfallweg - Terminal per PIN und RFID mit zwei Schranken (Geraet, dann Person) Weiteres: - lib/authz.ts mit 9 Rollen und 38 Einzelrechten - lib/storage.ts (MinIO), lib/audit.ts, lib/warteschlange.ts (BullMQ) - Integrationen fuer Mail, Telegram und LLM hinter abschaltbaren Interfaces - tRPC v11, Basis-Layout mit Seitenleiste und dunkler Darstellung - Seed mit einer Beispielwehr: 16 Personen, 3 Fahrzeuge, 40 Geraete - 32 Vitest-Tests (davon 8 gegen eine echte Datenbank), 10 Playwright-Tests - README, Anleitung mit Screenshots, Roadmap, Aufwandsschaetzung, Devlog, Versionierungsregeln und Changelog Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
28 lines
1.4 KiB
Markdown
28 lines
1.4 KiB
Markdown
Phase 5: Atemschutzüberwachung nach FwDV 7.
|
|
|
|
WICHTIG: Jede Ansicht dieses Moduls zeigt oben dauerhaft den Hinweis:
|
|
"Ergänzendes System — die analoge Atemschutzüberwachung bleibt führend."
|
|
Dieser Hinweis ist erst über eine Konfigurationsoption abschaltbar, die
|
|
dokumentiert eine Freigabe durch den Kommandanten voraussetzt.
|
|
|
|
Modelle: Atemschutzeinsatz (Einsatz, Überwacher, Beginn, Ende),
|
|
Trupp (Truppführer, Truppmann, Auftrag, Funkrufname, Status:
|
|
bereit|im_einsatz|rueckweg|draussen), Druckmessung (Trupp, Person,
|
|
Zeitpunkt, Druck in bar, Art: eingang|zwischen|ausgang),
|
|
G26Untersuchung (Person, Datum, gueltig_bis), Belastungsuebung
|
|
(Person, Datum, Art, Ort).
|
|
|
|
Funktionen:
|
|
- Truppanlage per RFID-Scan oder Auswahl, Eingangsdruck erfassen
|
|
- Live-Timer je Trupp, serverseitig autoritativ, per Socket.IO verteilt
|
|
- Rückzugsdruck-Berechnung (konfigurierbare Formel, Standard:
|
|
Eingangsdruck-Verbrauchsrate) mit optischer Ampel und akustischem Alarm
|
|
bei Schwellwert
|
|
- Erinnerung zur Druckabfrage in konfigurierbarem Intervall (Standard 10 min)
|
|
- Notfallknopf je Trupp (Mayday) mit Protokolleintrag
|
|
- Lückenloses Protokoll als PDF, angehängt an den Einsatz
|
|
- Verwaltung: G26.3-Fristen, Belastungsübungen, Einsatzstunden je AGT,
|
|
Tauglichkeitsübersicht mit Ampel, Dashboard-Widget "verfügbare AGT"
|
|
|
|
Timer müssen einen Browser-Reload und einen Verbindungsabbruch überstehen.
|
|
Das ist die wichtigste Testanforderung. |