Новый пользователь: несколько дней отображаются как «Дней посещений»?

Запущена версия 3.1.0.beta1 (9e55a1ca88)

Наш саморазмещённый сайт требует регистрации всех пользователей, анонимный доступ запрещён, и все аккаунты должны быть одобрены модераторами, обычно в течение одного-двух часов после запроса.

Мы заметили двух новых пользователей: у одного с момента создания прошло 8 часов, но он отображается как «Посещал в течение 2 дней». У другого аккаунт создан 1 день назад, но указано «Посещал в течение 3 дней».

Мы нашли тему «Аномалия дней посещения», но она, похоже, не относится к нашей ситуации. Что нам нужно проверить, чтобы понять, в чём проблема, или что мы делаем не так?

Спасибо за помощь, Кирк.

2 лайка

Привет и добро пожаловать, @kgrier :slight_smile:

Что-нибудь выделяется в этих пользователях? Возможно, как или когда они были созданы? Есть ли у них что-то общее?

2 лайка

Извините за задержку с ответом. Небольшой избыток осадков в Санта-Барбаре вынудил меня изменить маршрут.

Все наши пользователи регистрируются самостоятельно, поэтому аккаунты создаются таким образом, а затем требуют одобрения модератора перед доступом к форуму. Я думал, что может возникнуть проблема «перехода через полночь», когда пользователь регистрируется в 21:00, а получает одобрение в 01:00, из-за чего это отображается как два разных дня, но есть пример пользователя, зарегистрированного три дня назад, о котором я писал.

Я не знаю, как долго это происходит, так как не слежу за этим пристально, но один из наших модераторов обратил на это внимание. Я внимательно слежу за новыми регистрациями, чтобы проверить, повторяется ли это с каждым новым пользователем.

Если существует запрос в Data Explorer, который может помочь в этой ситуации, пожалуйста, сообщите мне, и я его выполню и отчитаюсь.

Спасибо за любую помощь или разъяснения, которые вы сможете предоставить.

2 лайка

Однако пользователь с активностью в три дня был создан более суток назад. Значит, он мог зарегистрироваться до полуночи (день 1), зайти через несколько часов (день 2) и ещё раз через день (день 3). Это займёт меньше двух суток, поэтому отображение «один день» верно.

Я также видел разницу в два дня здесь, на meta

3 лайка

Я не нашел существующего, но, возможно, что-то вроде этого:


SELECT u.id AS user_id,
       u.created_at,
       u.approved_at,
       us.days_visited
FROM users u
JOIN user_stats us ON u.id = us.user_id
WHERE u.approved_at IS NOT NULL
ORDER BY u.created_at DESC

Или вариант с небольшим дополнением для лучшей читаемости:


SELECT u.id AS user_id,
       CONCAT(u.created_at::date, ' в ', to_char(u.created_at, 'HH:MM')) "user_created",
       CONCAT(u.approved_at::date, ' в ', to_char(u.approved_at, 'HH:MM')) "user_approved",
       us.days_visited
FROM users u
JOIN user_stats us ON u.id = us.user_id
WHERE u.approved_at IS NOT NULL
ORDER BY u.created_at DESC
   
1 лайк

Спасибо! Только что зарегистрировался новый пользователь, так что у меня появилась возможность утвердить его и запустить процесс. Модераторы получили доступ к запросу, так что, надеюсь, мы увидим какую-то полезную информацию в будущем.

,

2 лайка

Я думаю, что значение «Дней посещения» меняется, как только наступает ровно 00:00 UTC по Гринвичу. Таким образом, пользователь может присоединиться до наступления 00:00 UTC, а затем оставаться активным до этого момента (после чего количество дней посещения увеличится).

(Аналогично ответу @Moin ниже:)

Рад видеть, что это происходит здесь, в Meta. Я ненавижу, когда я единственный, кто так делает — тогда, как говорится, ты делаешь что-то не так :slight_smile:

Я интерпретировал «Created: 1 day ago» как «вчера», поскольку, похоже, временная метка создания аккаунта указывает на момент регистрации пользователя, а не на момент его одобрения (что логично, так как регистрация — это просто визит). Я видел запись «2 days visited» с переходом через полночь по UTC, но не смог добиться «3 days visited». Если бы это было так, разве «Created» не было бы «2 days ago»?

Этот «пользователь с 3-дневным стажем» не заходил с 11 января, поэтому текущий отчёт выглядит корректно — с 9 по 11 января.

Однако в Data Explorer указана дата создания 10 января, а не 9 января, как в User Activity. Возможно, дело в разнице между местным временем и UTC? Может быть, стоит указывать часовой пояс в отчётах о времени? Эти два запроса были выполнены с разницей в одну минуту.

Логирует ли Discourse, что он считает «визитом», и его продолжительность? Если да, то я мог бы запросить дату/время посещения пользователем сайта. Это было бы очень много данных на загруженном сайте, поэтому, возможно, стоит хранить только последние X дней? Это позволило бы построить график на временной шкале.

Я мог бы создать несколько тестовых аккаунтов и посмотреть, как это отразится в отчётах. Это не критично, но заставляет задуматься о других показателях, если мы не понимаем логику учёта, стоящую за отчётами.

Отчёт DE

Информация о пользователе сейчас:

2 лайка

Да. При просмотре профиля время отображается в вашем местном часовом поясе, а не в UTC, если только ваш местный часовой пояс не совпадает с UTC. В то время как DE показывает сохранённое значение UTC :slight_smile:

2 лайка

Спасибо @ClawdiaWolf

Редакция: Я провёл тестирование на пользователе «3 дня», о котором я упоминал ранее, изменив запрос так, чтобы он включал время первого и последнего входа. Он был в сети чуть менее 44 часов, охватывая три полуночи по UTC (00:00), отсюда и три дня.

Кажется, при отображении активности пользователя происходит что-то странное: указание «создан 1 день назад» при этом «Дней посещений 3» выглядит несогласованным. Это похоже на результат излишнего упрощения данных.

На мой взгляд, было бы лучше просто отображать временные метки UTC в исходном виде и предоставить пользователю возможность интерпретировать их. «1 день назад» — понятие неопределённое. Сколько часов должно пройти, чтобы считалось одним днём? Похоже, достаточно перехода через 00:00 UTC. То есть пользователь, созданный в 23:59 UTC, будет считаться «созданным 1 день назад», если смотреть активность пользователя в 00:01 UTC?

Это может быть технически верно — если я нахожусь в часовом поясе UTC, то пользователь был создан «вчера, т.е. 1 день назад», но в любом другом месте это неверно или не так воспринимается. Не уверен, что это действительно полезно для понимания активности с точки зрения администратора.

И я понимаю, что моё понимание всё ещё неполное, поэтому спасибо всем за продолжение моего обучения. На данный момент я посоветовал нашим модераторам использовать запрос DE для понимания событий пользователя, если им требуется высокая точность.

1 лайк

Я передам это в ux, так как ничего не сломано (хотя, возможно, информацию можно было бы отобразить более наглядно). Но если вы позже обнаружите что-то ещё, мы всегда сможем вернуть это обратно. :+1: :slight_smile:

1 лайк