Estamos buscando saber se há alguma maneira de contornar essa limitação. Um pouco de contexto:
Nosso grupo é 99,9% acessível apenas por aqueles com a função de “Membros”. Temos alguns grupos abertos a todos para discussão pública ou ajuda/suporte. Como um grupo de membros pagantes, seria incrível poder reconhecer a atividade dentro desses grupos privados, já que, de nossos mais de 1,3 milhão de posts, a maioria deles está dentro dessas agrupações.
Existe alguma solução alternativa ou configuração que possa permitir isso?
O motivo disso é que qualquer insígnia que referencia posts executa suas consultas na tabela badge_posts. Essa tabela inclui apenas posts que estão em categorias acessíveis a todos os usuários.
Sim, consigo ver como isso seria um problema. Uma possível solução alternativa seria reescrever as consultas de insígnias do seu site para usar a tabela posts em vez da tabela badge_posts. Isso causaria um problema para usuários que não têm acesso às categorias protegidas do seu site caso tentassem visualizar os posts associados às insígnias dos seus usuários, mas parece que isso não afetaria muitos usuários do seu site. Possivelmente, existem outras maneiras de lidar com isso.
Alterar as consultas de emblemas no seu site para usar a tabela posts em vez da tabela badge_posts seria bastante direto. No entanto, uma correção adequada para o problema pode exigir uma mudança maior. Por exemplo, você não gostaria que emblemas fossem concedidos para postagens na sua categoria de equipe ou para qualquer outra categoria onde haja preocupação com o vazamento do título de um tópico.
Estou pensando se uma nova view do Postgres poderia ser adicionada por meio de um plugin para sites com configuração semelhante à do seu. Essa view poderia então ser substituída nas consultas de emblemas no lugar da view badge_posts.
Se essa rota fosse uma opção, essa visualização poderia incluir posts de grupos totalmente públicos? Tipo o que temos agora, mais qualquer grupo visível para um grupo específico? No nosso caso, “Membros”.
Isso seria a solução definitiva para grupos de membros!
Vamos ver o que os engenheiros do Discourse pensam sobre essa abordagem, ou se têm outras sugestões. Esta não é a primeira vez que o problema é relatado. Seria bom chegar a uma solução geral para o problema, mas uma solução eficaz que funcione para muitos sites pode ser mais complexa do que o que estou sugerindo.
Tenho analisado as consultas de emblemas existentes para ter uma ideia de quais consultas visam postagens na tabela badge_posts ou utilizam algum outro método para excluir postagens de categorias protegidas de serem utilizadas.
As seguintes consultas de emblemas visam postagens específicas e não serão concedidas por atividades em categorias privadas:
Editor
Primeira Bandeira
Primeiro Curtir
Primeiro Link
Primeira Citação
Primeiro Compartilhamento
Primeiro Emoji
Primeira Menção
Primeira Onebox
Primeira Resposta por E-mail
Leitor
Editor de Wiki
Ótimo Compartilhamento
Bom Compartilhamento
Helpdesk
Bom Compartilhamento
Bem-vindo
Link Famoso
Ótima Resposta
Ótimo Tópico
Boa Resposta
Bom Tópico
Link Quente
Boa Resposta
Bom Tópico
Link Popular
As seguintes emblemas não consultam postagens específicas e serão concedidas por atividades em categorias privadas:
Licenciado
Autobiógrafo
Certificado
Novo Usuário do Mês
Leia as Diretrizes
Admirado
Campeão
Loucamente Apaixonado
Devoto
Empático
Aficionado
Aniversário
Campanhista
Dá de Volta
Amor Superior
Respeitado
Apreciado
Entusiasta
Fora de Amor
Promotor
Obrigado
Líder
Regular
Básico
Membro
Equipe
Foto de Perfil
Algo semelhante a isso já é coberto pelos emblemas Apreciado (1 curtida em 20 postagens) e Respeitado (2 curtidas em 100 postagens). Algumas variações dessas consultas poderiam ser adicionadas. Por exemplo, 10 curtidas em 20 postagens. Um emblema concedido por tópicos super curtidos também seria uma boa ideia — funcionaria como o equivalente ao emblema Ótimos Tópicos. Por exemplo, poderia ser concedido quando um usuário criar 10 tópicos que receberam 10 curtidas.
Não tenho certeza se faria sentido adicionar um emblema concedido por atividade em uma única postagem ou tópico que não contenha um link para a postagem. Por exemplo, um emblema alternativo de Primeira Curtida poderia ser criado com o seguinte SQL:
SELECT pa1.user_id, pa1.created_at granted_at
FROM (
SELECT pa.user_id, min(pa.id) id
FROM post_actions pa
JOIN posts p on p.id = pa.post_id
WHERE post_action_type_id = 2
GROUP BY pa.user_id
) x
JOIN post_actions pa1 on pa1.id = x.id
Para que a consulta funcione, é necessário usar o gatilho “Atualizar diariamente” em vez da consulta “Quando um usuário age em uma postagem”. Na página de Emblemas, os usuários que receberam o emblema serão exibidos juntamente com o momento em que o emblema foi concedido. Não haverá um link para a postagem pela qual o emblema foi concedido:
Esse tipo de abordagem faz sentido para sites que possuem principalmente categorias protegidas? Se fizer, poderia ser usado para duplicar algumas das consultas que atualmente visam a tabela badge_posts.
Obrigado por me lembrar disso! Vou começar a montar uma lista de distintivos que acho que poderiam ser úteis e que não expõem nenhuma postagem de categorias protegidas.
Começamos nosso fórum com login obrigatório e, recentemente, adicionamos algumas categorias públicas, enquanto restringimos o acesso às categorias existentes ao trust_level_0.
Portanto, para os usuários existentes, nada mudou em relação à forma como acessam o fórum, mas todos os emblemas da lista acima foram revogados. Não temos um fórum grande, mas pelas respostas que recebemos dos usuários, fica claro que o sistema de emblemas parece estar completamente quebrado. Com essa configuração, praticamente tenho que desativá-lo.
Acho que seria necessário comunicar de forma mais clara em algum lugar nas configurações que os emblemas existentes serão revogados quando você optar por restringir categorias. Para nós, isso veio do nada.
De forma mais geral, não entendo as prioridades. Tanto as permissões de categoria quanto o sistema de emblemas são apresentados como recursos centrais do Discourse. Mas é difícil usá-los juntos da maneira como estão. A vantagem de ter emblemas apenas em postagens acessíveis ao público parece ser que outros usuários podem ver para qual postagem um emblema foi concedido? Para mim, isso não parece ser um recurso tão importante em comparação. Por que não remover esses links visíveis e revelar as postagens relacionadas apenas para cada usuário em seus próprios emblemas?
[quote=“simon, post:12, topic:157300”]Os seguintes emblemas consultam publicações específicas e não serão concedidos por atividade em categorias privadas
[/quote]
ai! OK, isso basicamente significa que toda a infraestrutura de emblemas é bastante inútil em uma comunidade com muitos espaços privados…
[quote=“manuel, post:17, topic:157300”]Tanto as permissões de categoria quanto o sistema de emblemas são comunicados como recursos centrais do Discourse. Mas você mal pode usá-los juntos como está.
[/quote]
concordo plenamente.
Existe algum tipo de plugin ou novas configurações (nos últimos seis anos) para tornar os emblemas viáveis em uma comunidade majoritariamente privada?
Isso parece estar relacionado ao que surgiu em outro tópico sobre facilitar a orientação de membros da comunidade entre espaços abertos (públicos) e fechados (graus variados de «privados»), incluindo mensagens pessoais.
Lidar com a natureza semipública da web e públicos semiprivados que se sobrepõem é um grande desafio no mundo social online. Não é intuitivo. A maioria das comunidades terá dificuldades em como garantir que as pessoas entendam o quão público/privado cada parte é. Pode fazer sentido para o Discourse assumir que essa mistura de público e privado(s) será o padrão para a maioria das comunidades e ver como pode facilitar a navegação para os membros da comunidade?
Sou novo nesta conversa, embora ache que um alternador (toggle) nas Configurações de Emblemas seria o mais fácil. Deixá-lo desativado por padrão, ativá-lo para consultar todos os fóruns (incluindo privados) para emblemas de engajamento.
Se for deixado aberto para um hook que um plugin/componente possa usar, um poderia vir mais tarde para dar uma permissão por categoria para que os emblemas sejam contados ali.
Acho que o problema com os emblemas que atualmente são concedidos apenas em categorias públicas é que eles se referem à postagem no tópico para o qual foram concedidos, e você não gostaria que isso fosse público se o tópico for privado.