Atemschutzueberwachung nach FwDV 7 ergaenzen
Phase 5: das sicherheitsrelevanteste Modul des Projekts. Ueber jeder Ansicht steht dauerhaft, dass die analoge Atemschutzueberwachung fuehrend bleibt — abschaltbar nur zusammen mit der Fundstelle einer Freigabe des Kommandanten. Es gibt keinen Timer. In der Datenbank stehen Zeitstempel; wie lange ein Trupp unter Atemschutz ist, rechnet jede Ansicht bei jedem Bild neu aus. Damit ist die Anforderung "uebersteht Neuladen und Verbindungsabbruch" keine Funktion, die gelingen muss, sondern eine Eigenschaft, die sich nicht verlieren laesst. Server und Browser rechnen mit denselben Funktionen. Der Rueckzugsdruck folgt dem doppelten Anmarschverbrauch: was der Weg hinein gekostet hat, kostet der Weg zurueck noch einmal. Bis der Trupp das Einsatzziel meldet, greift die Zwei-Drittel-Regel — sie liegt hoeher und ist damit die vorsichtigere Annahme. Das Protokoll ist doppelt gesichert: entzogene Rechte und ein Trigger auf druckmessung und atemschutz_ereignis. Ein Fehler wird durch einen neuen Eintrag richtiggestellt, nicht durch Aendern. Verteilt wird ueber Server-Sent Events statt Socket.IO — es geht nur in eine Richtung, und so bleibt das Deployment bei "next start". Behoben: ein abgerissener Ereignisstrom meldete sich nicht. Die Anzeige haette weiter "Verbunden" behauptet, waehrend der Draht tot war. Jetzt gilt Stille von acht Sekunden als Abriss. Dazu zwei Altlasten: der Navigationseintrag "Protokoll" fuehrte ins Leere, und die Startseite stand noch auf Phase 1. 68 neue Tests (51 Unit, 17 gegen eine echte Datenbank, 8 E2E je Browser). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b2b31ed00a
commit
4e2daaafd4
@@ -249,7 +249,7 @@ soll, sind es nicht.
|
||||
|
||||
## Phase 5 — Atemschutz nach FwDV 7
|
||||
|
||||
**Vergleichsaufwand: 14–18 PT**
|
||||
**Vergleichsaufwand: 14–18 PT** · **Tatsächlich: 2:40 h Sitzungszeit**
|
||||
|
||||
| Baustein | PT |
|
||||
|---|---:|
|
||||
@@ -268,6 +268,33 @@ Timer, der einen Reload überlebt, ist Pflicht — deshalb muss die Zeit
|
||||
serverseitig geführt werden und der Browser nur anzeigen. Diese Phase bekommt
|
||||
den höchsten Testanteil im Projekt.
|
||||
|
||||
**Rückblick.** Der Satz stimmt, aber die Schlussfolgerung war die falsche. Die
|
||||
Aufstellung veranschlagt 3,5 PT für „serverseitig autoritative Timer" — als
|
||||
wäre ein Timer zu bauen. Gebraucht wurde das Gegenteil: **kein** Timer. Wer die
|
||||
Zeit als Zeitstempel in die Datenbank schreibt und jede Ansicht selbst rechnen
|
||||
lässt, hat nichts, was einen Reload nicht überlebt. Der teuerste Posten der
|
||||
Schätzung war der billigste der Umsetzung, weil die richtige Entscheidung ihn
|
||||
auflöst statt ihn zu lösen.
|
||||
|
||||
Auch Socket.IO fiel weg. Es geht nur in eine Richtung — der Server meldet eine
|
||||
Änderung, der Browser holt den Stand über den Weg, den es ohnehin gibt. Ein
|
||||
Route Handler mit Server-Sent Events ist siebzig Zeilen und braucht kein
|
||||
verändertes Deployment.
|
||||
|
||||
Teurer war das, was in keiner Zeile der Aufstellung steht: **die Frage, was
|
||||
passiert, wenn nichts passiert.** Ein abgerissener Ereignisstrom meldet sich
|
||||
nicht — `EventSource` schweigt einfach. Eine Anzeige, die deshalb weiter
|
||||
„Verbunden" behauptet, ist gefährlicher als eine, die gar nichts anzeigt: sie
|
||||
lässt einen alten Stand wie einen aktuellen aussehen. Aufgefallen ist das nur,
|
||||
weil der E2E-Test das Netz gekappt und danach nachgesehen hat — die 2,0 PT für
|
||||
„Tests: Reload und Verbindungsabbruch überstehen" waren wieder der
|
||||
bestangelegte Posten der Phase.
|
||||
|
||||
Billiger als gedacht war die Tauglichkeit. Nicht das Rechnen — die
|
||||
Entscheidung, **nicht** zu sperren. Damit entfielen alle Sonderfälle, die eine
|
||||
Sperre nach sich zieht: Übersteuern, Begründungspflicht, Freigabe durch wen.
|
||||
Was bleibt, ist ein Satz neben dem Namen, und der ist im Einsatz mehr wert.
|
||||
|
||||
## Phase 6 — Kartenmodule
|
||||
|
||||
**Vergleichsaufwand: 14–18 PT**
|
||||
|
||||
Reference in New Issue
Block a user