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>
43 lines
1.9 KiB
C#
43 lines
1.9 KiB
C#
namespace LehrerApp.Core.Models;
|
|
|
|
public class CompetencyDomain
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid SubjectId { get; set; }
|
|
public int GradeLevel { get; set; }
|
|
/// <summary>Bildungsplan-Version dieses Bereichs (<see cref="CompetencyCatalogVersion"/>) - ein
|
|
/// Fach kann mehrere parallel gültige Versionen haben (altes/neues Bildungsplan, während dieser
|
|
/// klassenstufenweise hochwächst). Wird von der Migration für bestehende Datensätze auf die
|
|
/// jeweilige Standardversion des Fachs gesetzt.</summary>
|
|
public Guid VersionId { get; set; }
|
|
public string Name { get; set; } = "";
|
|
public string Code { get; set; } = "";
|
|
public int SortOrder { get; set; }
|
|
public List<CompetencyItem> Items { get; set; } = [];
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
/// <summary>Eine Bildungsplan-Version eines Fachs (z.B. "Bildungsplan 2016" vs. "Bildungsplan 2026").
|
|
/// Ermöglicht es, während ein neuer Bildungsplan klassenstufenweise hochwächst, alten und neuen
|
|
/// Kompetenzkatalog parallel zu pflegen - <see cref="LearningGroup.CompetencyCatalogVersionId"/>
|
|
/// wählt je Kurs/Klasse, welche Version gilt. Je Fach ist genau eine Version <see cref="IsDefault"/>
|
|
/// (Kurse ohne explizite Wahl nutzen sie, siehe Doc-Kommentar auf <see cref="LearningGroup"/>).</summary>
|
|
public class CompetencyCatalogVersion
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid SubjectId { get; set; }
|
|
public string Name { get; set; } = "";
|
|
public bool IsDefault { get; set; }
|
|
public int SortOrder { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public class CompetencyItem
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public string Code { get; set; } = "";
|
|
public string Description { get; set; } = "";
|
|
public int SortOrder { get; set; }
|
|
}
|