Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Analisa publicações anteriores do mesmo usuário ao publicar novo conteúdo ou comentário #1366

Merged
merged 6 commits into from
Apr 14, 2023

Conversation

aprendendofelipe
Copy link
Collaborator

@aprendendofelipe aprendendofelipe commented Apr 10, 2023

Além do ganho de TabCoins ser baseado nas avaliações dos conteúdos já publicados, a permissão para publicar também considera os conteúdos já publicados. Com isso o usuário que, em média, tenha mais de 40% das últimas publicações classificadas como não relevantes será avisado para excluir seus conteúdos recentes mal avaliados antes de prosseguir com a publicação.

O valor considerado é a média, então conteúdos bem avaliados ou um mal avaliados podem compensar os com qualificações opostas.

Por exemplo, para um usuário que já possua mais de 10 publicações, se o saldo das últimas 10, somando todas as qualificações, der um número menor do que quatro negativo (-5 ou mais negativo ainda), então o usuário terá que excluir as que estiverem levando essa média para baixo.

Já se a soma estiver acima de cinco positivo (6 em diante), então o usuário já começa a ganhar TabCoins no momento da publicação.

Se a média estiver entre os dois valores, então o usuário só ganha ou perde os TabCoins das qualificações recebidas.

Os valores são computados separadamente para conteúdos "root" ou "child", então o usuário pode ter um prestígios diferentes para cada tipo de publicação.

31225e1

  • Corrige a árvore de testes de 'TabCoins' que estava dentro do nó 'User with "update:content:others" feature', quando o correto era o nó 'Default user'.

8fd204a

  • No momento da publicação, computa a média das qualificações dos últimos 10 conteúdos ("child" ou "root" de acordo com a publicação atual).
  • A média considera apenas os votos positivos e negativos, ou seja, não considera o TabCoin que o conteúdo já ganha no momento da criação.
  • O saldo é dividido pela quantidade de publicações (no máximo 10).
  • Apenas publicações com mais de 2 dias são consideradas. Com isso um usuário recente não ganhará TabCoins nas suas primeiras publicações (ganhará apenas os de qualificação). E também o saldo sempre irá considerar um valor já consolidado, pois publicações recentes ainda podem estar recebendo qualificações.
  • No momento da exclusão do conteúdo é consultada a tabela com o balanço de operações para saber qual foi o valor ganho no momento dessa publicação específica e calcular o valor a ser debitado devido à exclusão.
  • Cria a função orchestrator.createPrestige para auxiliar nos testes da funcionalidade.
  • Adequa os testes existentes e cria os novos testes necessários.

772622f

  • Apenas corrige um nome de teste que estava duplicado

d0b8d00

  • Bloqueia a possibilidade de alteração do parent_id e adequa os testes.

d66a049

  • Bloqueia a possibilidade de alteração do status de conteúdo de published para draft e adequa os testes.

9e13135

  • Faz a consulta do histórico das publicações do usuário ocorrer dentro da mesma transação de publicação do conteúdo.

Issues relacionadas

@vercel
Copy link

vercel bot commented Apr 10, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
tabnews ✅ Ready (Inspect) Visit Preview Apr 10, 2023 6:47am

@aprendendofelipe
Copy link
Collaborator Author

O que acham da gente enviar para produção? Acredito que vai melhorar bastante o que é discutido nesta publicação.

Não vai resolver totalmente, pois achei melhor começar com algo menos agressivo na hora de impedir a publicação por quem tem conteúdos mal qualificados:

image

Eu acho que podemos deixar ainda mais exigente logo que os usuários se adaptarem a essa alteração, pois assim filtramos melhor os conteúdos menos relevantes.

E o resultado desse PR não deve ser uma diminuição de TabCoins geradas, pois ele irá aumentar consideravelmente os ganhos de quem produz conteúdo bem qualificado. E esses TabCoins devem ser distribuídos para os demais conteúdos e usuários com melhores critérios (em teoria).

Sobre a Breaking Change na API, eu fiz essa publicação na segunda feira cedo, mas acho que o dia/horário acabou deixando ela sem muita visão.

@filipedeschamps
Copy link
Owner

Eita!! Eu não vi esse PR!!! Fiquei bastante doente durante a semana (suspeita de pneumonia), mas agora já estou recuperando 😍 e topo total enviar para produção! Estamos no melhor estágio para testar implementações que mexem no comportamento e economia do TabNews 🤝

@aprendendofelipe
Copy link
Collaborator Author

Então boraaaaaa!!! 🚀🚀🚀

@aprendendofelipe aprendendofelipe merged commit 5b68c53 into main Apr 14, 2023
6 checks passed
@aprendendofelipe aprendendofelipe deleted the prestige branch April 14, 2023 16:55
@maniero
Copy link

