Zum Inhalt

Fördergruppen nach Kompetenzstufen

Werkzeug für die Bildung von Förder- und Forder-Gruppen je Kompetenzstufe: nach Auswahl einer Domäne (z.B. „Sprechen und Zuhören") gruppieren dynamisch viele Bucket-Karten die Schüler:innen entlang ihrer erreichten Stufe (z.B. I, II, III, IV, V) und verlinken zu passendem Fördermaterial.

Genutzt von: Klassenleitung (Bereich „Weiterarbeit")

Verwandt: Fördergruppen nach Teilkompetenzen -- feinkörnigere Sicht auf Lösungsquoten je Teilkompetenz; im Page-Header über den Toggle „Teilkompetenzen ↔ Kompetenzstufen" erreichbar.

Hintergrund-Konzept: docs/weiterarbeit_konzept.md -- abgestimmte Entscheidungen zu Buckets, Stufen-Reihenfolge und Persistenz (Phase F).


Screenshot

Bucket-Karten je vorhandener Kompetenzstufe in der gewählten Domäne, alle in einer Zeile ab Tablet-Breite:

Stufen Bucket-Karten


API-Aufruf

Dieses Element benötigt einen API-Aufruf:

GET /groups/{id}/students/competence-levels

In der Page wird die Methode des generierten Service so genutzt:

groupsService.groupsIdCompetenceLevelsGet(groupId, undefined, 'students');

Pro Domäne liefert die Antwort ein Array students[] mit der erreichten Kompetenzstufe je Schüler:in. Daraus baut das Element die Bucket-Karten für die ausgewählte Domäne.

Beispiel-Response

[
  {
    "id": "43",
    "name": "Sprechen und Zuhören",
    "students": [
      {
        "id": "milch.sand.47",
        "name": "milch.sand.47",
        "competenceLevel": {
          "id": "241",
          "name": "Mindeststandard noch nicht erreicht (Ib)",
          "nameShort": "Ib"
        }
      },
      {
        "id": "hand.brief.96",
        "name": "hand.brief.96",
        "competenceLevel": {
          "id": "245",
          "name": "Optimalstandard",
          "nameShort": "V"
        }
      }
    ]
  },
  {
    "id": "12973",
    "name": "Sprache und Sprachgebrauch untersuchen",
    "students": [ ... ]
  }
]

Relevante Felder:

  • name (oberste Ebene) -- Domäne (z.B. „Sprechen und Zuhören")
  • students[].id / students[].name -- Schülercode
  • students[].competenceLevel.nameShort -- Stufenkürzel (z.B. „Ib", „II", „V")
  • students[].competenceLevel.name -- Klartext-Bezeichnung der Stufe

Aggregations-Niveau ist die Domäne, nicht das Fach. Das entspricht der API-Form: SuS-Zuordnungen liegen nur auf Domänen-Ebene vor.


Bestandteile der Komponente

Über einem Domänen-Dropdown werden für die gewählte Domäne dynamisch viele Bucket-Karten erzeugt -- eine Karte pro Stufe, die in dieser Domäne tatsächlich vorkommt (typischerweise 3 bis 5). Reihenfolge: schwach links → stark rechts.

Jede Karte zeigt:

  • die Stufe als Kopfzeile (Kürzel + Klartext-Name),
  • einen farbigen Akzentbalken in der Stufenfarbe (zentral aus dem Theme, siehe unten),
  • die zugeordneten Schülercodes,
  • die Anzahl als Badge,
  • einen Button „Fördermaterial öffnen" (Linkziel aus der Konfig) -- oder den Hinweis „Noch kein Fördermaterial verlinkt", wenn kein Link gepflegt ist.

Layout: Auf Tablet, Laptop und Desktop (ab 768 px Breite) werden alle Karten gleichmäßig in einer Zeile verteilt -- das Stufenprofil der Domäne ist auf einen Blick erkennbar. Auf schmaleren Geräten (Handy) stapeln sich die Karten untereinander.

Anders als bei der Teilkompetenz-Sicht gibt es kein manuelles Verschieben: Stufen sind objektiver Diagnostik-Output, eine Override-Funktion würde der Sache widersprechen.


Stufen-Reihenfolge

Die Reihenfolge der Stufen schwach→stark wird in einer JSON-Datei im Repo gepflegt:

src/assets/competence-level-order.json

Schema: Fach → Array von Stufen-Definitionen

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

Warum eine lokale Konfig? Die API liefert zu Stufen heute nur nameShort und name, aber keine Sortierinformation. nameShort-Strings (römische Zahlen, GER-Stufen, gemischte Schemata pro Fach) lassen sich nicht zuverlässig sortieren. Eine Spec-Erweiterung um level: number ist als API-Vorschlag S8 in docs/api_proposals.md vorgemerkt -- sobald sie ausgeliefert ist, kann die Konfig ganz entfallen.

Stufen, die in den Daten vorkommen, aber nicht in der Konfig stehen, landen am Ende der Reihenfolge mit einer neutralen Theme-Farbe und einem Fragezeichen-Hinweis.

Farben

Die Stufen-Farben werden nicht in dieser Konfigdatei gepflegt, sondern stammen aus dem zentralen Theme src/styles/_theme.scss (Map $competence-colors). Die Komponente nutzt die bestehende Helper-Funktion getCompetenceLevelColor(nameShort) aus src/app/shared/models/competence.model.ts. Damit sind die Stufen-Farben in allen Berichtselementen identisch -- Verteilung (Übersichtsseite), Vergleich, Schüler:innen-Tabelle und diese Stufen-Buckets ziehen aus derselben Quelle.

Mapping nameShort → Theme-Klasse:

nameShort Theme-Klasse Bedeutung
Ia, Ib, I competence-level-1 Unter Mindeststandard
II competence-level-2 Mindeststandard
III competence-level-3 Regelstandard
IV competence-level-4 Regelstandard plus
V competence-level-5 Optimalstandard

Soll eine Farbe geändert werden, geschieht das im Theme -- nicht hier.


Fördermaterial-Linkkonfiguration

Die Linkziele für die „Fördermaterial öffnen"-Buttons werden in derselben JSON-Datei wie die Teilkompetenz-Links gepflegt -- aber unter einem eigenen Schlüssel kompetenzstufen:

src/assets/foerdermaterial-links.json

Schema: kompetenzstufen → Fach → Domäne → Stufenkürzel → URL

{
  "kompetenzstufen": {
    "Deutsch": {
      "Sprechen und Zuhören": {
        "Ib": "https://material.example.de/d/sprechen-zuhoeren/Ib",
        "II": "https://material.example.de/d/sprechen-zuhoeren/II",
        "III": "https://material.example.de/d/sprechen-zuhoeren/III",
        "IV": "https://material.example.de/d/sprechen-zuhoeren/IV",
        "V": "https://material.example.de/d/sprechen-zuhoeren/V"
      }
    }
  }
}

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: FoerdergruppenStufenComponent (Selektor: app-foerdergruppen-stufen)
  • Services:
    • CompetenceLevelOrderService (lädt /assets/competence-level-order.json)
    • FoerdermaterialService (lädt /assets/foerdermaterial-links.json, Methode getLinkByLevel(subject, domain, levelShort))
  • Inputs:
    • studentLevels -- Response von /groups/{id}/students/competence-levels
    • subject -- Fach-Name (z.B. „Deutsch") -- muss zu den Schlüsseln in der Reihenfolgen- und Linkkonfig passen
<app-foerdergruppen-stufen
  [studentLevels]="studentLevels()"
  subject="Deutsch"
/>

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


Einbindung im Bereich „Weiterarbeit"

Die Stufen-Sicht ist die zweite, gleichberechtigte Sicht im Bereich „Weiterarbeit". Der Page-Container FurtherWork (src/app/class-teacher/further-work/) schaltet über einen Toggle im Page-Header zwischen beiden Sichten:

Toggle-Wert Sicht URL-Query
Teilkompetenzen Fördergruppen (Lösungsquoten je Teilkompetenz, vier feste Buckets) (kein Param oder ?view=teilkompetenzen)
Kompetenzstufen Diese Seite (Stufen je Domäne, dynamisch viele Buckets) ?view=stufen

Die Auswahl persistiert in der URL-Query (?view=stufen) und ist damit bookmark- und refresh-fest, ohne localStorage zu benötigen.


Wann einsetzen?

Die Stufen-Sicht eignet sich, wenn

  • für die Stufen einer Domäne bereits gepflegtes Fördermaterial vorliegt (typischer Fall in vielen Bundesländern -- Bündelung ist durch die Diagnostik gegeben),
  • die Lehrkraft einen groben Überblick über das Stufenprofil ihrer Lerngruppe braucht, bevor sie in die Detail-Diagnostik einzelner Teilkompetenzen einsteigt,
  • ein objektiver Schnitt gewünscht ist (keine Override-Funktion, da Stufen Diagnostik-Outputs sind).

Für die feinkörnige Sicht auf einzelne Teilkompetenzen mit Lösungsquoten und manuellen Anpassungen ist Fördergruppen nach Teilkompetenzen die richtige Wahl. Beide Sichten sind im selben Page-Container vereint -- die Lehrkraft wechselt per Toggle.