Iteration Teil B: Modul „Abhängigkeiten & kritische Pfade"

Referenz: docs/ISMS-Abhaengigkeitskarte-GEFIM.html

- Graph-Ableitung serverseitig (dependency-graph.ts) aus Process,
  ProcessAsset(role), Asset, AssetRelation — keine redundante Haltung.
  Kritikalität je Knoten (BIA / max C·I·A), kritische Kanten (beide
  Endknoten ≥ Schwellwert), kritischer Pfad (DFS), SPOF-Erkennung
  (transitiv abhängige kritische Prozesse ≥ N)
- React-Flow-Canvas (Topology-Look, dunkle Leinwand + Punktraster):
  Custom-Nodes mit Typ-Icon, Kritikalität, Status-Punkt, SPOF-Badge;
  smoothstep-Kanten mit Labels; kritische Kanten rot + Glow
- dagre-Auto-Layout (links Prozesse → rechts Assets); Toolbar mit Suche
  (Fokus/Zentrieren), Toggle „Kritische Pfade", Fit, PNG-Export;
  Knoten-Klick hebt zusammenhängenden Pfad hervor, Rest abgedunkelt
- Analyse-Panel: kritische Prozesse/Kanten, SPOF-Liste, kritischster
  Pfad, Legende
- Eigener Menüpunkt „Abhängigkeiten"; Absprung aus Asset-/Prozess-Detail
- Theme-Tokens für React Flow (Controls, kritische-Kanten-Glow)

Verifiziert: 10 Knoten/9 Kanten korrekt aus Demo-Daten, SPOF (Cloud-
Hoster, Kundendatenbank), kritischster Pfad, Toggle & Such-Fokus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Martin
2026-07-03 09:53:49 +02:00
co-authored by Claude Opus 4.8
parent 9e54c7788f
commit d9685b65b9
11 changed files with 1002 additions and 3 deletions
+24
View File
@@ -317,5 +317,29 @@
"LOW": "Niedrig",
"MEDIUM": "Mittel",
"HIGH": "Hoch"
},
"dependencies": {
"title": "Abhängigkeiten & kritische Pfade",
"sub": "Verkettung von Prozessen und Assets · kritische Pfade & Single Points of Failure",
"crumb": "Fachdaten",
"search": "Suchen …",
"criticalToggle": "Kritische Pfade",
"fit": "Zentrieren",
"graphView": "Netzwerkgraph",
"analysis": "Analyse",
"spofTitle": "Single Points of Failure",
"spofNone": "Keine SPOF erkannt.",
"spofHint": "{count} kritische Prozesse hängen davon ab",
"critPathTitle": "Kritischster Pfad",
"critPathNone": "Kein kritischer Pfad.",
"critProcesses": "Kritische Prozesse",
"critEdges": "Kritische Kanten",
"legend": "Legende",
"legCritical": "Kritischer Pfad",
"legStandard": "Standard-Abhängigkeit",
"legSpof": "Single Point of Failure",
"legCrit": "Kritisch (K≥3)",
"empty": "Noch keine Prozesse/Assets für einen Graphen vorhanden.",
"openGraph": "Im Abhängigkeitsgraph anzeigen"
}
}
+24
View File
@@ -317,5 +317,29 @@
"LOW": "Low",
"MEDIUM": "Medium",
"HIGH": "High"
},
"dependencies": {
"title": "Dependencies & critical paths",
"sub": "Process/asset chains · critical paths & single points of failure",
"crumb": "Core data",
"search": "Search …",
"criticalToggle": "Critical paths",
"fit": "Fit view",
"graphView": "Network graph",
"analysis": "Analysis",
"spofTitle": "Single points of failure",
"spofNone": "No SPOF detected.",
"spofHint": "{count} critical processes depend on it",
"critPathTitle": "Most critical path",
"critPathNone": "No critical path.",
"critProcesses": "Critical processes",
"critEdges": "Critical edges",
"legend": "Legend",
"legCritical": "Critical path",
"legStandard": "Standard dependency",
"legSpof": "Single point of failure",
"legCrit": "Critical (K≥3)",
"empty": "No processes/assets available for a graph yet.",
"openGraph": "Show in dependency graph"
}
}