신규 사용자의 "방문일"이 며칠로 표시되나요?

3.1.0.beta1 (9e55a1ca88) 실행 중

자체 호스팅 사이트는 모든 사용자가 등록되어 있어야 하며, 익명 사용자는 허용되지 않습니다. 또한 모든 계정은 요청 후 보통 1~2시간 이내에 관리자 승인을 받아야 합니다.

생성된 지 8시간 지난 신규 사용자 1명이 '2일 방문’으로 보고되고 있는 것을 발견했습니다. 또 다른 사용자는 생성된 지 1일 전인데 '3일 방문’으로 보고되고 있습니다.

검색을 통해 “Days Visited Anomaly” 게시물을 찾았지만, 해당 내용은 관련이 없어 보입니다. 무엇이 잘못되었거나, 우리가 무엇을 잘못하고 있는지 확인하기 위해 무엇을 점검해야 할까요?

도움 주셔서 감사합니다. Kirk

2개의 좋아요

안녕하세요, @kgrier :slight_smile:

이 사용자들에 대해 눈에 띄는 점이 있나요? 예를 들어, 생성 방식이나 시기는 어떤가요? 공통점이 있을까요?

2개의 좋아요

답변이 늦어서 죄송합니다. 산타바바라에 비가 조금 더 많이 내렸더니 다른 일로 정신이 팔려 있었네요.

모든 사용자는 직접 가입하며, 이렇게 생성된 계정은 게시판에 접근하기 전에 관리자 승인 절차를 거칩니다. 사용자가 21:00에 가입하고 01:00에 승인되면 자정을 넘긴 경우 두 날로 표시될 수 있다는 문제를 예상했지만, 제가 이전에 게시한 3일 차 사용자 사례가 있습니다.

제가 그렇게 세심하게 확인하지 않아서 이 문제가 얼마나 오랫동안 지속되어 왔는지는 알 수 없지만, 우리 관리자 중 한 명이 이를 발견했습니다. 새 사용자가 가입할 때마다 이런 현상이 반복되는지 확인하기 위해 유입되는 가입 건을 주시하고 있습니다.

이 문제를 해결하는 데 도움이 되는 Data Explorer 쿼리가 있다면 알려주시면, 제가 실행한 후 결과를 보고하겠습니다.

도와주실 수 있는 방법이나 통찰을 공유해 주시면 감사하겠습니다.

2개의 좋아요

하지만 그 3일 차 사용자는 하루 이상 전에 생성되었습니다. 따라서 자정 전에(1일 차) 가입하고 몇 시간 후(2일 차) 방문한 뒤, 그 다음 날(3일 차)에 활동했을 수도 있습니다. 이는 2일 미만인 것이므로 1일로 표시되는 것이 정확합니다.

