Grupos Dinâmicos do Discourse

:information_source: Resumo Gerenciar automaticamente a filiação a grupos
:hammer_and_wrench: Link do Repositório https://github.com/communiteq/discourse-dynamic-groups
:open_book: Guia de Instalação Como instalar plugins no Discourse

Recursos

Comunidades Discourse frequentemente precisam automatizar a filiação a grupos com base em condições, como posse de distintivos ou filiação a outros grupos.

Casos de uso comuns incluem:

  • Usuários que não estão no grupo ‘assinantes’

  • Usuários que não estão banidos de postar em Marketplace

  • Usuários no NL0 ou NL1, mas não no NL2

  • Usuários que concluíram o tutorial para novos usuários ou são membros há mais de um ano

  • Usuários que pertencem a cliente_1, cliente_2 ou cliente_3 e não são estagiários

Anteriormente, resolver isso exigia scripts personalizados que sincronizavam os grupos periodicamente. O plugin Dynamic Groups elimina essa necessidade.

Este plugin introduz um campo de expressão booleana nas configurações do grupo, permitindo que administradores definam regras que determinam dinamicamente a filiação ao grupo.

Exemplos:

  • usuários que não estão no grupo ‘assinantes’
    trust_level_0 AND NOT subscribers

  • usuários que não estão banidos de postar em Marketplace
    trust_level_2 AND NOT banned_users

  • usuários que estão no NL0 ou NL1, mas não no NL2
    trust_level_0 AND NOT trust_level_2

  • usuários que concluíram o tutorial para novos usuários ou são membros há mais de um ano
    badge:certified OR badge:anniversary

  • usuários que pertencem ao cliente 1, 2 ou 3 e não são estagiários
    (client_1 OR client_2 OR client_3) AND NOT interns

Configuração

Depois que o plugin for instalado e habilitado, uma nova aba aparecerá na interface de administração do grupo:

Ao inserir ou atualizar a expressão booleana, o sistema levará alguns momentos para popular o grupo com os usuários correspondentes. A partir desse momento, a filiação ao grupo será atualizada automaticamente conforme o status do usuário mudar.

Importante:
Quando uma regra é definida, o grupo é marcado como automático, desabilitando alterações manuais de membros. Para reverter o grupo para gerenciamento manual, basta limpar o campo de expressão. Os membros existentes permanecerão, e você recuperará o controle manual.

28 curtidas

Uau! Trabalho incrível, Richard!

Isso preenche uma grande lacuna no gerenciamento de grupos dentro do Discourse. Totalmente satisfeito e ansioso para usá-lo bastante.

Eu o usarei principalmente para habilitar subgrupos funcionais.

4 curtidas

Definitivamente uma adição bem-vinda aos recursos do Discourse!

2 curtidas

7 postagens foram mescladas em um tópico existente: Apenas a primeira entrada funciona com campos de Multiselect quando o gatilho Usuário entrou pela primeira vez é usado

Olá, obrigado por desenvolver este plugin super útil!

Atualmente, estou usando o Discourse Dynamic Groups para adicionar automaticamente todos os usuários não anônimos a um grupo especial. Minha expressão booleana é:

NOT anonymous_users
Comportamento esperado:
Quando um novo usuário se registra (que não pertence ao grupo anonymous_users), ele deve ser automaticamente adicionado a este grupo, sem qualquer intervenção manual.

Comportamento atual:
Novos usuários registrados não são adicionados imediatamente ao grupo. Eles só são adicionados depois que eu salvo novamente a expressão booleana nas configurações do grupo.
Isso significa que o grupo não é atualizado automaticamente à medida que os usuários se juntam, a menos que eu acione uma sincronização manual.

2 curtidas

Hmm… boa observação. E eu concordo que esse deveria ser o comportamento esperado.

De um ponto de vista técnico, o plugin só reavaliará a participação no grupo em duas condições diferentes:

  1. Quando a expressão booleana nas configurações do grupo é salva
  2. Se um usuário é adicionado ou removido de um grupo mencionado na expressão booleana.

Quando um novo usuário se registra, nenhum dos dois casos ocorre.

