Este é um guia de referência para descrever como as estatísticas na página
/aboutsão calculadas e onde encontrar o código Ruby para cada estatística.
Nível de usuário necessário: Todos os usuários
Estatísticas da Página Sobre
Todos os sites Discourse possuem uma página /about integrada (por exemplo, aqui está a página Sobre do Meta) que contém uma lista de administradores e moderadores do site, além de algumas estatísticas sobre o próprio site.
Essas estatísticas incluem todos os usuários, incluindo contas de administrador e moderador. Algumas estatísticas também incluirão contas anônimas (se habilitadas no site).
Se a configuração do site share anonymized statistics estiver habilitada (por padrão, essa configuração está habilitada), as “Estatísticas do Site” na página /about serão expostas como um arquivo JSON que pode ser recuperado em /about.json.
Se um site for público, a página /about junto com essas estatísticas também estará disponível publicamente.
O código Ruby para as estatísticas principais está localizado em: discourse/lib/statistics.rb. O modelo
Stat, que orquestra as estatísticas principais e de plugins, está em discourse/app/models/stat.rb.
Abaixo está uma descrição de como cada uma dessas estatísticas é calculada.
Tópicos
O número de tópicos criados dentro do período de tempo indicado. Esta estatística não inclui tópicos não listados ou mensagens pessoais.
topics = Topic.listable_topics
{
last_day: topics.where("created_at > ?", 1.day.ago).count,
"7_days": topics.where("created_at > ?", 7.days.ago).count,
"30_days": topics.where("created_at > ?", 30.days.ago).count,
count: topics.count,
}
Publicações
O número de publicações criadas dentro do período de tempo indicado. Mensagens pessoais estão incluídas aqui e contadas como publicações regulares.
{
last_day: Post.where("created_at > ?", 1.day.ago).count,
"7_days": Post.where("created_at > ?", 7.days.ago).count,
"30_days": Post.where("created_at > ?", 30.days.ago).count,
count: Post.count,
}
Cadastros
O número de usuários válidos que se cadastraram para novas contas dentro do período de tempo indicado. Um “usuário válido” é um usuário real que também está ativado, não suspenso e não silenciado. Se must approve users estiver habilitado, apenas usuários aprovados são contados.
def self.valid_users
users = User.real.activated.not_suspended.not_silenced
users = users.approved if SiteSetting.must_approve_users
users
end
{
last_day: valid_users.where("created_at > ?", 1.day.ago).count,
"7_days": valid_users.where("created_at > ?", 7.days.ago).count,
"30_days": valid_users.where("created_at > ?", 30.days.ago).count,
count: valid_users.count,
}
Um usuário
realé definido aqui: discourse/app/models/user.rb — ele exclui usuários do sistema/bot e contas sombra de usuários anônimos.
Usuários Ativos
O número de usuários válidos que visitaram o site dentro do período de tempo indicado. Utiliza o mesmo filtro valid_users dos Cadastros (exclui usuários inativos, suspensos e silenciados). Inclui usuários no modo anônimo, mas não inclui usuários sem conta.
{
last_day: valid_users.where("last_seen_at > ?", 1.day.ago).count,
"7_days": valid_users.where("last_seen_at > ?", 7.days.ago).count,
"30_days": valid_users.where("last_seen_at > ?", 30.days.ago).count,
}
Usuários Participantes
O número de usuários válidos que realizaram uma ação (criaram um tópico, publicação, curtida, etc.) dentro do período de tempo indicado. Se o chat estiver habilitado, usuários que enviaram mensagens de chat ou adicionaram reações de chat também são contados.
{
last_day: participating_users_count(1.day.ago),
"7_days": participating_users_count(7.days.ago),
"30_days": participating_users_count(30.days.ago),
}
A implementação completa está em discourse/lib/statistics.rb.
Curtidas
O número total de curtidas que todos os tópicos e publicações receberam dentro do período de tempo indicado.
likes = UserAction.where(action_type: UserAction::LIKE)
{
last_day: likes.where("created_at > ?", 1.day.ago).count,
"7_days": likes.where("created_at > ?", 7.days.ago).count,
"30_days": likes.where("created_at > ?", 30.days.ago).count,
count: likes.count,
}
Visitantes e Visitantes da UE
Quando a configuração do site display eu visitor stats estiver habilitada, a página Sobre também exibirá contagens estimadas de visitantes (total e baseados na UE). Essas são calculadas combinando dados de visita de usuários logados com visitantes anônimos estimados com base nas proporções de visualização de páginas.
Veja os métodos
visitorseeu_visitorsem discourse/lib/statistics.rb para o cálculo completo.
Mensagens de Chat
O número de mensagens de chat enviadas em todos os canais de chat. Quando o chat está habilitado, as seguintes estatísticas também são registradas: usuários de chat (usuários distintos que enviaram mensagens) e canais de chat (canais abertos).
Essas estatísticas são registradas como estatísticas de plugin pelo plugin de chat via register_stat em plugins/chat/plugin.rb. As consultas subjacentes estão em plugins/chat/lib/chat/statistics.rb.