maniero commented Apr 14, 2023

Eu acabei de fazer publicações e não recebi pontuação pela publicação em si. Até onde eu sei estou com saldo positivo. Algo diferente foi commitado também? Pode me dar alguma informação sobre isso? Se precisar posso postar mais informações.

@aprendendofelipe
Copy link
Collaborator Author

Olá @maniero, não ocorreu exatamente o explicado no PR de acordo com a qualificação das suas publicações recentes?

O ganho inicial depende das publicações anteriores estarem avaliadas como relevantes.

Se o que postar hoje for classificado como relevante, então os ganhos serão maiores nas próximas publicações.

Se forem neutros, então só ganha/perde de acordo com os votos nos conteúdos, mas não vai mais ganhar nada no ato de publicar.

Já se muito deles forem negativos, então o usuário será impedido de publicar até que exclua os conteúdos mal avaliados.

Se não foi isso que ocorreu, então dê mais detalhes, por favor 🤝

@maniero
Copy link

maniero commented Apr 14, 2023

Imagino que tenha acesso aos todos completos do meu perfil, até com informação mais consolidada do que eu posso ter.

https://www.tabnews.com.br/maniero

As primeiras publicações que não geraram pontuação (só teve ponto com o like recebido em cada):

https://www.tabnews.com.br/maniero/324e057d-62da-4302-9293-1fde79ea1012
https://www.tabnews.com.br/maniero/9078f746-17c0-4977-b4f9-d719c9c17f12

Todas as anteriores estavam recebendo 2 pontos só pela publicação.

Eu tive alguns posts com dislikes recentemente, poucos e só 1 recebido em cada post, quase certo da mesma pessoa. Mas tive diversos outros posts novos logo depois (acho que uns 15), sem ter negativos (que eu tenha percebido, não há log ou como ver além do saldo), e boa parte deles recebi likes, vários deles. O saldo é para estar extremamente positivo. Até no dia que recebi os dislikes é para estar positivo, depois disso só bem positivo.

Agora postei https://www.tabnews.com.br/maniero/9f500396-cdb3-4961-a8f2-e68079b856f6 e https://www.tabnews.com.br/maniero/8d7a721a-f6a6-453e-b994-3965296d774b sem pontuação.

Estou à disposição se precisar de algo mais, mas acho que tem acesso a mais dados que eu. Veja se é bug ou eu não entendi algo, ou se posso fazer algo.

@hkotsubo
Copy link

Complementando, ao postar este comentário eu só ganhei 1 tabcoin. Pode ter sido coincidência de ter recebido um voto em outro, mas fazendo uma busca rápida não encontrei nada.

@maniero
Copy link

maniero commented Apr 14, 2023

Complementando, ao postar este comentário eu só ganhei 1 tabcoin. Pode ter sido coincidência de ter recebido um voto em outro, mas fazendo uma busca rápida não encontrei nada.

Foi meu like aí :) Você não teve negativos antes, né? Pelo menos que seja fácil perceber, que não teve positivos que automaticamente compensaram. Tá parecendo que todo mundo está sem receber pontos pela publicação, o que pode ser bom, acho que já tem proposta para isso, mas não pode acontecer sem querer, e precisa de outra mudança para não desequilibrar a economia.

@aprendendofelipe
Copy link
Collaborator Author

@maniero e @hkotsubo, antes os ganhos eram mais fáceis mesmo, pois era fixo em 2 TabCoins (no passado já foi 5 e antes 10), mas um valor fixo não faz sentido se quisermos retribuir melhor aos conteúdos de valor concreto.

Então quem publica conteúdos relevantes vai notar um aumento significativo nos ganhos por post futuramente.

E quem continuar publicando conteúdos neutros, não tem problema, mas vai ficar no zero a zero.

Já quem publicava qualquer coisa só para ganhar TabCoins e qualificar os outros conteúdos usando critérios questionáveis, vai ter muito mais dificuldade para manipular as qualificações, pois vai ter que se esforçar para produzir algo que será bem avaliado apenas por quem já publica conteúdo de valor.

Vejam o exemplo na descrição do PR e analisem o saldo dos seus 10 comentários mais recentes (após desconsiderar a janela de dois dias de publicação).

Se uma publicação tem saldo 1, significa que ela recebeu votos positivos e negativos em mesma quantidade, ou seja, ela a princípio é neutra.

O saldo de votos precisa ser de pelo menos 6 votos positivos a mais do que negativos, ou seja, ter um saldo total de 16 TabCoins nesses 10 conteúdos para poder ganhar 1 TabCoin ao publicar.

Note que isso ainda é um ganho extra, pois ganha 1 TabCoins mesmo se a média for de 0.6 votos positivos por conteúdo. Por isso essa exigência deve aumentar quando os usuários se adaptarem ao novo sistema.

