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.
257 lines
8.9 KiB
Markdown
257 lines
8.9 KiB
Markdown
# 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]
|
|
```
|