Você pode tentar mudar a expressão para trust_level_0 AND NOT anonymous_users e me dizer se isso resolve o problema?

3 curtidas

Olá,

Quando tento usar a expressão

trust_level_0 AND NOT anonymous_users

Recebo o erro:
Unknown keyword, group or badge: 'anonymous_users'

Se eu mudar o nome do grupo para o meu grupo real, por exemplo:

trust_level_0 AND NOT estagiários

Ainda recebo:
Unknown keyword, group or badge: 'estagiários'

Verifiquei duas vezes e estou copiando o nome exclusivo do grupo diretamente da página de administração do grupo, então não há erros de digitação.
Existe algo que eu possa estar perdendo, ou há algo mais que eu precise configurar para que os grupos personalizados sejam reconhecidos na expressão?

4 curtidas

Obrigado por reportar isso.

Ao tentar reproduzir, identifiquei dois bugs e um deles provavelmente te atingiu. Você pode atualizar o plugin para a versão mais recente 59640f1 e ver se isso resolve o problema?

O plugin ainda não lida muito bem com a renomeação de grupos. Se você renomear um grupo, você deve salvar as regras de todos os grupos que dependem dele (apenas insira um espaço após a expressão booleana e remova-o novamente para habilitar o botão Salvar). Isso será resolvido em uma versão posterior.

3 curtidas

Isso está usando seu plugin Category restrictor ou funciona independentemente dele?

plugin incrível para preencher lacunas.

Funciona independentemente.

2 curtidas

Olá,

Estou usando o plugin Dynamic Groups e defini meus critérios como:

trust_level_0 AND NOT anon_group

No entanto, notei que usuários com trust_level_1 que não estão no anon_group também estão sendo adicionados a este grupo dinâmico.

Você poderia confirmar se este é o comportamento esperado ou se é um bug?

Usuários com nível de confiança 1 também são membros do grupo de nível de confiança 0. Portanto, o comportamento é esperado. Você poderia excluir o grupo de nível de confiança 1 para obter apenas usuários TL0. Semelhante ao exemplo da primeira postagem

2 curtidas

Obrigado pelo esclarecimento

Eu absolutamente :heart: este plugin — ele é super útil para vários casos de uso. Mais um parabéns à equipe da Communiteq por compartilhar e mantê-lo!

Questão de UX — Seria melhor ocultar apenas os campos de chave em vez de toda a aba de Associação?

Notei que ele oculta a aba de Associação nas páginas de Grupo. Refiro-me a esta:

Embora eu entenda o motivo, isso causa alguns problemas quando você deseja mexer no Título Padrão, no Flair e no Efeito.

Isso pode ser contornado revelando a aba no console do navegador ou removendo a expressão na aba de Grupos Dinâmicos, atualizando a página, fazendo as alterações, colando-a de volta e atualizando novamente.

Mas me pergunto se não seria melhor ocultar apenas os campos que não são úteis, em vez de toda a aba. Algo mais parecido com isso:

1 curtida

Concordo com sua sugestão, mas…

Essa é uma funcionalidade essencial.
Um grupo dinâmico é marcado como “automático” e, em seguida, a aba “Membros” desaparece.

Isso não funcionará, pois o núcleo do Discourse não exibirá a aba de forma alguma. Ela não está oculta; simplesmente não existe.

1 curtida

É, eu já tinha descoberto isso no tempo entre eu postar e você responder!! Eu não tinha percebido que você integra isso na funcionalidade principal — e ainda por cima de forma muito elegante.

Já risquei minha sugestão incorreta.

Acho que a outra solução alternativa que eu mencionei está boa então.

1 curtida

Eu também não tinha percebido isso!

Vamos realizar uma rodada de manutenção em todos os plugins no próximo mês ou mais. Talvez precisemos rever a flag ‘automático’, já que, pelo que me lembro, era apenas uma maneira rápida de desativar a funcionalidade de adicionar/remover membros. Todas as outras coisas provavelmente são efeitos colaterais indesejados.

4 curtidas

Você chegou a concluir algo com isso?

1 curtida

No momento, há alguns avisos de depreciação neste plugin:

image

image

3 curtidas

Eu os resolvi. Obrigado por reportá-los! :+1:

3 curtidas