DVG-Meldewesen · Umsetzung

Feinkonzepte

Herunterbrechung des Grundkonzepts in baubare, verifizierbare Bausteine. Risiken zuerst, in durchgängigen Schnitten.
Bau-Backlog FK-01 ff. Erster Durchstich
1
Methodik

Risiko-first, vertikale Schnitte

vertikale Schnitte statt Schichten
Konfig vs. Code je Baustein trennen
§14-Beispiele als Akzeptanzkriterien
Wiederverwendung vor Neubau (Build-Gap)
Spike vor Vollausbau (bei hohem Risiko)
Referenz im Bestand lesen, keine API raten

Fundamente zuerst: FK-01 und FK-02 (sie tragen fast alles andere). Danach FK-03, dann FK-04/FK-05. FK-06 ist überwiegend Komposition vorhandener Bausteine.

2
Backlog

Bau-Backlog (Reihenfolge)

FKBausteinTypRisikoStatus
FK-00Konfigurations-Governance / Befund-BlockNeubau (Rahmen)hochEntwurf, verifiziert
FK-01Drehbuch-/OMCL-EngineNeubauhochEntwurf, verifiziert
FK-02MeldungscontainerNeubau (Schema)mittelEntwurf, verifiziert
FK-03Maßnahmen-ModellNeubaumittelEntwurf, verifiziert
FK-04Benachrichtigungs-AusbauVorstufemittelEntwurf, verifiziert
FK-05Eskalations-/Schweregrad-ModellVorstufeniedrig-mittelEntwurf, verifiziert
FK-06Adaptive Erfassungs-MaskeKompositionniedrig-mittelEntwurf, verifiziert
FK-07Zuständigkeits-Resolver (Ort+Zeit)NeubaumittelEntwurf, verifiziert
FK-08–12Subdialog-Reiter, Erledigung, Simulator, Cockpit, Chrono-BerichtVorstufe/Kompositionniedrig–mittelgeplant
00
FK-00 · Governance

Konfigurations-Governance: der Befund-Block

Der Rahmen, der alles andere zusammenhält. In Phase 1 festzuschreiben, bevor FK-01 ff. ihn füllen. Zwei Schichten, eine abgeleitete Größe.

Das Modell
Kategorie ordnet (oberste Achse)
Befund-Blöcke adaptieren (Bedingung über Inhalt)
Eskalationsstufe abgeleitet (reine Ausgabe)
Maske = Vereinigung aktiver Blöcke

Vorlagen (verifiziert)

  • Schicht-/Merge-Semantik ← ColumnConfigResolver (Inherit/Override/Extend)
  • Stamm + 1:N Regeln ← FileSourceRule / PermissionDocumentRule
  • Aktivierungsbedingung ← UdmFilterGroup (= VDV-722 MCL-Anwendbarkeit)
  • Priorität je Effekt ← FieldRuleEngine (Tri-State-Slots)

Neu (Rahmen)

  • Befund-Block-Container: mehrere Aspekte unter einer Bedingung (heute nicht vorhanden)
  • Entwurfszeit-Konfliktanzeige (Engine überschreibt heute still)
  • bedingte Abschnitte/Reiter (kein Tab-/Section-Modell im Bestand)
  • Stufen-Ableitung f(Kategorie, Befund) als reine Ausgabe

Konfiguriert wird immer gegen den Befund, nie gegen die Stufe. Werkzeuge: Governance-Matrix (Entwurfszeit) und inhaltsgetriebener Simulator. interaktiver Prototyp

00b
FK-00 · Datenarchitektur

Datenarchitektur und Dynamik

Wohin geschrieben wird und wie sich alles gegenseitig beeinflusst. Speicher-Seite code-verifiziert.

Speicher (code-verifiziert)
Spalten zur Laufzeit auto-provisioniert (kein EAV)
Kern + Kategorie-Detail (1:1) je Top-Kategorie
Maßnahme = Kern + Detail je Typ
Nachricht: DtoMessage-Reuse, Folge via Self-Ref

Dynamik

  • Re-Evaluation bei jeder Änderung (Felder, Maßnahmenfelder, Zeit, Ort)
  • einpassig und zyklenfrei (Stufe als reine Ausgabe ist der Schutz)
  • Benachrichtigungs-Ziel daten-/zeit-/ortsabhängig (FK-07)
  • Höchststufe als Ratchet für Bericht und Accountability

Irreversibilität

  • begonnene Maßnahmen und versendete Nachrichten bleiben (nie entfernt)
  • zwei Zonen: Vorschlag (reaktiv) vs. begonnen (monoton, append-only)
  • nicht mehr passende nur als „nicht mehr zutreffend" markiert
  • Umsetzung via ImmutableAfterState; Basis des Chrono-Berichts (§5)

Alles ist ein großer, datengetriebener Container sich gegenseitig beeinflussender Faktoren. Maßnahmen sind dabei selbst Mini-Container mit eigenen Feldern.

