using System.Text.Json; namespace LehrerApp.Core.Services; /// Gewichte für ClassTeacherRosterRow.PatternScore (Klassenlehrer-Bereich, "Gesamtbild") /// — Default-Werte entsprechen den ursprünglich fest verdrahteten Konstanten. public sealed class PatternScoreWeights { public double UnexcusedDayWeight { get; set; } = 3.0; public double ExcusedDayWeight { get; set; } = 1.0; public double LateDayWeight { get; set; } = 0.5; public double NegativeClassRegisterEntryWeight { get; set; } = 1.0; public double ConcerningKeywordBonus { get; set; } = 1.5; public double SuspensionKeywordWeight { get; set; } = 15.0; } /// Speichert die Gewichte lokal, gleiches Muster wie WorkloadSettingsService/ /// DashboardSettingsService. public sealed class PatternScoreSettingsService { private readonly string _configPath; public PatternScoreSettingsService(string appDataPath) => _configPath = Path.Combine(appDataPath, "patternscoreweights.json"); public PatternScoreWeights Load() { try { if (File.Exists(_configPath)) return JsonSerializer.Deserialize(File.ReadAllText(_configPath)) ?? new PatternScoreWeights(); } catch { /* beschädigte Konfiguration -> Standardgewichte */ } return new PatternScoreWeights(); } public void Save(PatternScoreWeights weights) => File.WriteAllText(_configPath, JsonSerializer.Serialize(weights)); }