Add Coaching & ScoreBoard class (result tracking) (#72)

* feat: Add Coach and ScoreBoard classes for performance tracking and difficulty adjustment
* feat: Add GroupedScores class to wrap aggregated scores
* refactor: Create ScoreStats class with tuple-based score statistics
* feat: Add unit test for Coach with CompositeDataset and multiple datasets
* fix: Add difficulty metadata to leg counting dataset
* feat: Add clear() method to ScoreBoard to reset all stored data
* feat: Add __len__ method to ScoreBoard to return number of scores
* feat: Add update_dataset_config method to CompositeDataset
* cleanup __init__ & imports
This commit is contained in:
Andreas Köpf 2025-02-06 23:15:28 +01:00 committed by GitHub
parent 05e2681ada
commit a607db79f7
18 changed files with 549 additions and 39 deletions

View file

@ -3,7 +3,7 @@ import math
import random
from dataclasses import dataclass
from datetime import date, timedelta
from enum import Enum, auto
from enum import Enum, StrEnum, auto
from typing import Any, Dict, List, Optional, Tuple
from ..factory import ProceduralDataset, register_dataset
@ -38,7 +38,7 @@ class Weekday(Enum):
return self.name.capitalize()
class CalendarTask(Enum):
class CalendarTask(StrEnum):
WEEKDAY_OFFSET = "weekday_offset"
WEEKDAY_OF_DATE = "weekday_of_date"
WEEKDAY_OF_DATE_FROM_FIRST_DATE = "weekday_of_date_from_first_day"