هذا دليل مرجعي يصف كيفية حساب الإحصائيات الموجودة في صفحة
/about، وأين يمكن العثور على كود Ruby الخاص بكل إحصائية.
مستوى المستخدم المطلوب: جميع المستخدمين
إحصائيات صفحة “حول”
جميع مواقع Discourse تحتوي على صفحة /about مدمجة (على سبيل المثال، إليك صفحة “حول” الخاصة بـ Meta)، والتي تتضمن قائمة بالإداريين والمراقبين للموقع بالإضافة إلى بعض الإحصائيات حول الموقع نفسه.
تشمل هذه الإحصائيات جميع المستخدمين، بما في ذلك حسابات الإداريين والمراقبين. كما قد تشمل بعض الإحصائيات الحسابات المجهولة (إذا كانت مفعلة على الموقع).
إذا كانت إعدادة “مشاركة إحصائيات مجهولة الهوية” مفعلة (افتراضيًا، هذه الإعدادة مفعلة)، فإن “إحصائيات الموقع” في صفحة /about ستُعرض كملف JSON يمكن استرجاعه من /about.json.
إذا كان الموقع عامًا، فستكون صفحة /about مع هذه الإحصائيات متاحة للجمهور أيضًا.
يقع كود Ruby الخاص بالإحصائيات الأساسية في: discourse/lib/statistics.rb. أما نموذج
Statالذي ينسق الإحصائيات الأساسية وإحصائيات الإضافات فيوجد في discourse/app/models/stat.rb.
فيما يلي وصف لكيفية حساب كل من هذه الإحصائيات.
المواضيع
عدد المواضيع التي تم إنشاؤها خلال الإطار الزمني المذكور. لا تشمل هذه الإحصائية المواضيع غير المدرجة أو الرسائل الشخصية.
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,
}
المنشورات
عدد المنشورات التي تم إنشاؤها خلال الإطار الزمني المذكور. تشمل هذه الإحصائية الرسائل الشخصية ويتم احتسابها كمنشورات عادية.
{
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,
}
التسجيلات
عدد المستخدمين الصالحين الذين قاموا بإنشاء حسابات جديدة خلال الإطار الزمني المذكور. المستخدم “الصالح” هو مستخدم حقيقي نشط، غير معلق، وغير صامت. إذا كانت إعدادة “يجب الموافقة على المستخدمين” مفعلة، يتم احتساب المستخدمين المعتمدين فقط.
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,
}
يُعرّف المستخدم
الحقيقيهنا: discourse/app/models/user.rb — حيث يستبعد مستخدمين النظام/الروبوت وحسابات الظل للمستخدمين المجهولين.
المستخدمين النشطين
عدد المستخدمين الصالحين الذين زاروا الموقع خلال الإطار الزمني المذكور. تستخدم نفس فلتر valid_users المستخدم في التسجيلات (تستبعد المستخدمين غير النشطين والمعلقين والصامتين). تشمل مستخدمي الوضع المجهول، لكنها لا تشمل المستخدمين الذين لا يملكون حسابًا.
{
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,
}
المستخدمين المشاركين
عدد المستخدمين الصالحين الذين قاموا بإجراء ما (إنشاء موضوع، منشور، إعجاب، إلخ) خلال الإطار الزمني المذكور. إذا كانت خاصية الدردشة مفعلة، يتم احتساب المستخدمين الذين أرسلوا رسائل دردشة أو أضافوا تفاعلات للدردشة أيضًا.
{
last_day: participating_users_count(1.day.ago),
"7_days": participating_users_count(7.days.ago),
"30_days": participating_users_count(30.days.ago),
}
التطبيق الكامل موجود في discourse/lib/statistics.rb.
الإعجابات
إجمالي عدد الإعجابات التي تلقاها جميع المواضيع والمنشورات خلال الإطار الزمني المذكور.
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,
}
الزوار وزوار الاتحاد الأوروبي
عند تفعيل إعدادة “عرض إحصائيات زوار الاتحاد الأوروبي”، ستعرض صفحة “حول” أيضًا تقديرات لعدد الزوار (الإجمالي وزوار الاتحاد الأوروبي). يتم حساب هذه الأرقام من خلال دمج بيانات زيارة المستخدمين المسجلين مع تقديرات الزوار المجهولين بناءً على نسب عرض الصفحات.
راجع طريقتي
visitorsوeu_visitorsفي discourse/lib/statistics.rb للحصول على تفاصيل الحساب الكامل.
رسائل الدردشة
عدد رسائل الدردشة المرسلة عبر جميع قنوات الدردشة. عند تفعيل الدردشة، يتم تسجيل الإحصائيات التالية أيضًا: مستخدمو الدردشة (مستخدمون متميزون أرسلوا رسائل) وقنوات الدردشة (القنوات المفتوحة).
تُسجل هذه الإحصائيات كإحصائيات إضافية بواسطة إضافة الدردشة عبر register_stat في plugins/chat/plugin.rb. توجد الاستعلامات الأساسية في plugins/chat/lib/chat/statistics.rb.
