Iteration 3: Risikoanalyse + Menü-Trennung + Prozesskategorie

- Risiko-Modul (SPEC §4.2): Risk/RiskAsset-Schema mit RLS, laufende
  Nummer je Mandant (R-001), Brutto-/Rest-Bewertung (5×5), Behandlung,
  Status, Owner- und Prozess-Bezug, n:m betroffene Assets
- /risks im Mockup-Layout: 5×5-Heatmap (Farb-Bänder + R-Chips, Legende,
  Achsen) und Risikoregister mit Score-Pillen, Behandlungs-Tags, Status
- Risiko-Popups nach App-Muster: Read-only-Detail (Bewertungs-Band
  Brutto vs. Rest, betroffene Assets, Maßnahmen-Platzhalter für
  Iteration 4), Bearbeiten im Popup (Bewertung, Assets verknüpfen,
  Löschen), Anlegen; Server-Actions mit Zod, RBAC und Audit-Log
- Menü aufgetrennt: eigene Punkte "Asset-Inventar", "Business Impact
  Analyse" und "Risikoanalyse" (Modul-Tabs entfernt)
- Prozesskategorie (Kernprozess/Managementprozess/Unterstützender
  Prozess): Schema-Feld, Formulare, Listen-Spalte, Popup-Tag
- Asset-Detail-Popup optisch ans Prozess-Popup angeglichen (Stammdaten-
  Karte mit violettem Rand, Abhängigkeiten-Tabelle, Risiken-Band)
- "Zugeordnete Risiken" jetzt echt: im Asset-Popup (verknüpfte Risiken)
  und im Prozess-Popup (direkt + über Assets aggregiert); Dashboard-KPI
  "Offene Risiken" mit echten Zahlen; Seed mit 4 Beispiel-Risiken

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Martin
2026-07-02 15:43:25 +02:00
co-authored by Claude Fable 5
parent c5a1f0095b
commit df634e356d
20 changed files with 1633 additions and 106 deletions
+83 -3
View File
@@ -28,7 +28,9 @@
"dependencies": "Abhängigkeiten",
"evidence": "Nachweise",
"suppliers": "Lieferanten",
"review": "Management-Review"
"review": "Management-Review",
"assets": "Asset-Inventar",
"bia": "Business Impact Analyse"
},
"login": {
"title": "Anmelden",
@@ -104,7 +106,13 @@
"all": "Alle",
"filter": "Filtern …",
"noOwner": "kein Owner",
"dependencies": "Abhängigkeiten"
"dependencies": "Abhängigkeiten",
"detailSub": "Stammdaten, Abhängigkeiten & Risiken",
"masterPill": "■ Stammdaten",
"masterNote": "Klassifizierung & Verantwortung",
"depPill": "◆ Abhängigkeiten",
"depNote": "Verknüpfte Assets",
"riskCount": "{count} Risiken"
},
"assetType": {
"INFORMATION": "Information",
@@ -166,7 +174,8 @@
"showDependencies": "Abhängigkeiten anzeigen →",
"impactShort": "Schadenshöhe (C/I/A)",
"close": "Schließen",
"noAssets": "Noch keine Assets zugeordnet."
"noAssets": "Noch keine Assets zugeordnet.",
"category": "Prozesskategorie"
},
"processRole": {
"PRIMARY": "Primär",
@@ -183,5 +192,76 @@
"2": "Erhöht",
"3": "Hoch",
"4": "Sehr hoch"
},
"processCategory": {
"CORE": "Kernprozess",
"MANAGEMENT": "Managementprozess",
"SUPPORT": "Unterstützender Prozess"
},
"risks": {
"title": "Risikoanalyse",
"sub": "5×5-Matrix · Eintrittswahrscheinlichkeit × Auswirkung",
"export": "Risikoregister exportieren",
"newRisk": "Risiko",
"heatmap": "Risiko-Heatmap",
"heatmapSub": "Auswirkung (Y) × Eintrittswahrscheinlichkeit (X)",
"register": "Risikoregister",
"registerSub": "Risiken nach Bewertung",
"id": "ID",
"risk": "Risiko",
"rating": "Bewertung",
"treatment": "Behandlung",
"status": "Status",
"owner": "Owner",
"empty": "Noch keine Risiken erfasst.",
"detailHeading": "Risiko-Detail · {ref}",
"detailSub": "Bewertung, betroffene Assets & Behandlung",
"editTitle": "Risiko bearbeiten",
"createTitle": "Risiko anlegen",
"titleField": "Titel",
"description": "Beschreibung",
"threat": "Bedrohung",
"vulnerability": "Schwachstelle",
"likelihood": "Eintrittswahrscheinlichkeit (15)",
"impact": "Auswirkung (15)",
"gross": "Brutto-Risiko",
"residual": "Rest-Risiko",
"residualHint": "Nach Umsetzung der Maßnahmen",
"noResidual": "Noch nicht bewertet",
"process": "Geschäftsprozess",
"affectedAssets": "Betroffene Assets",
"affectedNote": "Assets, auf die dieses Risiko wirkt",
"addAsset": "Asset verknüpfen",
"noAssets": "Keine Assets verknüpft.",
"measures": "Notwendige Maßnahmen",
"measuresPlaceholder": "Maßnahmen werden mit dem Maßnahmen-Modul (Iteration 4) verknüpft und erscheinen dann hier.",
"close": "Schließen",
"scoreLabel": "{score} · {level}",
"legendLow": "Gering",
"legendMedium": "Mittel",
"legendElevated": "Erhöht",
"legendHigh": "Hoch",
"legendCritical": "Kritisch",
"axisX": "Eintrittswahrscheinlichkeit →",
"axisY": "Auswirkung ↑"
},
"riskTreatment": {
"AVOID": "Vermeiden",
"MITIGATE": "Vermindern",
"TRANSFER": "Übertragen",
"ACCEPT": "Akzeptieren"
},
"riskStatus": {
"OPEN": "Offen",
"IN_TREATMENT": "In Behandlung",
"ACCEPTED": "Akzeptiert",
"CLOSED": "Geschlossen"
},
"riskLevel": {
"low": "Gering",
"medium": "Mittel",
"elevated": "Erhöht",
"high": "Hoch",
"critical": "Kritisch"
}
}
+83 -3
View File
@@ -28,7 +28,9 @@
"dependencies": "Dependencies",
"evidence": "Evidence",
"suppliers": "Suppliers",
"review": "Management review"
"review": "Management review",
"assets": "Asset inventory",
"bia": "Business impact analysis"
},
"login": {
"title": "Sign in",
@@ -104,7 +106,13 @@
"all": "All",
"filter": "Filter …",
"noOwner": "no owner",
"dependencies": "Dependencies"
"dependencies": "Dependencies",
"detailSub": "Master data, dependencies & risks",
"masterPill": "■ Master data",
"masterNote": "Classification & responsibility",
"depPill": "◆ Dependencies",
"depNote": "Linked assets",
"riskCount": "{count} risks"
},
"assetType": {
"INFORMATION": "Information",
@@ -166,7 +174,8 @@
"showDependencies": "Show dependencies →",
"impactShort": "Damage level (C/I/A)",
"close": "Close",
"noAssets": "No assets assigned yet."
"noAssets": "No assets assigned yet.",
"category": "Process category"
},
"processRole": {
"PRIMARY": "Primary",
@@ -183,5 +192,76 @@
"2": "Elevated",
"3": "High",
"4": "Very high"
},
"processCategory": {
"CORE": "Core process",
"MANAGEMENT": "Management process",
"SUPPORT": "Supporting process"
},
"risks": {
"title": "Risk analysis",
"sub": "5×5 matrix · likelihood × impact",
"export": "Export risk register",
"newRisk": "Risk",
"heatmap": "Risk heatmap",
"heatmapSub": "Impact (Y) × likelihood (X)",
"register": "Risk register",
"registerSub": "Risks by rating",
"id": "ID",
"risk": "Risk",
"rating": "Rating",
"treatment": "Treatment",
"status": "Status",
"owner": "Owner",
"empty": "No risks recorded yet.",
"detailHeading": "Risk detail · {ref}",
"detailSub": "Rating, affected assets & treatment",
"editTitle": "Edit risk",
"createTitle": "Create risk",
"titleField": "Title",
"description": "Description",
"threat": "Threat",
"vulnerability": "Vulnerability",
"likelihood": "Likelihood (15)",
"impact": "Impact (15)",
"gross": "Gross risk",
"residual": "Residual risk",
"residualHint": "After implementing measures",
"noResidual": "Not yet rated",
"process": "Business process",
"affectedAssets": "Affected assets",
"affectedNote": "Assets this risk applies to",
"addAsset": "Link asset",
"noAssets": "No assets linked.",
"measures": "Required measures",
"measuresPlaceholder": "Measures will be linked with the measures module (iteration 4) and appear here.",
"close": "Close",
"scoreLabel": "{score} · {level}",
"legendLow": "Low",
"legendMedium": "Medium",
"legendElevated": "Elevated",
"legendHigh": "High",
"legendCritical": "Critical",
"axisX": "Likelihood →",
"axisY": "Impact ↑"
},
"riskTreatment": {
"AVOID": "Avoid",
"MITIGATE": "Mitigate",
"TRANSFER": "Transfer",
"ACCEPT": "Accept"
},
"riskStatus": {
"OPEN": "Open",
"IN_TREATMENT": "In treatment",
"ACCEPTED": "Accepted",
"CLOSED": "Closed"
},
"riskLevel": {
"low": "Low",
"medium": "Medium",
"elevated": "Elevated",
"high": "High",
"critical": "Critical"
}
}