Guia de referência sobre estatísticas de página do site

:bookmark: Este é um guia de referência para descrever como as estatísticas na página /about são calculadas e onde encontrar o código Ruby para cada estatística.

:person_raising_hand: 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.

:gem: 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,
}

:gem: 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),
}

:gem: 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.

:gem: Veja os métodos visitors e eu_visitors em 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.

6 curtidas