// Package rules lädt das Bewertungsregelwerk (Datenklasse-Ableitung, // KI-VO-Einstufung, Anforderungsprofil) aus versionierten YAML-Dateien. // Regelbasiert, nicht ML — die Regeln liegen als Daten vor, nicht im // Code (siehe CLAUDE.md). Dieses Paket lädt und validiert nur die // Struktur; die eigentliche Auswertung gegen Fragebogen-Antworten ist // bewusst noch nicht Teil von Phase 1 (siehe rules/OPEN.md und die // Baureihenfolge in CLAUDE.md — "Ableitungen und harte Filter" ist ein // eigener, späterer Schritt, sobald der Fragebogen aus Phase 2 die // exakten Fakten-Feldnamen festlegt). package rules // DatenklasseStufe ist eine mögliche Datenklasse mit ihren Auslösern aus // Fragebogen-Abschnitt B. Rang bestimmt, welche Stufe gewinnt, wenn // mehrere Auslöser gleichzeitig zutreffen ("höchste zutreffende Stufe // gewinnt") — höherer Rang gewinnt. type DatenklasseStufe struct { ID string `yaml:"id"` Rang int `yaml:"rang"` Ausloeser []string `yaml:"ausloeser"` Folge string `yaml:"folge"` } // DatenklasseRegelwerk ist die vollständige Ableitungstabelle für // Fragebogen-Abschnitt B. type DatenklasseRegelwerk struct { Version int `yaml:"version"` Stufen []DatenklasseStufe `yaml:"stufen"` } // EinstufungVariante ist eine mögliche Kombination von Fragebogen-Fakten // (Abschnitt C), die zu einer KI-VO-Einstufung führt — mehrere Varianten // sind ODER-verknüpft, die Felder innerhalb einer Variante UND-verknüpft. // Bewusst als freie Schlüssel-Werte-Paare statt fester Go-Felder: welche // Fakten-Schlüssel es gibt, legt der Fragebogen aus Phase 2 fest, nicht // dieses Paket. type EinstufungVariante map[string]any // EinstufungStufe ist eine mögliche KI-VO-Einstufung. type EinstufungStufe struct { ID string `yaml:"id"` Quelle string `yaml:"quelle,omitempty"` Varianten []EinstufungVariante `yaml:"varianten"` } // EinstufungRegelwerk ist die vollständige Ableitungstabelle für // Fragebogen-Abschnitt C. Die Reihenfolge der Stufen ist Prüfreihenfolge // (erste zutreffende Stufe gewinnt) — siehe Bewertungslogik, Schritt 1 // (K.-o.-Prüfung: "verboten" muss zuerst geprüft werden). type EinstufungRegelwerk struct { Version int `yaml:"version"` Stufen []EinstufungStufe `yaml:"stufen"` } // AnforderungsRegel leitet eine einzelne Anforderung aus Datenklasse // und/oder KI-VO-Einstufung ab (z. B. avv_erforderlich). type AnforderungsRegel struct { ID string `yaml:"id"` AusDatenklassen []string `yaml:"aus_datenklassen,omitempty"` AusEinstufungen []string `yaml:"aus_einstufungen,omitempty"` Beschreibung string `yaml:"beschreibung,omitempty"` } // AnforderungsRegelwerk ist die vollständige Mapping-Tabelle // Datenklasse/Einstufung -> Anforderungsprofil. type AnforderungsRegelwerk struct { Version int `yaml:"version"` Anforderungen []AnforderungsRegel `yaml:"anforderungen"` }