Ceci est un guide de référence décrivant comment les statistiques de la page
/aboutsont calculées et où trouver le code Ruby pour chaque statistique.
Niveau d’utilisateur requis : Tous les utilisateurs
Statistiques de la page À propos
Tous les sites Discourse disposent d’une page /about intégrée (par exemple, voici la page À propos de Meta) qui contient une liste des administrateurs et modérateurs du site, ainsi que quelques statistiques sur le site lui-même.
Ces statistiques incluent tous les utilisateurs, y compris les comptes administrateur et modérateur. Certaines statistiques incluent également les comptes anonymes (si activés sur le site).
Si le paramètre du site share anonymized statistics est activé (par défaut, ce paramètre est activé), les « Statistiques du site » sur la page /about seront exposées sous forme de fichier JSON récupérable à l’adresse /about.json.
Si un site est public, la page /about ainsi que ces statistiques seront également accessibles publiquement.
Le code Ruby pour les statistiques de base se trouve dans : discourse/lib/statistics.rb. Le modèle
Statqui orchestre les statistiques de base et celles des plugins se trouve dans discourse/app/models/stat.rb.
Ci-dessous se trouve une description de la manière dont chacune de ces statistiques est calculée.
Sujets
Le nombre de sujets créés dans la période indiquée. Cette statistique n’inclut pas les sujets non listés ni les messages privés.
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,
}
Messages
Le nombre de messages créés dans la période indiquée. Les messages privés sont inclus ici et comptés comme des messages réguliers.
{
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,
}
Inscriptions
Le nombre d’utilisateurs valides ayant créé de nouveaux comptes dans la période indiquée. Un « utilisateur valide » est un utilisateur réel qui est également activé, non suspendu et non silencieux. Si must approve users est activé, seuls les utilisateurs approuvés sont comptés.
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,
}
Un utilisateur
réelest défini ici : discourse/app/models/user.rb — il exclut les utilisateurs système/bots et les comptes fantômes d’utilisateurs anonymes.
Utilisateurs actifs
Le nombre d’utilisateurs valides ayant visité le site dans la période indiquée. Utilise le même filtre valid_users que pour les inscriptions (exclut les utilisateurs inactifs, suspendus et silencieux). Inclut les utilisateurs en mode anonyme, mais n’inclut pas les utilisateurs sans compte.
{
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,
}
Utilisateurs participants
Le nombre d’utilisateurs valides ayant effectué une action (créé un sujet, un message, un like, etc.) dans la période indiquée. Si la discussion est activée, les utilisateurs ayant envoyé des messages de discussion ou ajouté des réactions de discussion sont également comptés.
{
last_day: participating_users_count(1.day.ago),
"7_days": participating_users_count(7.days.ago),
"30_days": participating_users_count(30.days.ago),
}
L’implémentation complète se trouve dans discourse/lib/statistics.rb.
Likes
Le nombre total de likes reçus par tous les sujets et messages dans la période indiquée.
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,
}
Visiteurs et Visiteurs de l’UE
Lorsque le paramètre du site display eu visitor stats est activé, la page À propos affichera également des estimations du nombre de visiteurs (total et basé dans l’UE). Ces chiffres sont calculés en combinant les données de visite des utilisateurs connectés avec une estimation des visiteurs anonymes basée sur les ratios de vues de page.
Consultez les méthodes
visitorseteu_visitorsdans discourse/lib/statistics.rb pour le calcul complet.
Messages de discussion
Le nombre de messages de discussion envoyés sur tous les canaux de discussion. Lorsque la discussion est activée, les statistiques suivantes sont également enregistrées : utilisateurs de discussion (utilisateurs distincts ayant envoyé des messages) et canaux de discussion (canaux ouverts).
Ces statistiques sont enregistrées en tant que statistiques de plugins par le plugin de discussion via register_stat dans plugins/chat/plugin.rb. Les requêtes sous-jacentes se trouvent dans plugins/chat/lib/chat/statistics.rb.
