diff --git a/api/QuestionsApi/Services/DynamicQuestionStore.cs b/api/QuestionsApi/Services/DynamicQuestionStore.cs index 932ca7a..76aaca3 100644 --- a/api/QuestionsApi/Services/DynamicQuestionStore.cs +++ b/api/QuestionsApi/Services/DynamicQuestionStore.cs @@ -143,7 +143,10 @@ public sealed class DynamicQuestionStore await _mastery.UpdateOneAsync( value => value.UserId == claims.UserId && value.ObjectiveId == claims.ObjectiveId, Builders.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.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.Update - .Max(value => value.Elo, DynamicDifficultyPolicy.MinimumElo) + .Max(value => value.Elo, DynamicDifficultyPolicy.MinimumElo)); + await _familyRatings.UpdateOneAsync( + value => value.Id == current.Id, + Builders.Update .Min(value => value.Elo, DynamicDifficultyPolicy.MaximumElo)); }