Fix dynamic Elo clamp updates

This commit is contained in:
hz
2026-07-23 23:01:52 -05:00
parent 0ec486f132
commit b9d4687b1b
@@ -143,7 +143,10 @@ public sealed class DynamicQuestionStore
await _mastery.UpdateOneAsync(
value => value.UserId == claims.UserId && value.ObjectiveId == claims.ObjectiveId,
Builders<DynamicObjectiveMastery>.Update
.Max(value => value.Elo, DynamicDifficultyPolicy.MinimumElo)
.Max(value => value.Elo, DynamicDifficultyPolicy.MinimumElo));
await _mastery.UpdateOneAsync(
value => value.UserId == claims.UserId && value.ObjectiveId == claims.ObjectiveId,
Builders<DynamicObjectiveMastery>.Update
.Min(value => value.Elo, DynamicDifficultyPolicy.MaximumElo));
if (!string.IsNullOrWhiteSpace(claims.CaseFamilyId))
await UpdateFamilyRatingAsync(claims, generated, isCorrect);
@@ -156,7 +159,7 @@ public sealed class DynamicQuestionStore
IsCorrect = isCorrect,
CorrectChoiceId = generated.Question.CorrectChoiceId,
ObjectiveId = claims.ObjectiveId,
ObjectiveElo = updated.Elo,
ObjectiveElo = DynamicDifficultyPolicy.Clamp(updated.Elo),
RatingChange = delta,
SelectedMisconceptionId = misconceptionId,
IsScheduledReview = claims.IsScheduledReview,
@@ -272,7 +275,10 @@ public sealed class DynamicQuestionStore
await _familyRatings.UpdateOneAsync(
value => value.Id == current.Id,
Builders<DynamicFamilyRating>.Update
.Max(value => value.Elo, DynamicDifficultyPolicy.MinimumElo)
.Max(value => value.Elo, DynamicDifficultyPolicy.MinimumElo));
await _familyRatings.UpdateOneAsync(
value => value.Id == current.Id,
Builders<DynamicFamilyRating>.Update
.Min(value => value.Elo, DynamicDifficultyPolicy.MaximumElo));
}