Nosso site auto-hospedado exige que todos os usuários sejam registrados, sem anonimato, e que todas as contas sejam aprovadas pelo moderador, geralmente dentro de uma ou duas horas após a solicitação.
Notamos dois novos usuários, um com 8 horas desde a criação, relatado como Visitado por 2 Dias. Outro com 1 dia de criação relatando Visitado por 3 Dias.
Pesquisei e encontrei a postagem “Dias Visitados Anomalia”, mas isso não parece relevante. O que devo verificar para ver o que está errado, ou o que estamos fazendo de errado?
Desculpe pela resposta atrasada. Um pouco de chuva excessiva em Santa Barbara me desviou.
Todos os nossos usuários se auto-registram, então as contas são criadas dessa forma e, em seguida, exigem aprovação de um moderador antes que possam acessar o fórum. Eu pensei que poderia haver um problema de “virada de meia-noite” em que um usuário se registra às 21:00 e é aprovado às 01:00, aparecendo como dois dias, mas há o usuário de 3 dias que postei.
Não sei há quanto tempo isso está acontecendo, pois não olho com tanta atenção, mas um de nossos moderadores olhou. Estou de olho em nossos registros de entrada para ver se isso acontece com cada novo usuário.
Se houver uma consulta no Data Explorer que ajude aqui, por favor, me avise, e eu a executarei e reportarei.
Obrigado por qualquer ajuda / insight que você possa fornecer.
Mas o usuário de 3 dias foi criado há mais de um dia. Portanto, eles também poderiam se registrar antes da meia-noite (dia 1), visitar algumas horas depois (dia 2) e um dia depois (dia 3). Isso seria menos de dois dias, então mostrar um dia está correto.
Não encontrei uma existente, mas talvez algo como isto:
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
Ou uma com um pouco mais para torná-la mais legível:
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
Obrigado! Acabei de ter um novo usuário registrado, então tive a chance de aprovar o usuário e executá-lo. Os moderadores têm acesso à consulta, então espero que vejamos algumas informações úteis no futuro.
Acho que o valor “Dias Visitados” muda assim que atinge exatamente 00:00 UTC. Portanto, um usuário pode entrar antes de atingir 00:00 UTC, então ficar ativo até que a hora seja atingida (então isso aumentaria os dias visitados).
É bom ver que isso acontece aqui na Meta. Eu odeio quando sou o único, aí você sabe que está fazendo errado
Interpretei “Criado: 1 dia atrás” como ontem, já que parece que o carimbo de data/hora de criação na conta é quando o usuário se registrou, não quando ele é aprovado (o que faz sentido, já que o registro é uma visita). Posso ver “2 dias visitados” com um rollover UTC, mas não consegui chegar a “3 dias visitados”. Se fosse esse o caso, “Criado” não seria “2 dias atrás”?
Esse “usuário de 3 dias” não voltou desde 11 de janeiro, então o relatório atual parece correto - de 9 a 11 de janeiro.
Mas o Data Explorer mostra uma criação em 10 de janeiro, não em 9 de janeiro como na Atividade do Usuário. Está acontecendo alguma coisa de hora local vs UTC? Talvez anotar no relatório de tempo qual é o fuso horário? Essas duas consultas foram executadas com um minuto de diferença.
O Discourse registra o que ele considera uma “visita” e a duração? Se sim, eu poderia consultar a data/hora de um usuário no site? Isso seria muitos dados em um site movimentado, então talvez reter apenas os últimos X dias? Isso permitiria mapear em uma linha do tempo.
Eu poderia criar algumas contas de teste e ver o que acontece nos relatórios. Não é um grande problema, embora faça a gente se perguntar sobre outras estatísticas se não entendermos a contabilidade por trás dos relatórios.
Sim. Ao visualizar um perfil, ele mostra os horários no seu fuso horário local em vez de UTC, a menos que seu fuso horário local por acaso seja UTC, enquanto o DE mostra o valor UTC armazenado
Editar: Fiz alguns testes no usuário de “3 dias” que postei anteriormente, modificando a consulta para incluir a primeira e a última vez que foi visto. Ele ficou online por pouco menos de 44 horas, abrangendo três meias-noites UTC 00:00, daí os três dias.
Parece que algo estranho está acontecendo ao exibir a Atividade do Usuário, pois relatar “criado há 1 dia” mas ter “Dias Visitados 3” é incongruente. Isso parece ser resultado de uma simplificação excessiva dos dados.
Na minha opinião, seria melhor simplesmente relatar os timestamps UTC como estão e deixar o usuário interpretar. “Há 1 dia” é indeterminado. Quantas horas no passado são necessárias para completar um dia? Parece que cruzar 00:00 UTC é suficiente. Então, um usuário criado às 23:59 UTC é “há 1 dia” ao olhar a Atividade do Usuário às 00:01 UTC?
Isso pode ser tecnicamente correto - se eu estiver no fuso horário UTC, o usuário foi criado “ontem, ou seja, há 1 dia”, mas em qualquer outro lugar, isso não está correto, ou não é como seria entendido. Não tenho certeza se isso é realmente útil para entender a atividade de um ponto de vista administrativo.
E percebo que meu entendimento ainda está incompleto, então obrigado a todos por continuarem minha educação. Por enquanto, aconselhei nossos moderadores a usar a consulta DE para entender os eventos de um usuário se precisarem de precisão detalhada.
Vou repassar isso para a UX, pois nada parece estar quebrado (embora talvez as informações pudessem ser exibidas com mais clareza). Mas se você encontrar mais alguma coisa depois, podemos sempre devolvê-la.