3
Absicherung

Erster Durchstich (Walking Skeleton)

Ein dünner durchgängiger Pfad durch die echten Mechanismen, bevor die Engines vollständig ausgebaut werden.

WS-1 · S0

Defekter Automat

Spine auf vorhandenen Bausteinen, ohne neue Engine: Datenobjekt, Maske, Versand, Erledigung.

WS-2 · S1

Türstörung

Kleinste Ausprägung der neuen Drehbuch-Engine: ein Befund-Block aktiviert eine MCL mit einem Schritt (Save-only Re-Evaluation).

WS-3 · S2/S3

Unfall Personenschaden

Voll: Befund-Block, Phasen Rot/Gelb/Grün, parallele Bearbeitung, Container, Chrono-Bericht.

WS-1 und WS-2 sind die Pflicht-Gates, bevor breit konfiguriert wird (Strang C des Fahrplans).

4
FK-01 · code-verifiziert

Drehbuch-/OMCL-Engine

Aus modularen Bausteinen zur Laufzeit die eine adaptive Schrittliste zusammensetzen, fortschreiben, nachvollziehbar halten.

Wiederverwendbar (verifiziert)

  • UdmFilterGroupEvaluator.Matches() als Bedingungs-Evaluator (1:1)
  • Kontext-Aufbau-Muster aus FieldRuleEngine
  • UdmAction, Live-Change, UdmJob/Scheduler

Neu zu bauen

  • Save-Hook (FieldRuleEngine ist UI-live, kein Save, kein Diff)
  • Komposition aus ECL/MCL/Paketen + Diff gegen persistierte Instanz
  • Persistenz als typisierte Subentity (wie Dashboard→DashboardItem)

Caveat aus dem Code: Schritt-Updates nicht über den Batch-Insert-Pfad (insert-only), sondern Einzelsatz mit TrackedChanges.

5
FK-02 · code-verifiziert

Meldungscontainer (Vorfall ↔ Folgemeldungen)

Variante A (Self-Reference) ist plattformseitig direkt unterstützt.

vorhanden

TreeView + Self-Reference

  • TreeView mit KeyField / ParentKeyField
  • Self-Ref-Vorbild im Code: AMAnwendungsfall.ParentAnwendungsfallId
  • kein eigener Baum nötig
neu

Schema & Regeln

  • ParentEventId + Self-FK + Migration (UdmMessage ist heute flach)
  • Zuordnungs-/Auto-Zusammenführungs-Regeln
  • Fundament für den chronologischen Bericht (FK-12)

Variante B (eigene Vorfall-Entity) bleibt spätere Option, falls der Vorfall einen eigenen Kopf braucht.

6
FK-03 · code-verifiziert

Maßnahmen-Modell

Maßnahmen-Katalog + Regeln, die je Befund Schritte in die OMCL einplanen. Speist FK-01.

Datenmodell (Konfiguration)
Maßnahme (Stamm-Katalog) + Typ
6 Typ-Profile mit Defaults
MassnahmenRegel: Bedingung → Maßnahme
Muss/Kann, Phase, Reihenfolge

Vorlagen (verifiziert)

  • MassnahmenRegel ← GdoFieldRule (Bedingung + Effekt, Priorität)
  • Typ-Profile ← GdoColumnEnrichment (Typ-Enum + Felder)
  • Stamm + Regel 1:N ← FileSourceRule / PermissionDocumentRule
  • Ausführung ← UdmJob / UdmAction

Komplett neu zu bauen

  • Maßnahmen-Stamm-Entity + MassnahmeTypEnum
  • Dispositions-Logik: Muss/Kann-Aktivierung, Bündel-Sektion, Reihenfolge
  • Einspeisung als Maßnahme-Schritt in die OMCL (FK-01)

Wirklich neu ist nur die Dispositions-Geschäftslogik; das Gerüst (Regel, Typ-Profil, Stamm+Regel, Ausführung) existiert als Muster im Bestand.

7
FK-04 · code-verifiziert

Benachrichtigungs-Ausbau

Benachrichtigungen über Kanäle mit dynamischen Empfängern; speist die Info-Schritte der OMCL. Vorstufe vorhanden.

Vorhanden (Vorstufe)

  • Push/FCM: IUdmPushNotificationService
  • E-Mail: UdmMessageDistributingService (MailKit/SMTP)
  • Empfänger-Ansatz: GdoMessageTemplateRecipient
  • Bedingungen: UdmFilterGroup + Hintergrund-Jobs

Auszubauen

  • erweiterbare Kanal-Architektur (E-Mail/SMS/Tel/Fax/Webhook/DFI)
  • Empfänger-Resolver, 4 Strategien (statisch · Rolle · Lookup · Code)
  • Versand-Stand festschreiben (reproduzierbar), Veto-Recht, Eskalations-Ketten
  • Erst-/Haupt-/Schlussinformation je Phase + Wiederholung; Versand im Verlauf

