El algoritmo de clasificación en caliente incorporado es muy simple y podría no ser adecuado para diferentes casos de uso. Por mi comprensión básica de la base de código de Discourse, actualmente no hay configuraciones del sitio visibles para el usuario ni un punto de inyección de complemento apropiado para personalizar el algoritmo de clasificación en caliente. Hay un evento topic_hot_scores_updated, pero se llama después de que se actualizan las puntuaciones, lo que sirve para notificación sin la capacidad de anular las puntuaciones en caliente incorporadas. Hay dos configuraciones del sitio, hot_topics_gravity y hot_topics_recent_days, pero tienen hidden: true establecido y no son visibles en la interfaz de administración.
Estamos considerando escribir un complemento para reemplazar el algoritmo de puntuación en caliente incorporado. ¿Qué enfoque sería mejor en términos de compatibilidad y facilidad para actualizar Discourse en el futuro? Algunas de mis ideas se enumeran a continuación:
- Hacer monkey-patch a
TopicHotScorey actualizar la base de datos de acuerdo con nuestro algoritmo personalizado. - Crear una tabla separada para almacenar las puntuaciones en caliente de los temas y ejecutar un trabajo en segundo plano separado para actualizarlas. Agregar otra ruta (en lugar de /hot) para nuestra lista de temas populares personalizada.
- ¿O tal vez la base de código de Discourse podría mejorarse para soportar tal caso de uso?