Dies ist eine Referenzanleitung zur Beschreibung, wie die Statistiken auf der Seite
/aboutberechnet werden und wo Sie den Ruby-Code für jede Statistik finden.
Erforderliche Benutzerstufe: Alle Benutzer
Statistiken auf der Seite „Über"
Alle Discourse-Sites verfügen über eine integrierte Seite /about (zum Beispiel hier ist die Über-Seite für Meta), die eine Liste der Administratoren und Moderatoren der Site sowie einige Statistiken über die Site selbst enthält.
Diese Statistiken umfassen alle Benutzer, einschließlich Administrator- und Moderator-Konten. Einige Statistiken enthalten auch anonyme Konten (falls auf der Site aktiviert).
Wenn die Site-Einstellung „anonymisierte Statistiken teilen" aktiviert ist (standardmäßig ist diese Einstellung aktiviert), werden die „Site-Statistiken" auf der Seite /about als JSON-Datei bereitgestellt, die unter /about.json abgerufen werden kann.
Wenn eine Site öffentlich ist, ist die Seite /about zusammen mit diesen Statistiken ebenfalls öffentlich verfügbar.
Der Ruby-Code für die Kernstatistiken befindet sich in: discourse/lib/statistics.rb. Das
Stat-Modell, das Kern- und Plugin-Statistiken orchestriert, befindet sich in discourse/app/models/stat.rb.
Nachfolgend finden Sie eine Beschreibung, wie jede dieser Statistiken berechnet wird.
Themen
Die Anzahl der Themen, die innerhalb des angegebenen Zeitraums erstellt wurden. Diese Statistik umfasst keine nicht gelisteten Themen oder persönlichen Nachrichten.
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,
}
Beiträge
Die Anzahl der Beiträge, die innerhalb des angegebenen Zeitraums erstellt wurden. Persönliche Nachrichten sind hier enthalten und werden als reguläre Beiträge gezählt.
{
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,
}
Anmeldungen
Die Anzahl der gültigen Benutzer, die sich innerhalb des angegebenen Zeitraums für neue Konten angemeldet haben. Ein „gültiger Benutzer" ist ein realer Benutzer, der aktiviert ist, nicht gesperrt und nicht stummgeschaltet ist. Wenn „Benutzer müssen genehmigt werden" aktiviert ist, werden nur genehmigte Benutzer gezählt.
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,
}
Ein
realer Benutzer ist hier definiert: discourse/app/models/user.rb — er schließt System-/Bot-Benutzer und anonyme Benutzer-Schattenkonten aus.
Aktive Benutzer
Die Anzahl der gültigen Benutzer, die innerhalb des angegebenen Zeitraums die Site besucht haben. Es wird derselbe valid_users-Filter wie bei den Anmeldungen verwendet (inaktive, gesperrte und stummgeschaltete Benutzer werden ausgeschlossen). Benutzer im anonymen Modus sind enthalten, Benutzer ohne Konto jedoch nicht.
{
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,
}
Mitwirkende Benutzer
Die Anzahl der gültigen Benutzer, die innerhalb des angegebenen Zeitraums eine Aktion ausgeführt haben (Thema erstellt, Beitrag verfasst, Liked, etc.). Wenn Chat aktiviert ist, werden auch Benutzer gezählt, die Chat-Nachrichten gesendet oder Chat-Reaktionen hinzugefügt haben.
{
last_day: participating_users_count(1.day.ago),
"7_days": participating_users_count(7.days.ago),
"30_days": participating_users_count(30.days.ago),
}
Die vollständige Implementierung befindet sich in discourse/lib/statistics.rb.
Likes
Die Gesamtzahl der Likes, die alle Themen und Beiträge innerhalb des angegebenen Zeitraums erhalten haben.
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,
}
Besucher und EU-Besucher
Wenn die Site-Einstellung „EU-Besucherstatistiken anzeigen" aktiviert ist, zeigt die Über-Seite auch geschätzte Besucherzahlen (gesamt und basierend auf der EU) an. Diese werden berechnet, indem Daten zu Besuchen angemeldeter Benutzer mit geschätzten anonymen Besuchern basierend auf Seitenaufrufverhältnissen kombiniert werden.
Für die vollständige Berechnung siehe die Methoden
visitorsundeu_visitorsin discourse/lib/statistics.rb.
Chat-Nachrichten
Die Anzahl der Chat-Nachrichten, die über alle Chat-Kanäle gesendet wurden. Wenn Chat aktiviert ist, werden auch folgende Statistiken erfasst: Chat-Benutzer (unterschiedliche Benutzer, die Nachrichten gesendet haben) und Chat-Kanäle (offene Kanäle).
Diese Statistiken werden vom Chat-Plugin als Plugin-Statistiken über register_stat in plugins/chat/plugin.rb registriert. Die zugrunde liegenden Abfragen befinden sich in plugins/chat/lib/chat/statistics.rb.
