E se os badges pudessem opcionalmente sincronizar a associação ao grupo?

Estava analisando este tópico hoje:

Pensando no problema, uma área em que o Discourse é um pouco fraco é na definição de grupos de usuários “dinâmicos”.

Me dê um grupo de usuários que se cadastraram há mais de 1 mês

Me dê um grupo de usuários que postaram pelo menos 10 vezes

E assim por diante.

Por outro lado, as distinções (badges) têm um suporte muito rico para essa natureza “dinâmica” uma vez que o SQL avançado está habilitado.

Ter uma caixa de seleção “extra” nas distinções para vincular uma distinção a um grupo adicionaria muito poder. Atualmente, não temos como atribuir permissões aos detentores de distinções, pois não há um grupo de suporte. Apenas as distinções de nível de confiança têm esse comportamento especial (que poderíamos portar para este novo sistema).

Minha proposta aqui é:

[ ] espelhar membros da distinção em um grupo

Uma vez marcada essa opção em uma distinção específica, um “grupo” seria criado automaticamente ou buscado com base no nome, e os membros do grupo seriam mantidos sincronizados conforme a associação à distinção muda.

O que acham?

20 curtidas

Because the group membership management UI is so rich these days, changes should at least attempt to flow in the opposite direction as well (e.g. approving a Request to Join turns into a badge grant from the group manager; which wouldn’t normally happen as they aren’t staff).

6 curtidas

I feel like this has massive overlap with trust levels; it’s building a parallel system for.. well, I’m not sure why. In the quote you posted, that is literally the reason we have trust levels in the first place. So tying content unlock to

  • trust level 1 (a tiny bit of reading)
  • trust level 2 (a fair bit more reading)

should cover this scenario.

There are many many things I’d rather we work on than this.

I definitely do not see this as an urgent change, we lock out badge sql anyway out-of-the-box. However I do see this as something I would like to get to eventually.

It is a simple generalization of the “automatic group” system that now exists.

This does simplify workflows as well, you can grant a badge to a user and then you do not need to go to the group and also grant membership. For example: “Customer champion” badge that grants access to “champions” group and “champion discussion” category on the site. Having the bridge also means you only need to remove membership in 1 spot to have both badge and group change.

Nothing urgent to change here, its just that there are tons of parallels between groups and badges so having a bridge helps get automatic feature parity on both sides.

9 curtidas

Prior requests:

I know that just tying this up to the a badge re-uses a bunch of code, and simplifies a lot, but ideally this would be an option in the Groups UI, to have an option query that returns the user_id of members.

When you tie this to SSO and custom user fields, you get a very powerful system, where you can manage groups using queries on those custom fields + all the info Discourse already have.

10 curtidas

I have a client who wants just this. He wants to encourage people to fill in custom user fields after sign up and give them flair if they do it.

It’s easy enough to enable badge sql to find them a badge but we need to assign them to a group for flair.

How hard is a plugin to assign a user to a group of they have earned a badge?

5 curtidas

Conseguiu resolver isso, @pfaffman? Estou explorando um cenário semelhante aqui.

1 curtida

Não fiz, mas acho que agora sei como desenvolver esse plugin. Me chame com seu orçamento e eu vejo o que posso fazer por você.

1 curtida

Não tenho orçamento para este projeto. Acredito que também seja possível (embora de forma menos elegante) realizá-lo com um script do Integromat ou Zapier.

Bom, talvez eu possa te dar código de café suficiente para você ajustá-lo sozinho. Estou bastante ocupado agora, mas vou ver o que posso fazer.

EDIT: Bom, não vai funcionar como eu pensei. Vou precisar de um tempo para descobrir como proceder.

2 curtidas

Tenho muito interesse neste tópico. Gostaria de perguntar se alguém desenvolveu um plugin correspondente? Se não, eu desenvolverei um.

A maneira mais fácil de conseguir isso seria usando a automação do Discourse, um script personalizado especial “sincronizar selo para grupo”, que deve ser razoavelmente fácil de construir.

Ou adicionar usuários a grupos usando relatórios do Discourse Data Explorer?
Seria ótimo se isso pudesse ser feito.

Isso agora é possível usando o plugin Automação: :tada:

2 curtidas