Zum Inhalt

Fördergruppen

Werkzeug für die Bildung von Förder- und Forder-Gruppen je Teilkompetenz: eine Heatmap zeigt das Profil der gesamten Lerngruppe auf einen Blick, vier Bucket-Karten gruppieren die Schüler:innen für eine ausgewählte Teilkompetenz und verlinken zu passendem Fördermaterial.

Genutzt von: Klassenleitung (Bereich „Weiterarbeit")

Verwandt: Fördergruppen nach Kompetenzstufen -- gröbere Sicht auf Kompetenzstufen je Domäne; im Page-Header über den Toggle „Teilkompetenzen ↔ Kompetenzstufen" erreichbar.

Hintergrund-Konzept: docs/weiterarbeit_konzept.md -- abgestimmte Entscheidungen zu Buckets, Schwellen und Persistenz.


Screenshots

Heatmap-Übersicht (Profile aller Schüler:innen, Spalten sortiert nach Klassen-Schwäche):

Fördergruppen Heatmap

Detail-Ansicht mit den vier Förder-Buckets pro ausgewählter Teilkompetenz:

Fördergruppen Bucket-Karten


API-Aufrufe

Dieses Element benötigt zwei API-Aufrufe:

1. Lösungsquoten je Schüler:in und Teilkompetenz

GET /groups/{id}/aggregations?aggregation=competence&type=students

Hauptdaten: pro Teilkompetenz das Array students[] mit descriptiveStatistics.mean (Lösungsquote 0--1).

2. Klassenmittelwerte mit Beschreibung und Domäne

GET /groups/{id}/aggregations?aggregation=competence

Anreicherung: liefert pro Teilkompetenz die description (Klartext-Bezeichnung) und domain (Domänenname). Daraus baut die Seite die Dropdown-Beschriftungen und kann die Domäne unter dem Dropdown anzeigen.

Warum zwei Aufrufe?

Der erste Aufruf liefert nur Code (value: "1.4.3") und Lösungsquoten pro Schüler:in. Der zweite Aufruf gibt die menschenlesbare Beschreibung. Das deckt sich mit dem Muster im Schüler-Dashboard.

Beispiel-Response (per-Schüler)

[
  {
    "type": "competence",
    "value": "1.4.3",
    "students": [
      {
        "id": "berg.sonne.42",
        "name": "berg.sonne.42",
        "descriptiveStatistics": { "mean": 0.43 }
      },
      {
        "id": "blatt.stuhl.66",
        "name": "blatt.stuhl.66",
        "descriptiveStatistics": { "mean": 0.49 }
      }
    ]
  }
]

Relevante Felder:

  • value -- Teilkompetenz-Code (z.B. „1.4.3")
  • students[].id / students[].name -- Schülercode
  • students[].descriptiveStatistics.mean -- Lösungsquote (0--1)

Bestandteile der Komponente

Das Rückmeldeelement ist in zwei Abschnitte gegliedert:

1. Heatmap-Übersicht

Element Bedeutung
Spalten Teilkompetenzen, sortiert nach Klassen-Mittel aufsteigend (schwächste links)
Zeilen Schüler:innen, sortiert nach mittlerer Lösungsquote aufsteigend (schwächste oben)
Zellfarbe Bucket-Zugehörigkeit (rot/orange/grau/grün)
Diagonal-Streifen in einer Zelle Schüler:in wurde manuell verschoben
Filter „< 60 %" Blendet alle Teilkompetenzen aus, in denen die Klasse insgesamt gut ist
Klick auf Spaltenkopf Wählt diese Teilkompetenz für die Detail-Ansicht unten

So sieht eine Lehrkraft auf einen Blick, wo die Klasse Schwächen hat (vertikale Bänder) und wer ähnliche Profile hat (benachbarte Zeilen).

2. Detail-Ansicht: Förder-Buckets

Vier Karten, sortiert nach Lösungsquote der gewählten Teilkompetenz:

Bucket Schwelle Farbe
Intensivförderung Mean ≤ 25 % rot
Förderung 25--50 % orange
Sicherung 50--75 % grau
Forderung > 75 % grün

Jede Karte zeigt:

  • die zugeordneten Schülercodes (Klick öffnet ein Verschiebe-Menü),
  • pro Code die individuelle Lösungsquote,
  • einen Button „Fördermaterial öffnen" (Linkziel aus der Konfig).

Manuelle Verschiebungen sind isoliert pro Teilkompetenz und gelten nur für die aktuelle Sitzung -- bewusst keine Backend-Persistenz.


Fördermaterial-Linkkonfiguration

Die Linkziele für die „Fördermaterial öffnen"-Buttons werden in einer JSON-Datei im Repo gepflegt:

src/assets/foerdermaterial-links.json

Schema: Fach → Teilkompetenz-Code → Bucket-Name → URL

{
  "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"
    }
  }
}

Pflege: Berichtspfleger:innen ergänzen oder ändern Linkziele per Pull Request. Fehlt ein Eintrag, zeigt die Bucket-Karte den Hinweis „Noch kein Fördermaterial verlinkt" und der Button bleibt aus.

Aktuell sind alle URLs Dummies auf https://vera.edoop.de/... -- bei Klick öffnet sich die Materialsammlung in einem neuen Tab. Vor dem produktiven Einsatz die echten URL-Strukturen einsetzen.


Übernahme

Für dieses Element benötigen Sie:

  • Hauptkomponente: FoerdergruppenComponent (Selektor: app-foerdergruppen)
  • Service: FoerdermaterialService (lädt die Linkkonfig aus /assets/foerdermaterial-links.json)
  • Inputs:
    • studentAggregations -- Response von /groups/{id}/aggregations?aggregation=competence&type=students
    • competenceMeta -- Optional: Map mit description und domain pro Teilkompetenz-Code
    • subject -- Fach-Name (z.B. „Deutsch") -- muss zu den Schlüsseln in der Linkkonfig passen
<app-foerdergruppen
  [studentAggregations]="perStudentAggregations"
  [competenceMeta]="competenceDescriptions"
  subject="Deutsch"
/>

Die Komponente ist self-contained: Heatmap und Bucket-Karten teilen sich den State; Spaltenklicks und Dropdown-Auswahl bleiben synchron.


Hinweise zur Sitzungs-Persistenz

Manuelle Bucket-Verschiebungen leben nur für die aktuelle Sitzung:

  • Beim Wechsel der Teilkompetenz bleiben die Overrides für die anderen erhalten (Sitzungs-Cache).
  • Beim Verlassen der Seite oder Reload werden alle Overrides verworfen.
  • Eine Backend-Persistenz wurde bewusst weggelassen, weil sie Spec-Erweiterung, User-Konfliktlogik und Datenschutz-Fragen mit sich brächte. Bei konkretem Sharing-Bedarf wäre als nächster Schritt ein localStorage-Persist denkbar -- siehe Konzept-Dokument.