O que ambas as postagens têm em comum é que existem reações, mas o número de curtidas não parece estar disponível como a contagem em actions_summary.
Dependendo se você reagiu à postagem ou não, id: 2 está ausente no actions_summary, ou se você não reagiu, você pode ver que a contagem está ausente. Se eu entendi corretamente, id: 2 é incluído se você puder reagir (can_act) ou se count>0.
Analisando o json da postagem example2 \u003chttps://meta.discourse.org/posts/1404583.json\u003e onde dois usuários reagiram, essa contagem está faltando:
Usuário que não reagiu \u003cbr\u003e can_act verdadeiro
Neste caso, a count: 2 está faltando para ambos os usuários. Para o usuário que já reagiu, isso resulta no id: 2 faltando completamente. Isso parece explicar por que as reações não são mostradas para o usuário que reagiu, embora as reações existam.
Nesta postagem, a contagem está disponível e as reações aparecem como esperado.
Eu não sei quantas postagens aqui no Meta são afetadas por isso ou se outros fóruns também são afetados. E eu não posso fornecer nenhuma etapa sobre por que os dados estão faltando. Eu só posso relatar que para algumas postagens, as reações não são exibidas em celulares e são exibidas apenas parcialmente em laptops, e a causa para isso parece estar relacionada aos dados ausentes.
Você conseguiu descobrir como isso aconteceu? Eu só encontrei exemplos de 2023 e do início de 2024. Então eu me perguntei se algo com os dados antes de todas as reações serem contadas como curtidas é diferente de depois dessa mudança.
Então eu tentei o que acontece se eu usar uma reação que é excluída da contagem como curtida, mas então “can_act” ainda é verdadeiro mesmo que “can_undo” para current_user_reaction seja falso.
Isso ocorre porque discourse_reactions_like_sync_enabled está definido como false. Isso foi feito intencionalmente pela migração de maio de 2024 para evitar a interrupção de dados existentes.
Quando essa configuração está desativada, o ReactionLikeSynchronizer não é executado. Este sincronizador é responsável por:
Criar registros de PostAction (curtida) para reações
Atualizar posts.like_count para refletir as reações
Sem a execução da sincronização:
Reações existem em discourse_reactions_reaction_users
Mas não há registros correspondentes de PostAction
E posts.like_count permanece em 0
Sua intuição sobre o momento está correta - as postagens de 2023/início de 2024 tiveram reações adicionadas quando essa sincronização não estava ativa, então sua like_count nunca foi atualizada. A lógica do serializador antigo então omitiu a ação de curtir inteiramente quando tanto count = 0 QUANTO can_act = false (janela de desfazer expirou).
A correção não corrige a discrepância subjacente dos dados - ela simplesmente garante que a interface do usuário exiba as reações corretamente, mesmo quando os dados de PostAction/like_count não estão sincronizados. Em sites onde discourse_reactions_like_sync_enabled = false, a existência de reações independentemente dos registros de PostAction é o comportamento esperado.