Fix dynamic Elo clamp updates
This commit is contained in:
@@ -143,7 +143,10 @@ public sealed class DynamicQuestionStore
|
|||||||
await _mastery.UpdateOneAsync(
|
await _mastery.UpdateOneAsync(
|
||||||
value => value.UserId == claims.UserId && value.ObjectiveId == claims.ObjectiveId,
|
value => value.UserId == claims.UserId && value.ObjectiveId == claims.ObjectiveId,
|
||||||
Builders<DynamicObjectiveMastery>.Update
|
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));
|
.Min(value => value.Elo, DynamicDifficultyPolicy.MaximumElo));
|
||||||
if (!string.IsNullOrWhiteSpace(claims.CaseFamilyId))
|
if (!string.IsNullOrWhiteSpace(claims.CaseFamilyId))
|
||||||
await UpdateFamilyRatingAsync(claims, generated, isCorrect);
|
await UpdateFamilyRatingAsync(claims, generated, isCorrect);
|
||||||
@@ -156,7 +159,7 @@ public sealed class DynamicQuestionStore
|
|||||||
IsCorrect = isCorrect,
|
IsCorrect = isCorrect,
|
||||||
CorrectChoiceId = generated.Question.CorrectChoiceId,
|
CorrectChoiceId = generated.Question.CorrectChoiceId,
|
||||||
ObjectiveId = claims.ObjectiveId,
|
ObjectiveId = claims.ObjectiveId,
|
||||||
ObjectiveElo = updated.Elo,
|
ObjectiveElo = DynamicDifficultyPolicy.Clamp(updated.Elo),
|
||||||
RatingChange = delta,
|
RatingChange = delta,
|
||||||
SelectedMisconceptionId = misconceptionId,
|
SelectedMisconceptionId = misconceptionId,
|
||||||
IsScheduledReview = claims.IsScheduledReview,
|
IsScheduledReview = claims.IsScheduledReview,
|
||||||
@@ -272,7 +275,10 @@ public sealed class DynamicQuestionStore
|
|||||||
await _familyRatings.UpdateOneAsync(
|
await _familyRatings.UpdateOneAsync(
|
||||||
value => value.Id == current.Id,
|
value => value.Id == current.Id,
|
||||||
Builders<DynamicFamilyRating>.Update
|
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));
|
.Min(value => value.Elo, DynamicDifficultyPolicy.MaximumElo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user