Konzept: Bereich „Weiterarbeit" als Förder-Gruppierungs-Werkzeug¶
Stand: 2026-05-05 — Phasen D1–D5 ausgeliefert. Erweiterung F (Sicht „Kompetenzstufen") ist abgestimmt und beginnt mit Phase F1.
Hintergrund: Lehrkraft-Feedback wünscht einen Profilvergleich über alle SuS, um Schüler:innen mit ähnlichem Leistungsprofil zu Fördergruppen zu bündeln. Der heute noch leere Bereich „Weiterarbeit" (
src/app/class-teacher/further-work/) wird zum Förder-Gruppierungs-Werkzeug umgebaut.Ergänzung: Neben der feinkörnigen Sicht auf Teilkompetenzen (Phasen D1–D5) existiert für Klassenleitungen auch der gröbere Schnitt nach Kompetenzstufen je Domäne. Dort liegen typischerweise pro Stufe gepflegte Fördermaterialien — die Bündelung ist also bereits durch die Diagnostik gegeben. Phase F ergänzt eine zweite Sicht für genau diesen Anwendungsfall.
Abgestimmte Entscheidungen¶
| Punkt | Entscheidung |
|---|---|
| Anzahl Buckets | 4 |
| Schwellen | 0–25 % / 25–50 % / 50–75 % / 75–100 % |
| Bucket-Bezeichnungen | Intensivförderung / Förderung / Sicherung / Forderung (Lehrer-Sprech, etablierte „fördern und fordern"-Diktion) |
| Verschiebbarkeit | Klick-Menü auf Schülercode (kein Drag-and-Drop — robuster, mobile-freundlich) |
| Persistenz manueller Anpassungen | Nur Sitzung (kein Backend-Call, kein localStorage). Begründung: kein Schreib-Endpunkt nötig, keine Spec-Erweiterung, keine User-Konflikte zwischen Lehrkräften, datenschutz-unbedenklich. Falls die Sitzungsbeschränkung später nervt, ist localStorage trivial nachzuziehen. |
| Linkziele | Dummies aus src/assets/foerdermaterial-links.json (vom Berichtspfleger via PR gepflegt). Echte URL-Struktur folgt später. |
| Placeholder-Cards heute (Fördermaßnahmen / Materialien / Lernziele / Notizen) | komplett ersetzen — waren nur Versuch, kein produktiver Inhalt. |
| Anzahl Teilkompetenzen gleichzeitig | Eine zur Zeit im Bucket-Tool (klarer Förder-Fokus). Profilvergleich kommt als Heatmap in Phase D5. |
| Schulleitung-Variante | Phase E, separat. Andere Use Cases (Schul-/Unterrichtsentwicklung statt Einzelförderung), separates Rückmeldeelement. |
| Sicht Kompetenzstufen (Phase F) | Zweite, gleichberechtigte Sicht als eigenes Rückmeldeelement; Page-Container schaltet zwischen beiden Sichten via Toggle (kein zweites, langes Scroll-Layout). |
| Toggle-Persistenz | URL-Query-Param ?view=teilkompetenzen|stufen — bookmark- und refresh-fest, ohne localStorage. |
| Stufen-Reihenfolge je Fach | Konfigdatei src/assets/competence-level-order.json (Variante A) — Reihenfolge schwach→stark pro Fach hartkodiert. API liefert die Reihenfolge nicht zuverlässig. Spec-Erweiterung um level: number ist als API-Vorschlag S8 in docs/api_proposals.md vorzumerken. |
| Manuelles Verschieben in Stufen-Sicht | Weglassen. Stufen sind objektive Diagnostik-Outputs; Override widerspricht der Sache. Wenn Lehrkräfte es einfordern, später analog zur Teilkompetenz-Sicht nachziehen. |
| Aggregations-Niveau Stufen-Sicht | Pro Domäne (entspricht /groups/{id}/students/competence-levels). Kein zusätzliches Fach-Niveau, da SuS-Zuordnung dort nicht existiert. |
1. Ziel¶
Eine Lehrkraft soll auf einer Seite
- eine Teilkompetenz auswählen (z.B. „1.4.3 Verschiedene Hörabsichten unterscheiden"),
- dabei die SuS automatisch in Leistungsgruppen sehen,
- Gruppen bei Bedarf manuell anpassen können,
- pro Gruppe einen Link auf gepflegtes Fördermaterial öffnen können.
So wird der Schritt von der Diagnostik (Lösungsquoten) zur konkreten Förderung verkürzt: ein Klick statt eines mentalen Mappings „Wer braucht was?".
2. User Flow¶
┌─────────────────────────────────────────────────────────────────────────────┐
│ Weiterarbeit · Klasse 8.3 · Deutsch │
└─────────────────────────────────────────────────────────────────────────────┘
Teilkompetenz auswählen:
┌──────────────────────────────────────────────────────────┐
│ 1.4.3 Verschiedene Hörabsichten unterscheiden … ▾ │
└──────────────────────────────────────────────────────────┘
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Intensivförder. │ │ Förderung (12) │ │ Sicherung (14) │ │ Forderung (0) │
│ Lösungsquote ≤25%│ │ 25–50 % │ │ 50–75 % │ │ > 75 % │
├──────────────────┤ ├──────────────────┤ ├──────────────────┤ ├──────────────────┤
│ (leer) │ │ lied.dose.74 31%│ │ mond.kiste.53 68%│ │ (leer) │
│ │ │ vogel.buch.14 32%│ │ stern.glas.77 67%│ │ │
│ │ │ turm.garten.91 34│ │ zug.maus.39 67%│ │ │
│ │ │ … │ │ … │ │ │
│ → Fördermaterial │ │ → Fördermaterial │ │ → Fördermaterial │ │ → Fördermaterial │
└──────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘
Oberhalb dieser Bucket-Karten zeigt eine Heatmap (SuS × Teilkompetenz, Spalten
sortiert nach Klassen-Schwäche) das Gesamtprofil. Klick auf einen Spaltenkopf
wählt diese Teilkompetenz für die Detail-Ansicht oben aus. Ein Filter blendet
Teilkompetenzen aus, in denen die Klasse insgesamt gut ist (≥ 60 %).
◯ SuS einzeln per Klick zwischen Buckets verschieben (clientseitig, nicht persistiert)
Kern-Interaktion:
- Initial: Teilkompetenz wählen → Buckets werden automatisch befüllt anhand der mittleren Lösungsquote pro SuS.
- Lehrkraft kann SuS umsortieren (per Klick auf den Code öffnet sich Mini-Menü „verschieben nach …" oder Drag-and-Drop). Anpassung lebt nur für die Sitzung.
- Klick auf „Fördermaterial" → öffnet Linkziel aus Konfig in neuem Tab.
3. Buckets und Schwellenwerte¶
4 Buckets entlang der mittleren Lösungsquote pro Teilkompetenz.
| Bucket | Schwelle | Visual |
|---|---|---|
| Intensivförderung | Mean ≤ 0.25 | danger-rot |
| Förderung | 0.25 < Mean ≤ 0.50 | warning-orange |
| Sicherung | 0.50 < Mean ≤ 0.75 | secondary-grau |
| Forderung | Mean > 0.75 | success-grün |
Hinweis: SuS mit fehlendem Wert (z.B. wegen NT) erscheinen nicht im Bucket-Tool — sie können auch nicht sinnvoll gefördert werden ohne Diagnostik. Eine Sektion „nicht diagnostiziert" könnte später ergänzt werden, wenn echte Daten zeigen, ob das nötig ist.
4. Datenquellen¶
Alle benötigten Daten liefern bereits existierende Endpunkte — kein neuer Backend-Call nötig:
| Daten | Endpunkt | Verwendung |
|---|---|---|
| SuS-Liste mit Lösungsquoten je Teilkompetenz | /groups/{id}/students/aggregations?aggregation=competence |
Pro SuS und Teilkompetenz descriptiveStatistics.mean |
| Liste der Teilkompetenzen | aus obigem Response (Keys aggregiert) | Dropdown-Befüllung |
Wird heute schon im student-dashboard (student-dashboard.ts:303–304) verwendet.
Bucketisierung erfolgt clientseitig — der Server muss nichts tun.
5. Fördermaterial-Link-Konfiguration¶
Der Berichtspfleger pflegt die Linkziele manuell. Format:
Datei: src/assets/foerdermaterial-links.json
{
"Deutsch": {
"1.4.3": {
"Intensivförderung": "https://material.example.de/d/1-4-3/intensiv",
"Förderung": "https://material.example.de/d/1-4-3/foerderung",
"Sicherung": "https://material.example.de/d/1-4-3/sicherung",
"Forderung": "https://material.example.de/d/1-4-3/forderung",
},
"1.4.2": { "...": "..." }
},
"Französisch": { "...": "..." }
}
Key-Schema: Fach → Teilkompetenz-Code → Bucket-Name → URL
Fallback: Existiert kein Eintrag, zeigt der Bucket-Footer den Hinweis „Noch kein Fördermaterial verlinkt" (Button deaktiviert).
Pflege: Reine JSON-Datei im Repo, kein Editor-UI nötig. Änderungen via PR.
Für jetzt: Dummy-URLs auf https://vera.edoop.de/....
6. Komponenten und Architektur¶
Neu zu bauen unter src/app/shared/rueckmeldeelemente/:
weiterarbeit-foerdergruppen/(Rückmeldeelement)- Inputs:
studentAggregations(von/groups/{id}/students/aggregations),subject(Fach),linkConfig(geladenes JSON) - Eigener Auswahl-Dropdown für Teilkompetenz
- Drei Bucket-Karten (Bootstrap-Cards)
- Verschieben: über lokales Signal
manualOverrides: Map<studentId, bucket>
Wiederverwendung:
- Bestehender Service-Call aus
student-dashboardextrahieren inshared/services/group-students.service.ts(oder direkt im neuen Component nutzen). - SuS-Code-Buttons analog zu
group-students-table.html:172–177.
Page-Component (class-teacher/further-work/): bestehende Placeholder-Cards
durch das neue Rückmeldeelement ersetzen. Reine Container-Komponente.
7. Phasenplan (Teilkompetenz-Sicht, abgeschlossen)¶
| Phase | Inhalt |
|---|---|
| D1 | Auto-Bucketisierung in 4 Karten + statische Bucket-Karten (read-only) + Linkkonfig |
| D2 | Manuelles Verschieben über Klick-Menü (Sitzungs-Override) |
| D3 | mkdocs-Eintrag für das neue Rückmeldeelement (über library-builder-Agent) |
| D5 | Heatmap SuS × Teilkompetenzen als zweite Sektion (Profilvergleichs-Übersicht) |
| E | Schulleitung-Variante (Schul-Förder-Übersicht: aggregierte Schwächen über Klassen) |
D1–D3 sind das Klassenleitung-MVP. D5 ergänzt den ursprünglich gewünschten Profilvergleich. E adressiert den Schulleitung-Use-Case (Schul-/Unterrichtsentwicklung statt Einzelförderung) — separates Rückmeldeelement, separat geplant.
8. Erweiterung F: Sicht „Kompetenzstufen"¶
8.1 Ziel¶
Die Lehrkraft soll auf derselben Seite zwischen zwei Schnitten umschalten können:
- Teilkompetenzen (D-Sicht): feingranular, eine Teilkompetenz pro Auswahl, vier
Buckets entlang
mean ∈ [0..1]. - Kompetenzstufen (F-Sicht): grobgranular, eine Domäne pro Auswahl, eine Bucket-Karte pro tatsächlich vorhandener Stufe.
Hintergrund: Pro Stufe (z.B. „Mindeststandard nicht erreicht") existieren in der Praxis bereits Fördermaterialien für die ganze Stufe. Die Stufe ist die natürliche Fördergruppe; Bucketisierung ist nicht nötig.
8.2 User Flow¶
┌─────────────────────────────────────────────────────────────────────────────┐
│ Weiterarbeit · Klasse 8.3 · Deutsch │
│ Sicht: ( Teilkompetenzen ) ( ● Kompetenzstufen ) │
└─────────────────────────────────────────────────────────────────────────────┘
Domäne auswählen:
┌──────────────────────────────────────────────────────────┐
│ Sprechen und Zuhören ▾ │
└──────────────────────────────────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ I (3) │ │ II (5) │ │ III (10) │ │ IV (8) │ │ V (1) │
│ Mindeststd. │ │ Regelstd.− │ │ Regelstd. │ │ Regelstd.+ │ │ Optimalstd. │
│ nicht erreicht│ │ │ │ │ │ │ │ │
├──────────────┤ ├──────────────┤ ├──────────────┤ ├──────────────┤ ├──────────────┤
│ tanz.wolke.18│ │ wald.regen.55│ │ stern.glas.77│ │ berg.sonne.42│ │ vogel.buch.14│
│ … │ │ … │ │ … │ │ … │ │ │
│ → Material │ │ → Material │ │ → Material │ │ → Material │ │ → Material │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
Layout: Auf Tablet/Laptop/Desktop alle Karten in einer Zeile (Flex-Grid mit
gleichmäßig verteilten Spalten); auf Handy untereinander.
Kern-Interaktion:
- Toggle oben am Page-Header schaltet zwischen Teilkompetenzen- und Stufen-Sicht.
Auswahl persistiert in URL-Query (
?view=stufen). - Domäne wählen → Bucket-Karten dynamisch (3–5 je nach Fach) befüllt, alle in einer Zeile.
- Klick „Material" → Linkziel je Stufe in neuem Tab.
- Keine zusätzliche Heatmap-Übersicht. Die Bucket-Karten geben das vollständige Stufenprofil bereits wieder; eine zweite Visualisierung würde die Seite überladen ohne neuen Erkenntnisgewinn.
- Kein manuelles Verschieben.
8.3 Datenquellen¶
| Daten | Endpunkt | Verwendung |
|---|---|---|
| Stufe je SuS und Domäne | /groups/{id}/students/competence-levels |
Bucketisierung |
| Liste der Domänen | aus obigem Response (Top-Level-Items) | Domänen-Dropdown |
| Stufen-Reihenfolge (schwach→stark) | src/assets/competence-level-order.json |
Sortierung der Bucket-Karten |
Generierte Methode groupsService.groupsIdStudentsCompetenceLevelsGet(groupId)
wird auf der Page-Komponente parallel zu den D-Sicht-Calls geladen.
8.4 Stufen-Reihenfolge¶
Da die API keine Sortier-Information mitliefert, wird die Reihenfolge je Fach
manuell gepflegt. Keine Farben in der Konfig — diese kommen zentral aus dem
Theme (src/styles/_theme.scss, Map $competence-colors) über die bestehende
Hilfsfunktion getCompetenceLevelColor(nameShort). Damit sind Stufen-Farben
zwischen allen Berichtselementen (Verteilung, Vergleich, SuS-Tabelle, Stufen-
Buckets) konsistent.
Datei: src/assets/competence-level-order.json
{
"Deutsch": [
{ "nameShort": "Ib", "name": "Mindeststandard noch nicht erreicht (Ib)" },
{ "nameShort": "Ia", "name": "Mindeststandard noch nicht erreicht (Ia)" },
{ "nameShort": "I", "name": "Mindeststandard noch nicht erreicht" },
{ "nameShort": "II", "name": "Mindeststandard" },
{ "nameShort": "III","name": "Regelstandard" },
{ "nameShort": "IV", "name": "Regelstandard plus" },
{ "nameShort": "V", "name": "Optimalstandard" }
],
"Mathematik": [ /* ... */ ]
}
Match erfolgt über nameShort aus dem API-Response. Stufen, die in der Konfig
fehlen, landen ans Ende mit einer neutralen Theme-Farbe und einem Diagnose-
Hinweis-Icon.
API-Vorschlag S8 (in docs/api_proposals.md aufzunehmen): competence-level
um optionales Feld level: integer erweitern, das die natürliche Sortierung
(1 = schwächste) trägt. Solange S8 nicht beschlossen ist, bleibt die Konfigdatei
die Quelle der Wahrheit.
8.5 Material-Konfig: Schema-Migration¶
foerdermaterial-links.json bekommt zwei Top-Level-Sektionen, um Teilkompetenz-
und Stufen-Links sauber zu trennen:
{
"teilkompetenzen": {
"Deutsch": {
"1.4.3": { "Intensivförderung": "...", "Förderung": "...", "Sicherung": "...", "Forderung": "..." }
}
},
"kompetenzstufen": {
"Deutsch": {
"Sprechen und Zuhören": { "I": "...", "II": "...", "III": "...", "IV": "...", "V": "..." }
}
}
}
FoerdermaterialService wird um getLinkByLevel(subject, domain, levelShort)
erweitert. Die bestehende getLink(subject, competence, bucket) bleibt unverändert
in Signatur, liest aber aus teilkompetenzen.*. Migration der Datei in einem
einzigen Commit (additive Änderung in JSON, dann Service-Anpassung).
8.6 Komponenten und Architektur¶
Neu unter src/app/shared/rueckmeldeelemente/:
foerdergruppen-stufen/(Rückmeldeelement)- Inputs:
studentLevels:GroupsIdStudentsCompetenceLevelsGet200ResponseInner[]subject: Fach
- Eigener Domänen-Dropdown
- Bucket-Karten dynamisch je Stufe, sortiert nach Konfig (Service-injected)
- Karten in einer Zeile ab Tablet (
min-width: 768px), darunter untereinander
Page-Container (class-teacher/further-work/):
- Lädt zusätzlich die Stufen-Daten und die Reihenfolgen-Konfig.
- Toggle zwischen
<app-foerdergruppen>und<app-foerdergruppen-stufen>, Toggle-State im URL-Query.
Wiederverwendung: Stufen-Komponente nutzt dieselben Bootstrap-Card-Patterns, denselben Material-Service-Pfad und (nach Schema-Migration) dieselbe JSON-Datei.
8.7 Phasenplan F¶
| Phase | Inhalt |
|---|---|
| F1 | Konzept-Doc-Update (dieses Dokument), API-Vorschlag S8 in docs/api_proposals.md ergänzen |
| F2 | competence-level-order.json anlegen; Material-JSON-Schema migrieren; Service erweitern |
| F3 | FoerdergruppenStufenComponent mit Domänen-Dropdown und dynamischen Bucket-Karten |
| F4 | ~~Heatmap-Sektion (SuS × Domänen)~~ — nach Lehrkraft-Feedback verworfen, da redundant zu den Bucket-Karten |
| F5 | Toggle in FurtherWork-Page + Routing-Query-Param ?view=… |
| F6 | mkdocs-Seite für das neue Rückmeldeelement (über library-builder-Agent) |
| F7 | (optional, später) Manuelles Verschieben analog D2, falls Lehrkräfte es einfordern |
F1–F6 (ohne F4) sind die F-Sicht-MVP. F7 ist explizit aufgeschoben — keine Spec-Änderung, trivial nachzuziehen.