메타에서도 2일 차이를 확인했습니다.

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, ' at ', to_char(u.created_at, 'HH:MM')) "user_created",
       CONCAT(u.approved_at::date, ' at ', 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개의 좋아요

“방문 일수” 값은 UTC 기준 자정 12:00에 정확히 도달할 때 변경된다고 생각합니다. 따라서 사용자가 UTC 자정 12:00 전에 가입한 후, 해당 시간이 지나기까지 활동하면(그 시점에 도달하면 방문 일수가 증가합니다) 됩니다.

(아래 @Moin의 답변과 유사합니다:)

메타에서 이런 일이 일어나는 것을 보니 반갑습니다. 제가 혼자서만 이렇게 생각하는 것 같으면 뭔가 잘못하고 있는 건지 모르겠거든요 :slight_smile:

"생성: 1일 전"이라는 표시를 어제라고 해석했습니다. 계정의 생성 타임스탬프는 사용자가 승인된 시점이 아니라 가입한 시점이기 때문이죠 (가입은 방문에 해당하므로 이는 합리적입니다). UTC 날짜 변경으로 인해 "2일 방문"은 볼 수 있었지만 "3일 방문"까지는 도달하지 못했습니다. 만약 그렇다면 "생성"은 "2일 전"이어야 하지 않나요?

해당 "3일 사용자"는 1월 11일 이후로 다시 접속하지 않았으므로, 현재 보고서는 1월 9일부터 1월 11일까지의 기간을 나타내며 정확해 보입니다.

하지만 데이터 탐색기(Data Explorer)에는 생성일이 1월 9일이 아닌 1월 10일로 표시됩니다. 로컬 시간과 UTC 간의 차이 때문일까요? 시간 보고에 시간대(TZ)가 무엇인지 명시하는 것이 어떨까요? 이 두 쿼리는 1분 간격으로 실행되었습니다.

디스코스(Discourse)가 "방문"으로 간주하는 내용과 그 지속 시간을 기록합니까? 그렇다면 사용자의 사이트 접속 날짜/시간을 조회할 수 있을까요? 바쁜 사이트에서는 데이터 양이 많을 것이므로, 최근 X일분만 유지하는 방식도 고려해볼 수 있겠습니다. 그러면 타임라인에 매핑하는 것이 가능할 것입니다.

테스트 계정을 몇 개 만들어 보고서를 확인해볼 수도 있습니다. 큰 문제는 아니지만, 보고의 내부 계산 방식을 이해하지 못하면 다른 통계 수치에 대해 의문이 들 수밖에 없습니다.

DE 보고서

현재 사용자 정보:

2개의 좋아요

네. 프로필을 볼 때는 로컬 시간대가 UTC인 경우가 아니라면 UTC 대신 로컬 시간대로 시간이 표시됩니다. 반면 데이터 탐색기(DE)에는 저장된 UTC 값이 그대로 표시됩니다. :slight_smile:

2개의 좋아요

감사합니다 @ClawdiaWolf

수정: 이전에 게시했던 “3일” 사용자를 테스트해 보았습니다. 쿼리를 수정하여 처음 확인된 시간과 마지막으로 확인된 시간을 포함시켰더니, 해당 사용자는 총 44시간 남짓 접속하여 UTC 기준 자정(00:00) 세 번에 걸쳐 활동한 것으로 나타났습니다. 그래서 3일로 집계된 것입니다.

사용자 활동(User Activity)을 표시할 때 뭔가 이상한 일이 일어나고 있는 것으로 보입니다. "1일 전 생성"이라고 보고하면서 "방문일수 3일"을 표시하는 것은 모순됩니다. 이는 데이터를 과도하게 단순화한 결과로 보입니다.

제 생각에는 UTC 타임스탬프를 있는 그대로 보고하고 해석은 사용자에게 맡기는 것이 더 나을 것 같습니다. "1일 전"이라는 표현은 불확실합니다. 과거로 얼마나 거슬러 올라가야 1일로 계산될까요? UTC 자정(00:00)을 넘기면 되는 것 같습니다. 그렇다면 UTC 23:59에 생성된 사용자가 UTC 00:01에 사용자 활동을 조회할 때 "1일 전"이 되는 건가요?

기술적으로는 맞을 수 있습니다. 만약 제가 UTC 시간대에 있다면 그 사용자는 "어제, 즉 1일 전"에 생성된 것이 맞습니다. 하지만 다른 시간대에서는 그렇지 않거나, 그렇게 이해되지 않을 것입니다. 관리자 관점에서 활동을 이해하는 데 이것이 정말 유용한지 확신이 서지 않습니다.

아직 제 이해가 완전하지 않다는 것을 깨달았으며, 제 학습을 계속 도와주셔서 모두 감사합니다. 당분간은 우리 moderators(모드)에게 상세한 정확도가 필요할 경우 사용자 이벤트를 파악하기 위해 DE 쿼리를 사용하도록 조언해 두었습니다.

1개의 좋아요

아무것도 깨진 것처럼 보이지 않으므로(다만 정보를 더 명확하게 표시할 수는 있을지 모르겠네요) #contribute:ux로 넘길게요. 나중에 다른 문제를 발견하면 언제든 다시 가져올 수 있으니 걱정 마세요. :+1: :slight_smile:

1개의 좋아요