A partir daí sobe de 10 em 10, ou seja, se tiver 26 ou mais TabCoins (o que significa 1.6 votos positivos em média), então ganhará 2 TabCoins e assim por diante.

Caso acreditem que a descrição do PR não é suficiente para esclarecer a mudança, nos ajudem a criar uma descrição mais clara. 😉

@aprendendofelipe
Copy link
Collaborator Author

Só complementado, mas também repetindo o que já está na descrição do PR...

O cálculo é separado para conteúdos root e comentários, ou seja, os ganhos com comentários só consideram os comentários anteriores, e os ganhos com conteúdos root são baseados nas qualificações dos conteúdos root anteriores.

@maniero
Copy link

maniero commented Apr 14, 2023

Agora parece mais claro, eu até gosto em parte disso, mas acredito que o resultado será ter menos conteúdo relevante com valor concreto e mais conteúdo curioso, que faz as pessoas "agirem" mais, como acontece em rede social. Vamos ver o que acontece. Obrigado.

Resolvi desenvolver mais o raciocínio para quem sabe avaliarem a situação.

Se a pessoa posta algo sem valor e recebe pontos é ruim, isso não se discute e eu postei várias vezes que acho isso ruim.

Se uma postagem não tem valor mais, não é de todo ruim, não se ganha nada, mas não se tem punição se o post não for popular. O que eu sempre pensei seria algo assim, mas que desse mais valor para likes recebidos, para manter uma economia sustentável. Você recebe mais por conseguir algo popular, é justo, mas não tem punição por não ter alcançado a popularidade. Sou apenas uma voz, mas sou mais favorável a isso, você não se sente como pisando em ovos, não ganhará e não perderá nada.

Se a pessoa perde em posts futuros porque ela postou coisas não muito populares (mas não ruins) não deixa de ser uma punição. Desincentiva a pessoa a postar algo a não ser que seja "lacradora", ou seja, que vá atrair votos, caso contrário ela terá um preço a pagar. Eu percebi isso porque ia responder algo para uma pessoa que colocou algo pra mim, mas se eu fizer isso, provavelmente não terá voto positivo e vai criar uma situação ruim depois.

O que provavelmente vai acontecer, pelo menos comigo, é postar o que eu achar melhor e não me preocupar mais com pontos, porque a punição acontecerá de um jeito ou de outro, a não ser que eu só faça posts "lacradores". O que acontecerá em seguida é eu não votar em mais nada, ou quase. Isso tende acontecer com várias pessoas, e os votos estarão mais concentrados em poucas pessoas que façam os posts só para ganhar likes e só elas votarão em outras coisas. Já pensaram nesse efeito? É o desejado?

@maniero
Copy link

maniero commented Apr 14, 2023

O que acontece se você apagar um post que não tinha recebido pontos por ele dentro desse critério? Não perderá nada porque não ganhou nada com ele ou perderá assim mesmo? Porque se isso acontecer, apagar nunca será bom nesses casos.

Deu uma melhorada no anterior mostrando um cenário possível.

@hkotsubo
Copy link

O que acontece se você apagar um post que não tinha recebido pontos por ele dentro desse critério? Não perderá nada porque não ganhou nada com ele ou perderá assim mesmo? Porque se isso acontecer, apagar nunca será bom nesses casos.

Esse ponto é importante.

Se eu não ganhei pontos ao postar algo, não deveria perder ao apagá-lo.

E se eu receber negativos (e por isso perder pontos), ao apagar eu deveria recuperar os pontos perdidos.

Assim tem-se um incentivo maior para apagar, acredito eu.


Por exemplo, postei e não ganhei nenhum ponto (porque os 10 últimos não têm saldo suficiente).

Recebo um negativo, perco 1 ponto.

Pra não comprometer meu saldo, decido apagar. Mas aí eu perco 2 pontos. Ou seja, nesse processo eu perdi 3 pontos.

Não sei se isso pode fazer com que as pessoas deixem de apagar pra não perder mais pontos (mesmo que isso signifique não poder postar mais). Ou então elas desencanam de vez dos pontos, não conseguindo sair dessa espiral.

Não me entenda mal, acho que isso é um passo importante pra não dar pontos para "obrigado" e "que legal", mas pela experiência de outros sites, posso dizer que toda mudança bem intencionada pode trazer efeitos colaterais que a gente nem imaginava. Ainda mais quando tem a ver com o comportamento dos usuários, que é imprevisível.

De qualquer forma, vejamos como a comunidade se comporta frente às novas regras. Seria interessante depois de algum tempo colher estatísticas antes e depois (pontos ganhos por post/usuário, padrões de votação, etc) pra saber o que melhorou e o que piorou.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants