Iteration 4 (Maßnahmen) + Risikoanalyse nachgeschärft

Risikoanalyse:
- Risiko direkt aus dem Asset-Popup erstellbar ("+ Risiko erstellen"
  → Anlege-Popup mit vorverknüpftem Asset)
- Brutto-/Rest-Risiko detailliert: Eintrittswahrscheinlichkeit und
  Schaden als beschriftete Werte (X × Y = Score-Pille)
- Rest-Risiko wird NICHT mehr manuell erfasst, sondern automatisch aus
  den verknüpften Maßnahmen berechnet (Minderung je Dimension, Summe,
  Untergrenze 1; src/server/risk-calc.ts); Neuberechnung bei jeder
  Änderung an Bewertung oder Maßnahmen-Verknüpfungen
- Risikoregister unterhalb der Heatmap in voller Breite

Maßnahmen-Modul (SPEC §4.4):
- Measure/RiskMeasure-Schema mit RLS, laufende Nummer (M-001),
  Status/Priorität/Owner/Fälligkeit
- Kanban-Board mit Drag-and-Drop (dnd-kit): Karten zwischen Offen /
  In Umsetzung / Erledigt verschieben aktualisiert den Status per
  Server-Action inkl. Audit-Log; überfällige Karten rot markiert
- Maßnahmen-Popups (Detail read-only / Bearbeiten / Anlegen) nach
  App-Muster; Detail zeigt verknüpfte Risiken mit Minderung
- Im Risiko-Bearbeiten: bestehende Maßnahme verknüpfen ODER neue
  Maßnahme direkt anlegen & verknüpfen (jeweils mit Minderung
  Wahrscheinlichkeit/Schaden); "Notwendige Maßnahmen" im Risiko-Detail
  jetzt echt
- Seed: 4 Beispiel-Maßnahmen, Rest-Risiken daraus berechnet

Verifiziert im Browser: DnD-Statuswechsel (beide Richtungen, Audit-
Einträge), Rest-Risiko-Berechnung (R-001: 4×5=20 → 2×4=8), Risiko-
Anlage aus dem Asset inkl. automatischer Verknüpfung.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Martin
2026-07-02 16:07:59 +02:00
co-authored by Claude Fable 5
parent df634e356d
commit 668e587881
20 changed files with 1534 additions and 102 deletions
+47 -1
View File
@@ -243,7 +243,19 @@
"legendHigh": "Hoch",
"legendCritical": "Kritisch",
"axisX": "Eintrittswahrscheinlichkeit →",
"axisY": "Auswirkung ↑"
"axisY": "Auswirkung ↑",
"likelihoodShort": "Eintrittswahrscheinlichkeit",
"damageShort": "Schaden",
"scoreShort": "Risikowert",
"residualAuto": "Ergibt sich automatisch aus den verknüpften Maßnahmen.",
"noMeasures": "Noch keine Maßnahmen verknüpft — das Rest-Risiko entspricht dem Brutto-Risiko.",
"linkMeasure": "Maßnahme verknüpfen",
"newMeasure": "Neue Maßnahme anlegen & verknüpfen",
"measureTitle": "Titel der Maßnahme",
"reductionL": "Minderung Wahrscheinlichkeit (04)",
"reductionI": "Minderung Schaden (04)",
"reduction": "Minderung",
"createFromAsset": "Risiko erstellen"
},
"riskTreatment": {
"AVOID": "Vermeiden",
@@ -263,5 +275,39 @@
"elevated": "Erhöht",
"high": "Hoch",
"critical": "Kritisch"
},
"measures": {
"title": "Aufgaben & Maßnahmen",
"sub": "Kanban-Board · Maßnahmen aus Risiken, Audits und Vorfällen",
"crumb": "Betrieb",
"newMeasure": "Maßnahme",
"board": "Maßnahmen-Board",
"empty": "Keine Maßnahmen.",
"detailHeading": "Maßnahme · {ref}",
"detailSub": "Status, Verantwortung & verknüpfte Risiken",
"editTitle": "Maßnahme bearbeiten",
"createTitle": "Maßnahme anlegen",
"titleField": "Titel",
"description": "Beschreibung",
"status": "Status",
"priority": "Priorität",
"owner": "Verantwortlich",
"dueDate": "Fällig am",
"linkedRisks": "Verknüpfte Risiken",
"linkedRisksNote": "Diese Maßnahme mindert folgende Risiken",
"noRisks": "Keine Risiken verknüpft.",
"close": "Schließen",
"overdue": "überfällig",
"dragHint": "Karten per Drag-and-Drop zwischen den Spalten verschieben."
},
"measureStatus": {
"OPEN": "Offen",
"IN_PROGRESS": "In Umsetzung",
"DONE": "Erledigt"
},
"measurePriority": {
"LOW": "Niedrig",
"MEDIUM": "Mittel",
"HIGH": "Hoch"
}
}