Risiko-Minderung dezimal + editierbar, Bedrohungs-/Schwachstellen-Kataloge
- Minderung je Maßnahmen-Verknüpfung jetzt dezimal (0,00–4,00 statt ganzer Punkte): mehrere Maßnahmen summieren sich, bis eine Dimension einen vollen Punkt sinkt; Rest-Risiko entsprechend dezimal (z. B. 2,5 × 4 = 10), gerundet auf 2 Nachkommastellen, lokalisierte Anzeige - Minderung bereits verknüpfter Maßnahmen direkt im Risiko-Bearbeiten editierbar (Eingabefelder je Verknüpfung + Speichern-Button); Komma-Eingaben werden akzeptiert - Globale Kataloge Bedrohungen/Schwachstellen (je 15 Einträge, Seed): Eingabefelder schlagen per datalist Katalogwerte vor, Freitext bleibt weiterhin möglich (SPEC §5 Threat/Vulnerability) - Schema: reduction*/residual* auf Float, Threat-/Vulnerability-Modelle Verifiziert: −1 + −0,5 Minderung → Rest 2,5 × 4 = 10 · Erhöht (DB + Anzeige), Neuberechnung auch beim Entfernen einer Verknüpfung. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+25
-7
@@ -279,10 +279,10 @@ model Risk {
|
||||
impact Int @default(1)
|
||||
score Int @default(1) // redundant für Listen/Heatmap
|
||||
|
||||
// Rest-Risiko nach Maßnahmen
|
||||
residualLikelihood Int? @map("residual_likelihood")
|
||||
residualImpact Int? @map("residual_impact")
|
||||
residualScore Int? @map("residual_score")
|
||||
// Rest-Risiko nach Maßnahmen (berechnet, dezimal wegen Teil-Minderungen)
|
||||
residualLikelihood Float? @map("residual_likelihood")
|
||||
residualImpact Float? @map("residual_impact")
|
||||
residualScore Float? @map("residual_score")
|
||||
|
||||
treatment RiskTreatment @default(MITIGATE)
|
||||
status RiskStatus @default(OPEN)
|
||||
@@ -366,9 +366,10 @@ model RiskMeasure {
|
||||
riskId String @map("risk_id")
|
||||
measureId String @map("measure_id")
|
||||
|
||||
// Minderung in Stufen (0–4) je Dimension
|
||||
reductionLikelihood Int @default(0) @map("reduction_likelihood")
|
||||
reductionImpact Int @default(0) @map("reduction_impact")
|
||||
// Minderung je Dimension (0,00–4,00) — mehrere Maßnahmen summieren sich,
|
||||
// bis ein voller Punkt (oder mehr) erreicht ist
|
||||
reductionLikelihood Float @default(0) @map("reduction_likelihood")
|
||||
reductionImpact Float @default(0) @map("reduction_impact")
|
||||
|
||||
risk Risk @relation(fields: [riskId], references: [id], onDelete: Cascade)
|
||||
measure Measure @relation(fields: [measureId], references: [id], onDelete: Cascade)
|
||||
@@ -378,6 +379,23 @@ model RiskMeasure {
|
||||
@@map("risk_measures")
|
||||
}
|
||||
|
||||
// Globale Kataloge (SPEC §5: Threat/Vulnerability, mandantenübergreifend).
|
||||
// Risiken speichern weiterhin Freitext — der Katalog liefert Vorschläge (datalist),
|
||||
// eigene Formulierungen bleiben möglich.
|
||||
model Threat {
|
||||
id String @id @default(cuid())
|
||||
name String @unique
|
||||
|
||||
@@map("threats")
|
||||
}
|
||||
|
||||
model Vulnerability {
|
||||
id String @id @default(cuid())
|
||||
name String @unique
|
||||
|
||||
@@map("vulnerabilities")
|
||||
}
|
||||
|
||||
model AuditLog {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @map("tenant_id")
|
||||
|
||||
Reference in New Issue
Block a user