خوارزمية الترتيب الساخن المضمنة بسيطة جدًا وقد لا تكون مناسبة لحالات الاستخدام المختلفة. من فهمي الأساسي لقاعدة بيانات Discourse، لا يوجد حاليًا إعداد موقع يواجه المستخدم أو نقطة حقن مناسبة للإضافات (plugin injection point) لتخصيص خوارزمية الترتيب الساخن. يوجد حدث واحد هو topic_hot_scores_updated ولكنه يُستدعى بعد تحديث الدرجات، مما يخدم غرض الإشعار دون القدرة على تجاوز الدرجات الساخنة المضمنة. هناك إعدادان للموقع هما hot_topics_gravity و hot_topics_recent_days ولكنهما مضبوطان على hidden: true وغير مرئيين في واجهة مسؤول النظام (admin UI).
نحن نفكر في كتابة إضافة (plugin) لاستبدال خوارزمية الدرجات الساخنة المضمنة. ما هو النهج الأفضل من حيث التوافق وسهولة ترقية Discourse في المستقبل؟ بعض أفكاري مدرجة أدناه:
- استخدام التصحيح السريع (Monkey-patch) لـ
TopicHotScoreوتحديث قاعدة البيانات وفقًا لخوارزميتنا المخصصة. - إنشاء جدول منفصل لتخزين الدرجات الساخنة للمواضيع وتشغيل مهمة خلفية منفصلة لتحديثها. إضافة مسار آخر (بدلاً من /hot) لقائمة المواضيع الساخنة المخصصة لدينا.
- أو ربما يمكن تحسين قاعدة بيانات Discourse لدعم حالة الاستخدام هذه؟