Zwei Empfänger-Klassen: Beteiligte informieren vs. Fahrgastinformation. Ziel-Auflösung über den Zuständigkeits-Resolver (FK-07).

8
FK-05 · code-verifiziert

Eskalations-/Schweregrad-Modell

Ein normverankertes Stufenmodell, das Maske, Drehbuch-Phase und Benachrichtigung steuert.

S0

Regelbetrieb / reine Doku

keine Disposition

S1

Störung

Disposition, einfacher Ablauf

S2

Notfall

externe Kräfte, Eskalation

S3

Krise / Katastrophe

parallele Bearbeitung, Krisenstab

Vorhanden (Vorstufe)

  • nur ValidationSeverityEnum (Error/Warning/Info), validierungsspezifisch

Neu

  • Incident-Severity-Enum (Regelbetrieb→Störung→Notfall→Krise→Katastrophe, aus VDV-Mitt. 7018)
  • Wirkungs-Zuordnung: Masken-Umordnung (Stress-Modus) · Drehbuch-Schärfe · Benachrichtigungs-Profile
  • Hochstufungs-Logik (Befund hebt die Stufe, z. B. „Verletzte > 0")
9
FK-06 · Komposition

Adaptive Erfassungs-Maske

Eine Maske statt vieler Fall-Masken; sie materialisiert sich nach Befund und Eskalationsstufe. Überwiegend Komposition vorhandener Bausteine.

Vorhanden (Komposition)

  • Field-Rules V2 (sichtbar/pflicht/readonly)
  • ColumnEnrichment für Lagebild-Ableitungen (Linie→Kurs→Wagen→Fahrer)
  • die Eskalationsstufe steuert die Umordnung (FK-05)
  • bedingte Subdialog-Reiter (Vorstufe via DynamicCode)

Neu (UI-Schicht)

  • Neu-Anordnung der Maske: Lagebild-Panel + Sofort-Maßnahmen-Leiste (Stress-Modus)
  • deklarativer Reiter-Sichtbarkeits-Aufsatz (statt String-DynamicCode)
  • Per-Aktion-Live-Status im Sofort-Bereich (Doppelanruf-Schutz)

Kein Neubau: Das Fundament (Field-Rules, Ableitungen, Live-Change) steht; neu ist nur die Umordnungs-Schicht der Oberfläche und der deklarative Reiter-Aufsatz.

10
FK-07 · code-verifiziert

Zuständigkeits-Resolver (Ort + Zeit)

Bestimmt zu einem Ereignis die zuständige Stelle und die Bereitschaft. Zwei Modi: Attribut-Kette (ohne Karte) und Geometrie (Punkt-in-Fläche, später).

Vorlagen (verifiziert)

  • Lookup-Kette ← ColumnEnrichmentProcessor (Haltestelle→Abschnitt→Bezirk→Stelle)
  • Hierarchie + Zeitfenster ← PermissionSetResolver (Pfad-Expansion, IsCurrentlyValid für Tag/Nacht)
  • Träger der Auflösung ← DynamicCode bzw. ein eigener Resolver-Service (zustandslos, im Speicher)
  • GIS-Basis vorhanden: WFS/WMS, GeoJSON, Projektionen, Flächen-Styling

Neu zu bauen

  • Datenmodell: FK-Kette Abschnitt→Bezirk→Stelle + Bereitschafts-Zeitfenster
  • Resolver-Klasse (rund 80% nach Vorbild PermissionSetResolver)
  • Punkt-in-Fläche (Karten-Modus) erst später: benötigt NetTopologySuite

Die Attribut-Variante ist ohne neue Geometrie-Abhängigkeit baubar; der Karten-Modus (Punkt-in-Fläche) bleibt ein später zuschaltbarer Modus.

11
FK-08 bis 12 · Ausbau

Ausbau: Vorstufen und Komposition

Bausteine mit niedrigem bis mittlerem Risiko, größtenteils Erweiterung oder Zusammenstellung vorhandener Mechanismen. Folgen nach dem kritischen Kern (FK-01 bis FK-07).

FK-08 bedingte Subdialog-Reiter (Vorstufe: DynamicCode → deklarativer Aufsatz)
FK-09 Erledigung / Wiedervorlage (VDV 722 §5 Erledigungscontrolling)
FK-10 Simulator: Drehbuch durchspielen (Absicherung + Schulung)
FK-11 Lage-Cockpit: offene Ereignisse im Überblick
FK-12 chronologischer, systemübergreifender Bericht (§5; baut auf FK-02)

Kein eigener kritischer Pfad: Diese Bausteine setzen auf dem Kern auf und lassen sich schrittweise nachziehen; FK-12 benötigt den Meldungscontainer aus FK-02.