SE-TINF22B2 / G5-DuoGradus

Sammle Schritte, Tritt gegen Freunde an und steig in deiner Liga auf!
https://docs.duo-gradus.de
Apache License 2.0
3 stars 1 forks source link

Counter für die täglichen Punkte (wird um 0:00 Uhr zurückgesetzt) #208

Closed henrybrink closed 3 months ago

henrybrink commented 3 months ago

Ein wichtiger Bestandteil der Anwendung ist der Motivitationsfaktor täglich seine Ziele zu erreichen. Dafür gibt es zwei grundlegende Mechanismen:

Beide Attribute sollen über die Nutzer-API abgerufen werden, entweder über /user/me, oder alternativ über /user/me/metrics (letztere Variante isoliert zwar die Punkte, führt allerdings zu mehr teuren HTTP-Abfragen, deswegen würde ich erstere empfehlen).

Der Punkte-Wert kann direkt aus der Datenbank gelesen werden, dafür sind die Punkte aller abgeschlossenen Aufgaben auszulesen und zu aggregieren (hängt von #126 ab). Die täglichen Punkte sind komplexer in der Umsetzung, entweder wird ein weiterer Parameter eingeführt, der täglich (z.B. über einen Cronjob) um 0:00 Uhr berechnet wird, oder es wird ebenfalls mit einer Abfrage gearbeitet, dies ist allerdings komplizierter. Alternativ kann der Counter auch beim Lesen zurückgesetzt werden, z.B. durch ein zweites Feld ("lastUpdate")

henrybrink commented 3 months ago

Idee: Für jeden Tag wird ein Eintrag mit den Punkten angelegt, wenn am gleichen Tag eine Aktivität durchgeführt wird, wird dieserr Counter erhöht. Gibt es keine Punkte an einem Tag, wird auch kein Eintrag angelegt.

Der API-Endpoint gibt ein Objekt zurück, indem die aktuellen Punkte, wie lange ein Streak besteht, sowie die Tage des aktuellen Streaks als Array enthalten sind.