# Architektur-Diagramme pathOS > Stand: 2026-04-22 | Basis: GitLab-Inventar + Confluence-Analyse --- ## 1. Systemkontext (C4 Level 1) Zeigt pathOS im Kontext seiner Nutzer und externen Systeme. ```mermaid C4Context title pathOS - Systemkontext Person(evu, "EVU-Sachbearbeiter", "Bestellt Trassen ueber Web-Portal oder API") Person(kb, "DB Kundenbetreuer", "Bearbeitet Bestellungen im Auftrag von EVU") Person(fbf, "Fachliche Betriebsfuehrung", "Konfiguration und Monitoring") Person(at, "Aufgabentraeger", "Lesender Zugriff auf Bestellungen") System(pathos, "pathOS", "Plattform zur Trassenbestellung") System_Ext(tpn, "TPN", "Trassenportal Netz (Altsystem)") System_Ext(badifa, "BaDiFa", "Fahrplankonstruktion & Kapazitaetsmanagement") System_Ext(ac, "AC Trasse", "AbrechnungsCockpit: Preise, Abrechnung, Belege") System_Ext(im, "Infrastruktur-Manager (M15)", "Stammdaten: Betriebsstellen, Strecken, Tfz") System_Ext(kdv, "KDV", "Kundendatenverwaltung (CRM)") System_Ext(nur, "NuR / eBRS-AD", "Nutzer- und Rechteverwaltung") System_Ext(rne, "RNE / CRD", "Europaeische Referenzdaten") System_Ext(geo, "GeoServer", "Kartendarstellung") System_Ext(nemo, "Netzmonitor / SAPBINe", "Auftragsdaten-Konsument") System_Ext(cr, "Click&Ride", "Vereinfachte Bestellung") System_Ext(sp, "Stationsportal", "Vertragsdaten-Konsument") Rel(evu, pathos, "Bestellt Trassen", "HTTPS / TAF-TAP TSI") Rel(kb, pathos, "Bearbeitet Bestellungen", "HTTPS") Rel(fbf, pathos, "Konfiguriert", "HTTPS") Rel(at, pathos, "Liest Bestellungen", "HTTPS") Rel(pathos, tpn, "Datensynchronisation", "Kafka / API") Rel(pathos, badifa, "Fahrplanauftraege", "API") Rel(pathos, ac, "Preisanfragen, Abrechnung", "API") Rel(pathos, im, "Stammdaten", "API") Rel(pathos, kdv, "Kundendaten", "API") Rel(pathos, nur, "Authentifizierung", "OIDC / API") Rel(pathos, rne, "Referenzdaten", "Internet / API") Rel(pathos, geo, "Karten / Routen", "WMS / WFS") Rel(pathos, nemo, "Auftragsdaten", "API") Rel(pathos, cr, "Bestellungen", "API") Rel(pathos, sp, "Vertragsdaten", "API") ``` --- ## 2. Container-Diagramm (C4 Level 2) Zeigt die internen Komponenten von pathOS. ```mermaid C4Container title pathOS - Container-Diagramm Person(user, "EVU / Kundenbetreuer") Container_Boundary(pathos, "pathOS") { Container(ui, "Portal UI", "TypeScript, Angular", "Benutzeroberflaeche fuer Trassenbestellung") Container(pmw, "Portal Middleware", "Java, Spring Boot", "Backend fuer Portal UI, API-Gateway") Container(sv, "Steuerung Vertrieb", "Java, Camunda 8", "Workflow-Engine: Orchestriert den Bestellprozess") Container(avt, "Auftrags-Verwaltung Trasse", "Java, Spring Boot", "CRUD fuer Trassenbestellungen und Auftraege") Container(as, "Auftrag-Service", "Java, Spring Boot", "Auftragsverarbeitung und Kafka-Events") Container(ci, "Common Interface", "Java, Spring Boot", "TAF/TAP TSI Schnittstelle fuer EVU-Systeme") Container(ifp, "IFP-Connector", "Java, Spring Boot", "Anbindung Integrierte Fahrplanbearbeitung") Container(tadef, "TADEF-Connector", "Java, Spring Boot", "TAF/TAP Definition Connector") Container(kdb, "Kundendaten-Bereitstellung", "Java, Spring Boot", "Adapter fuer Kundendaten") Container(sdb, "Stammdaten-Bereitstellung", "Java, Spring Boot", "Adapter fuer Stammdaten") Container(rnb, "Rabattnummern-Bereitstellung", "Java, Spring Boot", "Rabattnummern-Service") Container(vdv, "Vertragsdaten-Verteiler", "Java, Spring Boot", "Verteilt Vertragsdaten an Drittsysteme") Container(arch, "Archivierungsservice", "Java, Spring Boot", "Archiviert Nachrichten und Prozessdaten") Container(tbv, "TBV-Absicherung-Konverter", "Java, Spring Boot", "Tunnelbegegnungsverbot-Pruefung") Container(ttk, "TAF/TAP-TDM-Konverter", "Java, Spring Boot", "Konvertiert zwischen TDM und TAF/TAP") Container(kc, "Keycloak", "Keycloak", "Identity & Access Management") ContainerDb(db, "PostgreSQL", "PostgreSQL", "Auftrags- und Stammdaten") ContainerQueue(kafka, "Apache Kafka", "AWS MSK", "Event-Streaming zwischen Services") } Rel(user, ui, "HTTPS") Rel(ui, pmw, "REST API") Rel(pmw, sv, "REST / Kafka") Rel(sv, avt, "REST / Kafka") Rel(sv, ci, "REST / Kafka") Rel(sv, as, "Kafka") Rel(avt, db, "JDBC") Rel(as, kafka, "Produce/Consume") Rel(ci, kafka, "Produce/Consume") Rel(arch, kafka, "Consume") Rel(kdb, kafka, "Produce") Rel(sdb, kafka, "Produce") Rel(user, kc, "OIDC Login") ``` --- ## 3. Deployment-Diagramm ```mermaid C4Deployment title pathOS - Deployment (AWS EKS) Deployment_Node(aws, "AWS Cloud") { Deployment_Node(eks, "EKS Kubernetes Cluster") { Deployment_Node(ns_app, "Namespace: pathOS-Apps") { Container(c_ui, "portal-ui", "Container") Container(c_pmw, "portal-middleware", "Container") Container(c_sv, "steuerung-vertrieb", "Container") Container(c_avt, "auftrags-verwaltung-trasse", "Container") Container(c_as, "auftrag-service", "Container") Container(c_ci, "common-interface", "Container") Container(c_ifp, "ifp-connector", "Container") Container(c_kdb, "kundendaten-bereitstellung", "Container") Container(c_sdb, "stammdaten-bereitstellung", "Container") Container(c_vdv, "vertragsdaten-verteiler", "Container") Container(c_arch, "archivierungsservice", "Container") Container(c_tbv, "tbv-absicherung-konverter", "Container") Container(c_ttk, "taftap-tdm-konverter", "Container") Container(c_rnb, "rabattnummern-bereitstellung", "Container") Container(c_tadef, "tadef-connector", "Container") } Deployment_Node(ns_infra, "Namespace: pathOS-Infra") { Container(c_kc, "Keycloak", "Container") Container(c_cam, "Camunda 8", "Container") } } Deployment_Node(rds, "AWS RDS") { ContainerDb(c_db, "PostgreSQL", "Managed DB") } Deployment_Node(msk, "AWS MSK") { ContainerQueue(c_kafka, "Apache Kafka", "Managed Kafka") } } ``` --- ## 4. Datenfluss: Trassenbestellung (vereinfacht) ```mermaid sequenceDiagram participant EVU as EVU-Kunde participant UI as Portal UI participant PMW as Portal Middleware participant SV as Steuerung Vertrieb participant AVT as Auftrags-Verwaltung participant CI as Common Interface participant BEP as BEP (KonBel-K) participant BaDiFa as BaDiFa participant AC as AC Trasse EVU->>UI: Trassenanmeldung erstellen UI->>PMW: POST /anmeldung PMW->>SV: Starte Bestellprozess SV->>AVT: Erstelle Train + PathRequest AVT-->>SV: Auftrag erstellt SV->>CI: Sende PathRequestMessage CI->>BEP: FahrlagePruefen BEP-->>CI: Pruefergebnis SV->>BaDiFa: erteileFahrplanKonstruktionsAuftrag BaDiFa-->>SV: PathDetailsMessage (Path-Objekt) SV->>AC: ermittleTrassenPreis AC-->>SV: Preisinformation SV->>AVT: Erstelle VertragsAngebot SV->>PMW: Angebot bereit PMW->>UI: Zeige Angebot UI->>EVU: Angebot zur Pruefung EVU->>UI: Angebot annehmen UI->>PMW: Annahme PMW->>SV: Vertragsschluss SV->>AVT: Erstelle ProduktVertrag SV->>AC: abrechneVertragsAenderung ``` --- ## 5. Projektstruktur-Uebersicht (vereinfacht) ```mermaid mindmap root((pathOS)) APIs (37) Trassenanmeldung Auftraege Stammdaten Kundendaten Abrechnung TAF/TAP Portal Apps (19) Portal UI Portal Middleware Steuerung Vertrieb Auftrags-Verwaltung Common Interface Connectors Infra (47) Helm Charts Keycloak 5+ CI/CD Pipelines Monitoring Deployment Database Setup Libraries (7) Core Components Logging Signatures Mocks (11) IFP Mock IM Mock KDV Mock BEP Mock QA (15) System Tests Integration Tests Performance Tests Security Scans Tools (10) Camunda Client Kafka Replay Migration Tools ``` --- ## 6. Problemzonen-Heatmap ```mermaid quadrantChart title Problemzonen: Aufwand vs. Kritikalitaet x-axis "Geringer Aufwand" --> "Hoher Aufwand" y-axis "Geringe Kritikalitaet" --> "Hohe Kritikalitaet" "Spring Boot 4 Upgrade": [0.6, 0.95] "Deployment-Vereinfachung": [0.85, 0.9] "Secret-Rotation": [0.5, 0.85] "AppMesh-Abloesung": [0.7, 0.8] "Monitoring-Konzept": [0.6, 0.8] "Disaster Recovery": [0.75, 0.85] "DB Full-Table-Scans": [0.4, 0.7] "Repo-Beschreibungen": [0.15, 0.3] "Archivierte Repos aufraeumen": [0.1, 0.15] "Keycloak-Konsolidierung": [0.5, 0.4] "API-Versionierung": [0.6, 0.5] "GitLab-Restrukturierung": [0.65, 0.35] ```