Files
Orchestrator/bahn/project-audit/analysis/architektur-diagramme.md
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

8.9 KiB

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.

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.

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

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)

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)

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

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]