Closed FatalEagle closed 8 years ago
Any idea how the rating systems usually work? Any idea on who, where, when, and what the medals will be awarded?
Elo rating system sounds like a good start. Medals can be awarded to participants in contests, with number of medals awarded being manually configurable or based on total number of participants who have nonzero scores. Maybe medals can each have a unique description?
Design considerations:
class Rating(models.Model):
profile = models.ForeignKey(Profile)
contest = models.ForeignKey(Contest)
rating = models.IntegerField()
volatility = models.IntegerField()
last_rated = models.DateTimeField()
This model will serve as the user's rating history. To save queries, we might consider saving the rating in the Profile model. The rating history, when used, will be sorted by the end time of the contest. Every single rating will be calculated from the previous chronological contest, and doing so should (optionally) automatically calculate the subsequent ratings.
Hopefully calculating ratings will not be too slow, but again, you don't calculate them on every request.
A contest with serious mistakes in test data or statements should be unrated (therefore not all contests should be rated).
Guess a rated boolean field on the contest should work. Probably only admins should be able to set it.
Rating is implemented a long time ago. Any other reward will be a separate ticket.
Contest rating and/or medals would be a nice incentive for people to actually participate.