Guía de referencia sobre estadísticas del sitio

:bookmark: Esta es una guía de referencia para describir cómo se calculan las estadísticas en la página /about y dónde encontrar el código Ruby para cada estadística.

:person_raising_hand: Nivel de usuario requerido: Todos los usuarios

Estadísticas de la página Acerca de

Todos los sitios de Discourse tienen una página /about integrada (por ejemplo, aquí está la página Acerca de para Meta) que contiene una lista de administradores y moderadores del sitio, junto con algunas estadísticas sobre el sitio en sí.

Estas estadísticas incluyen a todos los usuarios, incluidas las cuentas de administrador y moderador. Algunas estadísticas también incluirán cuentas anónimas (si están habilitadas en el sitio).

Si la configuración del sitio share anonymized statistics está habilitada (por defecto, esta configuración está habilitada), las “Estadísticas del sitio” en la página /about se expondrán como un archivo JSON que se puede recuperar en /about.json.

Si un sitio es público, la página /about junto con estas estadísticas también estará disponible públicamente.

:gem: El código Ruby para las estadísticas principales se encuentra en: discourse/lib/statistics.rb. El modelo Stat que orquesta las estadísticas principales y de complementos está en discourse/app/models/stat.rb.

A continuación se describe cómo se calcula cada una de estas estadísticas.

Temas

El número de temas creados dentro del período de tiempo indicado. Esta estadística no incluye temas no listados ni mensajes personales.

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

Publicaciones

El número de publicaciones creadas dentro del período de tiempo indicado. Los mensajes personales se incluyen aquí y se cuentan como publicaciones normales.

{
  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,
}

Inscripciones

El número de usuarios válidos que se han registrado para nuevas cuentas dentro del período de tiempo indicado. Un “usuario válido” es un usuario real que también está activado, no suspendido y no silenciado. Si must approve users está habilitado, solo se cuentan los usuarios aprobados.

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: Un usuario real se define aquí: discourse/app/models/user.rb — excluye a los usuarios del sistema/bot y a las cuentas sombra de usuarios anónimos.

Usuarios activos

El número de usuarios válidos que han visitado el sitio dentro del período de tiempo indicado. Utiliza el mismo filtro valid_users que en Inscripciones (excluye usuarios inactivos, suspendidos y silenciados). Incluye usuarios en modo anónimo, pero no incluye usuarios sin cuenta.

{
  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,
}

Usuarios participantes

El número de usuarios válidos que han realizado una acción (crear un tema, una publicación, dar me gusta, etc.) dentro del período de tiempo indicado. Si el chat está habilitado, también se cuentan los usuarios que enviaron mensajes de chat o agregaron reacciones de chat.

{
  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: La implementación completa está en discourse/lib/statistics.rb.

Me gusta

El número total de me gusta que han recibido todos los temas y publicaciones dentro del período de tiempo 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 y visitantes de la UE

Cuando la configuración del sitio display eu visitor stats está habilitada, la página Acerca de también mostrará estimaciones de recuentos de visitantes (total y basados en la UE). Estos se calculan combinando los datos de visitas de usuarios registrados con estimaciones de visitantes anónimos basadas en las proporciones de visualización de páginas.

:gem: Consulte los métodos visitors y eu_visitors en discourse/lib/statistics.rb para ver el cálculo completo.

Mensajes de chat

El número de mensajes de chat enviados en todos los canales de chat. Cuando el chat está habilitado, también se registran las siguientes estadísticas: usuarios de chat (usuarios distintos que han enviado mensajes) y canales de chat (canales abiertos).

Estas estadísticas se registran como estadísticas de complementos por el complemento de chat mediante register_stat en plugins/chat/plugin.rb. Las consultas subyacentes están en plugins/chat/lib/chat/statistics.rb.

6 Me gusta