3.1.3: Aspekt-Typen Scale3/Binary/Points in Raster und Dialog unterstützt

Neue Klasse ParticipationRatingScale (Core) ist die einzige Quelle für
Rohwerte je Aspekt-Typ. Scale3/Binary liegen bewusst direkt auf derselben
-2..+2-Achse wie Scale5 (nur mit weniger Zwischenschritten), damit die
bestehende Gewichtung/Mittelwertbildung zur Mitarbeitsnote unverändert
kompatibel bleibt. Points ist grundverschieden (echter Zählwert 0..MaxPoints,
neues Feld auf ParticipationAspect) und wird nur zur Aggregation linear auf
dieselbe Achse normiert.

Ohne diese Normierung hätte ein Punkte-Aspekt die Mitarbeitsnote verfälscht:
drei Stellen summierten bisher den Rohwert direkt (ParticipationGradeDialog-
ViewModel.Recompute, ParticipationWizardViewModels.WeightedRating und
.ComputeSuggestion) - alle drei sind jetzt auf die Normierung umgestellt.

Raster: Punkte-Aspekte zeigen ein NumericUpDown statt fester Stufen-Buttons.
Schnelleingabe-Dialog: Zifferntasten/+/- sind jetzt typabhängig, Legende
zeigt live die für den aktuellen Aspekt gültigen Tasten. Aspekt-Verwaltung
um "Max. Punkte"-Feld ergänzt (nur bei Typ "Punkte" sichtbar).

Bewusst nicht angefasst: die Trendlinien-Visualisierung im
Mitarbeits-Assistenten bleibt fest auf die drei Standardaspekte
zugeschnitten - eigener, größerer Umbau.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-17 00:12:16 +02:00
co-authored by Claude Sonnet 5
parent f8dd567ef8
commit 16ff4875d8
12 changed files with 502 additions and 97 deletions
+29 -6
View File
@@ -177,12 +177,35 @@ Siehe [ParticipationViewModels.cs](LehrerApp.Desktop/ViewModels/Groups/Participa
8.1.1, `SortOrder` wird bei jeder Verschiebung sofort und lückenlos gespeichert.
**Drag & Drop nicht umgesetzt:** Hoch/Runter deckt die vollständige Bedienung bereits ab,
analog zur Drag-Entscheidung bei 4.3.3.
- [ ] **3.1.3** Aspekt-Typen `Scale3`, `Binary`, `Points` in Raster und Dialog vollständig unterstützen
(bisher primär `Scale5`). **Weiterhin offen:** 3.1.1 macht den Typ zwar anlegbar/speicherbar
(`AspectValueTypeDisplay`, ComboBox in der Verwaltung), das Bewertungsraster und der
Schnelleingabe-Dialog rendern und interpretieren Eingaben aber weiterhin nach dem
Scale5-Schema — ein als `Binary`/`Points`/`Scale3` angelegter Aspekt wird dort noch nicht
passend dargestellt. Bewusst getrennt von 3.1.1, da das die Bewertungs-UI selbst betrifft.
- [x] **3.1.3** Aspekt-Typen `Scale3`, `Binary`, `Points` in Raster und Dialog vollständig
unterstützen (bisher primär `Scale5`) — Nutzer-Nachtrag, damit das Bewertungsfeature mit
selbst angelegten Aspekt-Typen produktiv nutzbar wird.
**Umsetzung:** Neue statische Klasse `ParticipationRatingScale` (Core) ist die einzige
Quelle für Rohwert/Label-Stufen je Typ und für die Normierung zur Aggregation. Bewusste
Design-Entscheidung: `Scale3`/`Binary` bekommen **keine eigene Wertemenge**, sondern liegen
direkt auf derselben -2..+2-Achse wie `Scale5` (Scale3: -2/0/+2, Binary: -2/+2 für
Nein/Ja) — dadurch bleibt die bestehende Gewichtung/Mittelwertbildung zur Mitarbeitsnote
(3.2) unverändert kompatibel, ohne pro Bewertung erst umrechnen zu müssen. Nur `Points` ist
grundverschieden (ein echter Zählwert 0..`MaxPoints`, neues Feld auf `ParticipationAspect`)
und wird ausschließlich zum Aggregationszeitpunkt linear auf dieselbe Achse normiert
(`ParticipationRatingScale.Normalize`, 0 → -2, MaxPoints → +2) — dafür mussten die drei
Stellen, die bisher `r.Value * gewicht` direkt aufsummierten
(`ParticipationGradeDialogViewModel.Recompute`, `ParticipationWizardViewModels.WeightedRating`
und `.ComputeSuggestion`), auf die Normierung umgestellt werden; ohne diese Korrektur hätte
ein Punkte-Aspekt die Mitarbeitsnote grob verfälscht (z.B. "4 Punkte" als Rohwert weit
außerhalb der -2..+2-Skala).
Raster (`ParticipationTabView`): Zellen für `Points`-Aspekte sind jetzt ein
`NumericUpDown` (0..MaxPoints) statt der fünf Stufen-Buttons, die anderen Typen zeigen die
jeweils passende Buttonzahl (2/3/5) aus `ParticipationRatingScale.Steps`.
Schnelleingabe-Dialog: Zifferntasten und +/ sind jetzt typabhängig (Scale3: Tasten 13,
Binary: 1/2, Points: Tasten 09 als direkte Zahleneingabe bis `MaxPoints`, sonst Cycling
mit +/); die Tastenkürzel-Legende im Dialog zeigt dafür jetzt dynamisch die für den
aktuell gewählten Aspekt gültigen Tasten statt eines festen Textes.
Aspekt-Verwaltung (3.1.1) um ein "Max. Punkte"-Feld ergänzt, nur sichtbar bei Typ "Punkte".
**Bewusst nicht angefasst:** die spezialisierte Trendlinien-Visualisierung im
Mitarbeits-Assistenten (Kapitel 3.2-Erweiterung) ist weiterhin fest auf die drei
Standardaspekte (Qualität/Quantität/Arbeitsphase) zugeschnitten — eigene Trendlinien für
beliebige, selbst angelegte Aspekte wäre ein eigener, größerer Umbau dieser Ansicht.
- [x] **3.1.4** Aspekt deaktivieren statt löschen, damit alte Einträge gültig bleiben.
**Umsetzung:** Checkbox "Aktiv" je Zeile in der neuen Verwaltung (3.1.1); die bestehenden
Abfragen (`GetByGroup`/`GetDefaults`, für Bewertungsraster und -aggregation) filterten