Problem: Pro Tag × pro Mitarbeiter wird [...history, ...monthAssignments] neu erzeugt, gefiltert, gemappt und sortiert → O(Tage·Mitarbeiter·History). Bei ~20 MA/22 Tagen unkritisch, skaliert aber schlecht.
Fix:lastDate/Counts pro Mitarbeiter einmalig vor der Tagesschleife vorberechnen (Map).
**Schweregrad:** LOW–MEDIUM
**Dateien:** `js/algorithm.js:49-57`
**Problem:** Pro Tag × pro Mitarbeiter wird `[...history, ...monthAssignments]` neu erzeugt, gefiltert, gemappt und sortiert → O(Tage·Mitarbeiter·History). Bei ~20 MA/22 Tagen unkritisch, skaliert aber schlecht.
**Fix:** `lastDate`/Counts pro Mitarbeiter einmalig vor der Tagesschleife vorberechnen (Map).
Behoben in c076b5e: histCount-Map einmal pro Generierung vorberechnet — scoreCandidate macht jetzt O(1)-Lookup statt History-Scan pro Kandidat. minGap ermittelt das letzte Datum per Single-Pass-Max statt Array-Spread + .sort(). Verhalten unverändert (alle Tests grün). Bewusst keine riskante inkrementelle Umstrukturierung des Scheduling-Kerns bei aktueller Skala.
Behoben in `c076b5e`: `histCount`-Map einmal pro Generierung vorberechnet — `scoreCandidate` macht jetzt O(1)-Lookup statt History-Scan pro Kandidat. minGap ermittelt das letzte Datum per Single-Pass-Max statt Array-Spread + `.sort()`. Verhalten unverändert (alle Tests grün). Bewusst keine riskante inkrementelle Umstrukturierung des Scheduling-Kerns bei aktueller Skala.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Schweregrad: LOW–MEDIUM
Dateien:
js/algorithm.js:49-57Problem: Pro Tag × pro Mitarbeiter wird
[...history, ...monthAssignments]neu erzeugt, gefiltert, gemappt und sortiert → O(Tage·Mitarbeiter·History). Bei ~20 MA/22 Tagen unkritisch, skaliert aber schlecht.Fix:
lastDate/Counts pro Mitarbeiter einmalig vor der Tagesschleife vorberechnen (Map).Behoben in
c076b5e:histCount-Map einmal pro Generierung vorberechnet —scoreCandidatemacht jetzt O(1)-Lookup statt History-Scan pro Kandidat. minGap ermittelt das letzte Datum per Single-Pass-Max statt Array-Spread +.sort(). Verhalten unverändert (alle Tests grün). Bewusst keine riskante inkrementelle Umstrukturierung des Scheduling-Kerns bei aktueller Skala.