package rules // Finding ist das Ergebnis einer einzelnen zutreffenden Regel. type Finding struct { RuleID string RuleVersion int Severity Severity Title string Fix string Sources []string } // Evaluate prüft alle Regeln gegen f und liefert ein Finding für jede // zutreffende Regel. Reihenfolge folgt der Reihenfolge von rules. // // Ist f.Consideration "unklar", wird KEINE Bewertung abgegeben — // needsClarification ist dann true und findings ist immer leer. Das ist // Absicht (Kernprinzip): eine unsichere Extraktion erzeugt eine // Rückfrage an den Nutzer, niemals eine stille "keine Findings"- // Bewertung, die wie "alles in Ordnung" aussähe. func Evaluate(rules []Rule, f Facts) (findings []Finding, needsClarification bool) { if f.Consideration == ConsiderationUnclear { return nil, true } for _, r := range rules { if r.Condition.Matches(f) { findings = append(findings, Finding{ RuleID: r.ID, RuleVersion: r.Version, Severity: r.Severity, Title: r.Title, Fix: r.Fix, Sources: r.Sources, }) } } return findings, false }