Regel-Engine und Regelpakete
Wie Landesrecht als versionierte Daten in score kommt und wie score-rules daraus Noten berechnet.
Regelpakete
Ein Regelpaket ist eine TOML-Datei. Es enthält Notenskalen, Prozentschlüssel, Leistungsarten mit Gewichten, die Berechnung der Zeugnisnote und die Versetzungsregeln einer Schulart. Die Kennung eines Pakets entspricht dem Bildungsgang einer Klasse; so bekommt jeder Kurs sein Paket.
Fokus
Quelle: score, regeln/
Diagrammdaten anzeigen
| Knoten | Ebene | Übergeordnet | Verknüpfung | Untergeordnet |
|---|---|---|---|---|
| de-kmk | 1 | mv.land | ||
| mv.land | 2 | de-kmk | erbt | mv.sek1, mv.gymnasium.oberstufe, mv.berufsschule.dual |
| mv.sek1 | 3 | mv.land | erbt | mv.regionale-schule, mv.gymnasium |
| mv.regionale-schule | 4 | mv.sek1 | erbt | |
| mv.gymnasium | 4 | mv.sek1 | erbt | mv.gymnasium.einfuehrungsphase |
| mv.gymnasium.einfuehrungsphase | 5 | mv.gymnasium | erbt | |
| mv.gymnasium.oberstufe | 3 | mv.land | erbt | mv.gymnasium.oberstufe.2024 |
| mv.gymnasium.oberstufe.2024 | 4 | mv.gymnasium.oberstufe | erbt | |
| mv.berufsschule.dual | 3 | mv.land | erbt | mv.berufsschule.bvj, mv.berufsschule.bvja, mv.berufsschule.bvb, mv.berufsschule.avdual |
| mv.berufsschule.bvj | 4 | mv.berufsschule.dual | erbt | mv.berufsschule.bvj2 |
| mv.berufsschule.bvj2 | 5 | mv.berufsschule.bvj | erbt | |
| mv.berufsschule.bvja | 4 | mv.berufsschule.dual | erbt | |
| mv.berufsschule.bvb | 4 | mv.berufsschule.dual | erbt | |
| mv.berufsschule.avdual | 4 | mv.berufsschule.dual | erbt |
- Vererbung: Benannte Einträge werden je Schlüssel überschrieben, Abschnitte wie Zeugnisnote oder Versetzung als Ganzes. Doppelte Kennungen, fehlende Basis und Zyklen sind Fehler.
- Fundstelle: Jede Regel trägt ihre Rechtsgrundlage und ein Feld
geprueft. Die Kommandozeile listet alle ungeprüften Regeln. - Fallbeispiele: Jedes Paket enthält Anfragen mit erwartetem Ergebnis. Sie laufen in den Tests, beim Bauen des Bündels und beim Bauen der Container-Images; ein scheiterndes Beispiel bricht den Build ab.
[[faelle]]
name = "mangelhaft in Biologie, ausgeglichen durch Geschichte"
Mechanismen statt Landeslogik
score-rules kennt kein Bundesland, sondern Bausteine, aus denen Pakete Regeln zusammensetzen:
- Notenskalen (1–6, 0–15) und Prozentschlüssel
- Rundung, einschließlich Ermessen bei genau x,5
- Zeugnisnote als gewichtetes Mittel über Kategorien, mit Gewichten je Fachgruppe, nach Anzahl gestaffelt oder je Leistung, Hochrechnung bei fehlender Kategorie und Warnung bei zu wenigen Leistungen
- Gefährdung und Versetzung mit Regeln je Jahrgang, Mindestnoten je Anspruchsebene, einer Ausgleichstabelle und Fachgruppen, die nur untereinander oder gar nicht ausgleichen
- Abschluss mit Prüfung (etwa Mittlere Reife): Endnoten aus Jahres- und Prüfungsnoten, Bestehen mit Ausgleich, Gesamtprädikat und Berechtigungen
- Aufbewahrung: Frist je Datenart, Zuordnung der Daten von score zu Datenarten, Fristbeginn mit Ablauf des Kalenderjahres, Fälligkeit zum Stichtag
- eine kleine Ausdruckssprache für Formeln: Grundrechenarten, Vergleiche,
min,max,summe,runden,abschneiden,wenn– ohne Schleifen und Zuweisungen
Vergleiche laufen über den Rang einer Notenstufe, sodass dieselbe Regel für 1–6 und 0–15 gilt.
Reine Funktion
Die Engine hat kein I/O, keine Uhr und keinen Zufall und rechnet mit Dezimalzahlen statt Gleitkomma. Jedes Ergebnis kommt mit einem Trace: welche Regel mit welchen Eingaben zu welchem Zwischenergebnis führte, bis zur Fundstelle. Dieser Trace wird mit jeder Halbjahresnote gespeichert.
Drei Ziele aus einem Crate
| Ziel | Nutzung |
|---|---|
| WebAssembly in score-api | über wazero im Prozess, ohne cgo |
| WebAssembly im Browser | Live-Vorschau im Notenrechner und im Raster |
native Kommandozeile score-rules |
check, test, build, schema für Pflege und Tests |
Die Schnittstelle beschreibt Regel-Engine-API.