Es gab einige Benutzerberichte zum Devotee-Abzeichen, das für den Erhalt 365 Tage consecutive Logins erfordert. Das Problem scheint darin zu bestehen, dass Nutzer in Zeitzonen weit entfernt von UTC (z. B. PST+8) berücksichtigen müssen, dass der zugrunde liegende „Tag" in der UTC-Zeit definiert ist. Wir sehen, dass europäische Nutzer das Abzeichen erhalten, während andere nicht verstehen, warum sie es nicht bekommen.
Meiner Einschätzung nach ist Folgendes passiert: Ein Nutzer in PST+8 loggt sich frühmorgens am 14. März ein und dann spät abends am 15. März (für ihn jeweils ein Login pro Tag), aber die Systemabfrage für das Abzeichen betrachtet den 15. März als komplett „übersprungen", wodurch die Serie von 365 aufeinanderfolgenden Tagen unterbrochen wird. Das kann für den Endnutzer frustrierend sein, besonders wenn er sich dem Ende seines einjährigen „Laufs" nähert.
Ich weiß, dass Zeitzeiten und Datenbankabfragen oft nicht gut zusammenpassen, aber ich möchte fragen, ob etwas unternommen werden kann, um die Abfrage zu „erweitern", vielleicht um eine Toleranz für einen „UTC-Tag" bei längeren Abzeichenzeiträumen wie einem Jahr zu gewähren – danke.
Die Tabelle, die Besuche speichert, verwendet ein einfaches Datum und keinen Zeitstempel, sodass eine Toleranz von wenigen Stunden nicht umsetzbar ist.
Es hängt ganz davon ab, was Ihre Community am Ende möchte. Sie könnten dieses Abzeichen deaktivieren und ein gleichwertiges benutzerdefiniertes Abzeichen erstellen, das mit weniger Tagen ausgelöst wird, sodass es ausreicht, diese Tage abzudecken. Alternativ können Sie nach Nutzern suchen, deren Besuchslücken niemals mehr als einen Tag betragen.
Sie möchten, dass ihr Abzeichen unabhängig von ihrer Zeitzone funktioniert. Die Nutzer, die schon lange dabei sind, sind die leidenschaftlichsten.
Wir haben eine Data-Explorer-Abfrage wie diese, die geholfen hat, das Problem zu verstehen:
-- [params]
-- user_list :users
WITH StartingPoints AS (
SELECT user_id, visited_at, ROW_NUMBER() OVER(ORDER BY user_id, visited_at) AS rownum
FROM user_visits AS A
WHERE NOT EXISTS (
SELECT 1
FROM user_visits AS B
WHERE B.visited_at = A.visited_at - INTERVAL '1 day' AND
B.user_id = A.user_id
) AND user_id IN (:users)
),
EndingPoints AS (
SELECT user_id, visited_at, ROW_NUMBER() OVER(ORDER BY user_id, visited_at) AS rownum
FROM user_visits AS A
WHERE NOT EXISTS (
SELECT 1
FROM user_visits AS B
WHERE B.visited_at = A.visited_at + INTERVAL '1 day' AND
B.user_id = A.user_id
) AND user_id IN (:users)
)
SELECT u.username, S.visited_at AS start_range, E.visited_at AS end_range, (E.visited_at - S.visited_at + 1) AS Days
FROM StartingPoints AS S
JOIN EndingPoints AS E ON E.rownum = S.rownum
JOIN users u ON u.id=S.user_id AND
u.id IN (:users)
ORDER BY u.id ASC, S.visited_at DESC
…was die zusammenhängenden Abschnitte auflistet. Aufgrund des UTC-Teils (oder vielmehr der Art, wie das zugrundeliegende Datum gespeichert wird, anstatt der Uhrzeit?), scheint es fair, das Abzeichen zu vergeben, auch wenn eine Lücke von „1 Tag
[quote=“fearlessfrog, Beitrag: 1, Thema: 144614”]
Wir haben ein paar Benutzerberichte zum Devotee-Abzeichen erhalten, das 365 Tage ununterbrochener Anmeldungen erfordert, um es zu erhalten. Das Problem scheint darin zu bestehen, dass Nutzer in Zeitzonen, die weit von UTC entfernt liegen (z. B. PST +8), berücksichtigen müssen, dass der zugrunde liegende „Tag