feat: Bildungsplan-Versionierung für Kompetenzkataloge, vollständig über MCP exponiert
Neue Bildungspläne wachsen je Fach klassenstufenweise hoch, sodass Kurse abhängig vom Einschulungsjahr entweder dem alten oder dem neuen Bildungsplan folgen. CompetencyCatalogVersion (Fach + Name + IsDefault) macht das abbildbar: CompetencyDomain bekommt eine VersionId, Kurse wählen über LearningGroup.CompetencyCatalogVersionId (null = Standardversion des Fachs) welche Version gilt. Migration legt für bestehende Kataloge automatisch eine Standardversion an, damit alte Datenbanken unverändert weiterlaufen. MCP: neue Tools für Versions-CRUD (get/create/update/delete_competency_plan_version, update_group_competency_version), get_competency_catalog/create_competency_domain um optionalen versionId-Parameter erweitert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4ffba35eff
commit
f97edff2fe
45 files changed
+1020
-163
No files matched your search
@@ -37,6 +37,38 @@ ein eigenes Feld wie `Student.SchoolEntryDate` zu verwenden.
|
||||
Pro Kombination aus Schüler und Lerngruppe darf es höchstens eine Zuordnung
|
||||
geben.
|
||||
|
||||
## Bildungsplan-Version (`CompetencyCatalogVersion`)
|
||||
|
||||
Bildet ab, dass für ein Fach mehrere Kompetenzkataloge parallel gültig sein können — typischerweise
|
||||
weil ein neuer Bildungsplan klassenstufenweise hochwächst (z.B. beginnend in Klasse 5, ein Jahrgang
|
||||
pro Schuljahr) und deshalb über mehrere Schuljahre hinweg sowohl der alte als auch der neue Plan
|
||||
gleichzeitig unterrichtet werden.
|
||||
|
||||
- `SubjectId`: Fach, zu dem die Version gehört
|
||||
- `Name`: frei gewählte Bezeichnung, z.B. `Bildungsplan 2016` oder `Bildungsplan 2026`
|
||||
- `IsDefault`: je Fach höchstens eine Version — Kurse ohne explizite Wahl (siehe
|
||||
`LearningGroup.CompetencyCatalogVersionId`) nutzen sie. `CompetencyCatalogVersionRepository.Save`
|
||||
nimmt beim Setzen automatisch die bisherige Standardversion desselben Fachs zurück.
|
||||
|
||||
`CompetencyDomain.VersionId` verweist auf die Version, zu der ein Kompetenzbereich gehört — derselbe
|
||||
Katalog-Slot (Fach + Klassenstufe) kann also mehrfach existieren, einmal je Version.
|
||||
`LearningGroup.CompetencyCatalogVersionId` (`Guid?`) wählt je Kurs/Klasse, welche Version gilt.
|
||||
Analog zum Verhältnis von `GroupMembership` zu `LearningGroup.SchoolYear` (siehe oben) ist dieses
|
||||
Feld bewusst nullable mit einer Sonderbedeutung: `null` heißt nicht "keine Version", sondern "die
|
||||
Standardversion des Fachs" — so brauchen bestehende Kurse und Kompetenzkataloge beim Einführen der
|
||||
Versionierung keine Migration außer dem einmaligen Anlegen je einer Standardversion pro Fach
|
||||
(`LiteDbContext.MigrateCompetencyCatalogVersions`, Schema-Version 5).
|
||||
|
||||
`CompetencyCatalogVersionRepository.Delete` blockiert (statt in den Papierkorb zu verschieben, siehe
|
||||
14.2), wenn die Version noch von einem Kompetenzbereich oder einem Kurs referenziert wird, oder wenn
|
||||
sie die Standardversion ihres Fachs ist — erst eine andere Version des Fachs muss zum Standard
|
||||
werden, damit nie ein Fach ganz ohne Standardversion dasteht.
|
||||
|
||||
Bewusst **nicht** Teil dieser Versionierung: die Verknüpfung von Kompetenzcodes zu Unterrichtseinheiten,
|
||||
Einzelstunden und Klausuraufgaben (`Unit.Competencies`, `Lesson.Competencies`, `ExamTask.CompetencyCodes`)
|
||||
bleibt Freitext-Code-basiert, nicht auf `CompetencyItem.Id` umgestellt — ein vorbestehendes, unabhängiges
|
||||
Thema (siehe TODO 16.5).
|
||||
|
||||
## Gewichtungsschema (`GradingScheme`)
|
||||
|
||||
Legt die prozentuale Gewichtung von Klausuren, Mitarbeit und sonstigen Leistungen für die
|
||||
|
||||
Reference in new issue
Block a user