Migrando funcionalidade personalizada para Discourse (Crítica de escrita)

Esta é uma pergunta sobre o quanto é possível personalizar a funcionalidade do Discourse e quão grande será o trabalho envolvido.

Faço parte da equipe de tecnologia de uma organização de escritores profissionais de ficção científica, que funciona principalmente em torno de um software de fórum desenvolvido por um fundador que já não faz mais parte do grupo. O sistema atual roda em uma infraestrutura instável de ASP.NET Core, an open-source web development framework | .NET Server e estamos ansiosos para migrar para uma plataforma diferente.

Uma das funcionalidades mais populares do software é a função de crítica de histórias. Os usuários podem fazer upload de um documento com título e contagem de palavras. Existe uma página específica que mostra todas as histórias que estão atualmente buscando feedback. O software possui uma pequena gamificação integrada: ao fazer upload de uma história, automaticamente é iniciado um tópico de discussão, e qualquer pessoa que postar uma resposta com mais de 750 caracteres ganha pontos. Quando um usuário recebe respostas suficientes, pode impedir que outras pessoas baixem o arquivo.

Na página de download da história, ao lado do nome de cada usuário, é possível ver a quantidade de pontos de crítica que ele acumulou e a quantidade que suas histórias receberam. A ideia é que esses números se mantenham aproximadamente equilibrados, mas tudo funciona no sistema de confiança; até onde sei, ninguém jamais foi advertido por receber críticas sem oferecer nenhuma. Tudo funciona muito bem (exceto pela infraestrutura tecnológica obsoleta e instável, conforme mencionado acima).

Usuários de longa data às vezes acumularam um número impressionante de créditos, e estamos bastante interessados em migrar esses dados para a nova plataforma, em vez de apagar as pontuações de todos.

Minha pergunta é: quão simples será incorporar funcionalidades como essa em um fórum Discourse? É provável que isso esteja dentro do escopo de um plugin personalizado, ou precisaríamos de um aplicativo separado que interaja com o Discourse por meio da API? Agradeceria qualquer orientação que possam oferecer.

4 curtidas

Isso deve ser viável em um plugin. Os pontos poderiam ser mantidos como um campo personalizado junto com os tópicos, as publicações e/ou os usuários.

Algumas perguntas para esclarecer a funcionalidade:

Esses pontos são baseados exclusivamente no comprimento da resposta?

Como é determinado o que é “suficiente”?

Suponho que “o arquivo” seja a história? Eles precisam tomar uma ação explícita? Ou seja, existe um botão “impedir pessoas de baixar o arquivo” que é desbloqueado por “respostas suficientes”?

Como é determinado o número (de pontos?) que uma história recebe?

5 curtidas

Obrigado pela resposta!

Qualquer resposta com mais de 750 caracteres recebe pontos (é possível fazer uma postagem não-crítica em um tópico de crítica incluindo as palavras “Esta não é uma postagem de crítica”, mas não acho que já tenha visto isso ser usado). Se um autor fizer uma postagem com mais de 750 caracteres em seu próprio tópico de crítica, isso não deve gerar pontos.

Pelo autor da história. Eles podem decidir quando receberam feedback suficiente sobre sua história.

Sim, o arquivo é a história (um documento do Word, um arquivo RTF ou outro formato). Há um botão que o autor pode pressionar a qualquer momento para desabilitar novos downloads. Eles podem pressioná-lo antes que alguém tenha baixado o arquivo, se tiverem dúvidas sobre compartilhá-lo.

Em vez de tentar resumir, aqui está a instrução SQL:

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

Na prática, as pessoas raramente fazem upload de uma história com mais de 10 mil palavras.

3 curtidas

Como Richard disse, tudo é possível em um plugin. O que você está propondo provavelmente levaria algumas horas de trabalho. Poderia haver alguns atalhos para se adequar ao seu orçamento. Distintivos personalizados também podem ajudar. Você certamente pode criar o novo plugin e depois importar os dados para ele durante a migração.

Não confunda duplicar o sistema antigo com criar o melhor sistema.

Você pode usar o plugin resolvido ou tags como forma de desativar o tempo de revisão.

Se todo o seu sistema for sob medida, um importador personalizado geralmente custa em torno de US$ 1500, e você provavelmente precisaria de quase o mesmo valor adicional para o plugin necessário.

6 curtidas

Você também poderia parar de distinguir entre créditos de história e de crítica e simplesmente reaproveitar o recurso ‘like’ do Discourse (compartilhar corações) como compartilhamento de créditos. Isso tornaria a migração e a implementação bastante diretas. Mas talvez eu esteja perdendo a vantagem de separar os créditos?

2 curtidas

A ideia é que você esteja retribuindo à comunidade. Se outras pessoas estão lendo seu trabalho e fornecendo feedback sobre como melhorá-lo, você também deve ler o trabalho de outros e dar a eles feedback. Seria ótimo se isso pudesse ser monitorado usando algum recurso integrado do Discourse, mas não vejo como.

3 curtidas

Você pode executar consultas mais detalhadas sobre os curtidas que os usuários recebem. Por exemplo, você pode distinguir entre as curtidas recebidas por publicar histórias ou por compartilhar feedback, consultando as curtidas nas postagens iniciais e nas subsequentes em uma categoria de histórias.

Você pode então projetar emblemas (juntamente com títulos de usuário e flairs) que serão concedidos ao atingir certos números.

2 curtidas

O problema é que, pelo que entendo, os likes são uma forma de demonstrar a popularidade de um post, mas o sistema que estou tentando migrar serve para monitorar se os usuários atingiram um nível básico de esforço. Então, se fosse possível que qualquer post em um thread de história que contivesse mais de um certo número de caracteres e não fosse do autor da história fosse curtido automaticamente uma única vez, isso funcionaria para o nosso sistema. Mas isso não parece ser uma boa correspondência com a forma como os likes funcionam.

2 curtidas