Migración de funcionalidad a medida a Discourse (Crítica de escritura)

Esta es una pregunta sobre hasta qué punto es posible personalizar la funcionalidad de Discourse y qué magnitud tendrá el trabajo.

Soy parte del equipo técnico de una organización de escritores profesionales de ciencia ficción, que funciona principalmente alrededor de un software de foro creado por un fundador que ya no está. El sistema actual se ejecuta sobre una instalación antigua de ASP.NET Core, an open-source web development framework | .NET Server y estamos muy interesados en migrar a otra plataforma.

Una de las funciones más populares del software es la de crítica de historias. Los usuarios pueden subir un documento con título y recuento de palabras. Hay una página específica que muestra todas las historias que buscan retroalimentación. El software incluye una pequeña gamificación: subir una historia inicia automáticamente un hilo de discusión, y cualquier persona que publique una respuesta de más de 750 caracteres recibe puntos. Cuando un usuario ha recibido suficientes respuestas, puede impedir que otros descarguen el archivo.

En la página de descarga de historias, junto al nombre de cada usuario, se puede ver la cantidad de puntos de crítica que ha ganado y la cantidad que han recibido sus historias. Se supone que deben mantenerse aproximadamente equilibrados, pero todo se basa en el honor; hasta donde sé, nadie ha sido advertido por recibir críticas sin dar ninguna. Todo funciona bastante bien (excepto la obsoleta y problemática infraestructura tecnológica, como se mencionó arriba).

Los usuarios de larga data a veces han acumulado una impresionante cantidad de créditos, y nos interesa mucho migrarlos a la nueva plataforma en lugar de borrar las puntuaciones altas de todos.

Mi pregunta es: ¿qué tan sencillo será incorporar una funcionalidad como esta en un foro de Discourse? ¿Es probable que esté dentro del alcance de un plugin personalizado, o necesitaríamos una aplicación separada que interactúe con Discourse mediante la API? Agradecería cualquier orientación que puedan ofrecer.

4 Me gusta

Eso debería ser factible en un plugin. Los puntos podrían almacenarse como un campo personalizado asociado a los temas, las publicaciones y/o los usuarios.

Algunas preguntas para aclarar el funcionamiento:

¿Esos puntos se basan únicamente en la longitud de la respuesta?

¿Cómo se determina cuándo es “suficiente”?

Asumo que “el archivo” se refiere a la historia. ¿Necesitan realizar una acción explícita? Es decir, ¿hay un botón “impedir que la gente descargue el archivo” que se desbloquea al alcanzar “suficientes respuestas”?

¿Cómo se determina el número (de puntos?) que recibe una historia?

5 Me gusta

¡Gracias por responder!

Cualquier respuesta superior a 750 caracteres recibe puntos (es posible publicar un mensaje que no sea una crítica en un hilo de crítica incluyendo las palabras “Esto no es un mensaje de crítica”, pero creo que nunca he visto que se utilice). Si un autor publica un mensaje de más de 750 caracteres en su propio hilo de crítica, eso no debería generar ningún punto.

Lo determina el autor de la historia. Ellos pueden decidir cuándo han recibido suficiente retroalimentación sobre su obra.

Sí, el archivo es la historia (un documento de Word, un archivo RTF u otro formato). Hay un botón que el autor puede pulsar en cualquier momento para desactivar futuras descargas. Pueden pulsarlo incluso antes de que alguien haya descargado el archivo si cambian de opinión sobre compartirlo.

En lugar de intentar resumirlo, aquí está la sentencia SQL:

CASE WHEN WordCount < 1001 THEN 0.5 
 WHEN WordCount BETWEEN 5000 AND 9999 THEN 1.5 
 ELSE Round([WordCount] / 10000, 0) + 1 END

En la práctica, la gente rara vez sube una historia de más de 10 mil palabras.

3 Me gusta

Como Richard dijo, en un plugin es posible cualquier cosa. Lo que propones probablemente requiera unas pocas horas de trabajo. Podría haber algunos atajos para ajustarse a tu presupuesto. Las insignias personalizadas también podrían ayudar. Sin duda, podrías desarrollar el nuevo plugin y luego importar los datos a él durante la migración.

No confundas duplicar el sistema antiguo con crear el mejor.

Podrías utilizar el plugin resuelto o las etiquetas para desactivar el tiempo de revisión.

Si todo tu sistema es a medida, un importador personalizado suele costar alrededor de 1500 dólares, y probablemente necesitarías casi esa misma cantidad adicional para el plugin necesario.

6 Me gusta

También podrías dejar de distinguir entre los créditos de la historia y los de la crítica, y simplemente reutilizar la función “Me gusta” de Discourse (compartir corazones) para compartir créditos. Esto haría que la migración y la implementación fueran bastante sencillas. Pero ¿podría estar perdiendo la ventaja de separar los créditos?

2 Me gusta

La idea es que devuelvas algo a la comunidad. Si otras personas leen tu trabajo y te dan retroalimentación sobre cómo mejorarlo, tú también deberías leer el trabajo de otros y darles retroalimentación. Sería genial que eso pudiera monitorearse mediante alguna función integrada de Discourse, pero no veo cómo hacerlo.

3 Me gusta

Puedes ejecutar consultas más detalladas sobre los “me gusta” que reciben los usuarios. Por ejemplo, podrías distinguir entre los “me gusta” que reciben por publicar historias o por compartir comentarios, consultando los “me gusta” en la publicación inicial y en las publicaciones posteriores dentro de una categoría de historias.

Luego, podrías diseñar insignias (junto con títulos de usuario y etiquetas) que se otorguen al alcanzar ciertos números.

2 Me gusta

El problema es que, según mi comprensión, los “me gusta” son una forma de demostrar la popularidad de una publicación, pero el sistema que estoy intentando migrar sirve para monitorear si los usuarios han cumplido con un nivel básico de esfuerzo. Por lo tanto, si fuera posible que cualquier publicación en un hilo de historia que contenga más de cierto número de caracteres y que no haya sido escrita por el autor de la historia recibiera automáticamente un “me gusta” una sola vez, eso funcionaría para nuestro sistema. Sin embargo, eso no parece encajar bien con la forma en que funcionan los “me gusta”.

2 Me gusta