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 7c08c05b1e
commit 3f6b2fc807
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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"