Eu sei que isso acontece quando alguém do Discourse curte o tópico do bug publicado em Contribute > Bug. Vocês usam um webservice para isso e apenas escutam a primeira curtida em uma nova publicação, verificando apenas para garantir que não tenha sido curtida várias vezes pela mesma pessoa da CDCK?
Adoraria saber mais sobre a implementação de vocês!
SELECT distinct p.user_id, p.created_at granted_at, p.id post_id
FROM badge_posts p
JOIN topics t ON t.id = p.topic_id
JOIN post_actions pa ON pa.post_id = p.id AND
post_action_type_id = (
SELECT id FROM post_action_types WHERE name_key = 'like'
) AND
pa.user_id IN (
SELECT gu.user_id
FROM group_users gu
WHERE gu.group_id = ( SELECT id FROM groups WHERE name ilike 'team' )
)
WHERE category_id = (
SELECT id FROM categories WHERE name ilike 'bug'
) AND p.post_number = 1
(Como um adendo, também criei outros semelhantes para funcionar com uma Reação específica de um determinado grupo também )
@JammyDodger isso é incrível! Eu ainda não tive tempo de me aprofundar em consultas personalizadas de badges, mas isso pode finalmente me dar uma chance.
Se for possível perguntar, como vocês lidam com o envio de bugs internamente, além do badge? Pelo menos no contexto do Meta? Vocês adicionam manualmente à fila de bugs em algum lugar? Usam um plugin para enviá-lo para a fila de bugs diretamente do tópico?
Também estou curioso sobre a logística de lidar com relatórios de bugs e solicitações de recursos no Discourse e como vocês os vinculam aos seus sistemas de desenvolvimento/internos.
Elas são muito divertidas. E há muitos exemplos disponíveis caso você precise de inspiração ou dicas.
A categoria Contribute > Bug é uma parte importante da nossa fila de bugs. Para evitar duplicação, muitas vezes resolvemos o problema diretamente no tópico do Meta (usando whispers, @mentions e assigns) e só realmente separamos os problemas para uma área da equipe se eles exigirem conversas adicionais significativas ou a entrada de outras pessoas. Também recebemos relatórios de bugs por meio de canais de atendimento ao cliente, que também são frequentemente resolvidos ‘no próprio tópico’, a menos que haja vários relatórios ou um já exista publicamente (nesse caso, geralmente usa-se um como principal para não fragmentar a conversa demais, e os outros são vinculados entre si). Para aqueles que identificamos nós mesmos, temos alguns tópicos internos que usamos para registrar pequenas tarefas, prontas para que alguém possa mergulhar e resolvê-las, e para as maiores, criamos um tópico dedicado da mesma forma que a categoria pública Contribute > Bug.
Geralmente, o fluxo é: um relatório chega e um de nós tenta reproduzir o problema e coleta os detalhes adicionais necessários. Uma vez confirmado, enviamos um sinal de @mention para o grupo/pessoa relevante definir a prioridade e atribuir a tarefa. O correto chega e é postado em uma mensagem para encerrar o tópico (com um atraso no timer do tópico apenas para confirmar que tudo está funcionando conforme o esperado ).
O Contribute > Feature é um pouco diferente, pois geralmente há muito mais o que discutir internamente. Tentamos manter os whispers ao mínimo nesses tópicos públicos e os reservamos para notas curtas e para chamar a atenção para aqueles que estão atraindo interesse adicional (novamente, @mentions confiáveis ). Dessa forma, não fragmentamos a conversa entre muitos lugares. Os gerentes de produto também gostam de se envolver publicamente nesses casos para explorar diferentes casos de uso e sentir as possibilidades (além de informar às pessoas qual é o pensamento deles sobre o assunto, já que gostamos de ser transparentes onde podemos ). Se um Contribute > Feature se tornar algo que estamos considerando seriamente, ele receberá um tópico interno onde desenvolvedores, designers, gerentes de produto, moderadores curiosos da comunidade, etc., podem contribuir com ideias e mockups sobre como acham que isso pode ser melhor realizado (vinculado ao tópico do Meta para conectá-los).
Agora que escrevi tudo isso, não tenho certeza se foi útil… Mas me diga se quiser saber mais alguma coisa.