Pesquisas do Discourse

:discourse2: Resumo O plugin Discourse Surveys permite criar pesquisas diretamente nas suas postagens do fórum Discourse usando sintaxe Markdown simples.
:hammer_and_wrench: Link do Repositório \u003chttps://github.com/discourse/discourse-surveys\u003e
:open_book: Guia de Instalação Como instalar plugins no Discourse

O Plugin Discourse Surveys permite criar pesquisas diretamente nas suas postagens do fórum Discourse usando sintaxe Markdown simples. O plugin atualmente suporta vários tipos de perguntas, como botões de rádio, caixas de seleção, menus suspensos, entradas numéricas, áreas de texto, classificações por estrelas e classificações de polegar para cima/baixo.

Funcionalidades

  • 7 Tipos de Campos Diferentes: Botões de rádio, caixas de seleção, menus suspensos, áreas de texto, seleção numérica, classificações por estrelas e polegar para cima/baixo

  • Campos Obrigatórios/Opcionais: Marque campos como obrigatórios para garantir o preenchimento

  • Suporte a Emoji: Use emojis nas suas opções de pesquisa

  • Suporte a HTML: Formatação de texto rico em perguntas e opções

  • Autenticação de Usuário: Solicitações automáticas de login para usuários anônimos

  • Rastreamento de Respostas: Impede envios duplicados do mesmo usuário

  • Consciência de Permissões: Respeita as permissões de tópico e categoria

  • Responsivo para Dispositivos Móveis: Funciona perfeitamente em todos os dispositivos

Uso

Estrutura Básica da Pesquisa

Todas as pesquisas devem ser envolvidas por tags [survey]:


[survey name="minha-pesquisa" title="Pesquisa de Feedback do Cliente"]

<!-- Os campos da pesquisa vão aqui -->

[/survey]

Atributos da Pesquisa

  • name: Identificador único para a pesquisa (padrão é “survey”)

  • title: Título opcional exibido no topo da pesquisa

  • public: Define a visibilidade (recurso futuro)

  • status: Status da pesquisa (recurso futuro)

Tipos de Campo

1. Botões de Rádio (Escolha Única)


[radio question="Qual é a sua cor favorita?"]

- Vermelho

- Azul

- Verde

- Amarelo

[/radio]

2. Caixas de Seleção (Múltipla Escolha)


[checkbox question="Quais recursos você utiliza? (Selecione todos que se aplicam)"]

- Notificações por e-mail

- Aplicativo móvel

- Notificações de desktop

- Acesso à API

[/checkbox]

3. Seleção Suspensa (Dropdown)


[dropdown question="Qual é a sua faixa etária?"]

- Menos de 18

- 18-24

- 25-34

- 35-44

- 45-54

- 55+

[/dropdown]

4. Área de Texto (Texto Longo)


[textarea question="Por favor, forneça feedback detalhado:" required="false"]

[/textarea]

5. Seleção Numérica


[number question="Avalie este recurso de 1 a 10:" min="1" max="10"]

[/number]

6. Classificação por Estrelas


[star question="Como você avaliaria sua experiência geral?"]

[/star]

7. Polegar para Cima/Baixo


[thumbs question="Você recomendaria isto a outros?"]

[/thumbs]

Atributos de Campo

Todos os tipos de campo suportam estes atributos:

  • question: O texto da pergunta (obrigatório)

  • required: Se o campo deve ser preenchido (true/false, padrão é true)

  • min: Valor mínimo para campos numéricos

  • max: Valor máximo para campos numéricos

Exemplo Completo

Markdown Básico da Pesquisa

Aqui está um exemplo básico de Markdown de pesquisa incluindo todos os campos disponíveis:

[survey name="awesome-survey-thumbs" title="Pesquisa Incrível"]

[radio question="Escolha apenas uma opção:"]
- gato
- cachorro
[/radio]

[checkbox question="Escolha múltiplas opções:"]
- vermelho
- azul
- verde
[/checkbox]

[dropdown question="Gênero:"]
- Masculino
- Feminino
[/dropdown]

[number question="Avalie esta pesquisa de 1 a 10:"]
[/number]

[textarea question="Qual é o seu feedback sobre xyz?" required="false"]
[/textarea]

[star question="Como você avaliaria a experiência geral?"]
[/star]

[thumbs question="Você ficou satisfeito com nossos serviços?"]
[/thumbs]

[/survey]

Renderização da Pesquisa

Abaixo está um exemplo de como o Markdown acima é renderizado no Discourse:

Uso Avançado

Usando Emojis nas Opções


[radio question="Escolha seu animal favorito:"]

- 🐈 Gato

- 🐶 Cachorro

- 🐦 Pássaro

- 🐠 Peixe

[/radio]

Formatação HTML nas Perguntas


[radio question="Qual \u003cstrong\u003elinguagem de programação\u003c/strong\u003e você prefere?"]

- JavaScript

- Python

- Ruby

- Go

[/radio]

Campos Obrigatórios e Opcionais Misturados


[survey name="mixed-survey"]

[radio question="Qual é a sua função?" required="true"]

- Desenvolvedor

- Designer

- Gerente

- Outro

[/radio]

[textarea question="Alguns pensamentos adicionais?" required="false"]

[/textarea]

[/survey]

Resultados da Pesquisa

Atualmente, este plugin não possui uma UX de backend para visualizar os resultados da pesquisa diretamente. Em vez disso, você pode contar com as consultas do Data Explorer para buscar e analisar as respostas da pesquisa. Aqui está um exemplo de consulta:

-- [params]
-- text :survey_name = survey

SELECT
  s.id,
  s.name,
  s.post_id,
  sf.question,
  COALESCE(sr.value, sfo.html) AS value,
  sr.user_id,
  sr.created_at AS responded_at
FROM
  surveys s
  JOIN survey_fields sf ON sf.survey_id = s.id
  JOIN survey_responses sr ON sr.survey_field_id = sf.id
  LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE
  s.name = :survey_name
ORDER BY
  s.id DESC

Permissões e Segurança

  • Login Obrigatório: Usuários anônimos devem fazer login antes de enviar respostas

  • Uma Resposta por Usuário: Cada usuário pode enviar apenas uma resposta por pesquisa

  • Permissões de Tópico: Os usuários devem ter acesso de leitura ao tópico para visualizar pesquisas

  • Permissões de Postagem: Os usuários devem ter permissões de postagem no tópico para enviar respostas

  • Tópicos Arquivados: Pesquisas em tópicos arquivados não podem aceitar novas respostas

  • Posts Excluídos: Pesquisas em posts excluídos não são mais acessíveis

Limitações

  • Apenas uma pesquisa é permitida por postagem

  • A estrutura da pesquisa não pode ser modificada após o recebimento de respostas

  • Todas as perguntas dos campos da pesquisa devem ser exclusivas dentro de uma única pesquisa

  • As perguntas dos campos da pesquisa não podem estar em branco

Detalhes Técnicos

Esquema do Banco de Dados

O plugin cria quatro tabelas principais no banco de dados:

  • surveys: Registros principais da pesquisa

  • survey_fields: Campos individuais dentro das pesquisas

  • survey_field_options: Opções para campos baseados em escolha

  • survey_responses: Respostas do usuário aos campos da pesquisa

Estilização

O plugin inclui CSS responsivo que se adapta ao seu tema. Estilos personalizados podem ser adicionados direcionando estas classes CSS:

  • .survey - Contêiner principal da pesquisa

  • .survey-field - Invólucro de campo individual

  • .field-[type] - Contêineres de tipos de campo específicos

  • .submit-response - Botão de envio

32 curtidas

Portanto, os usuários não podem ver os resultados (a menos que tenham permissão para usar a consulta) e isso é totalmente para administradores/equipe de back-office?

3 curtidas

Sim, está correto.

7 curtidas

Não parece muito prático :cry:

3 curtidas

Precisa de opção para publicar resultados de pesquisas. Caso contrário, é melhor usar várias enquetes.

3 curtidas

Olá

A amostra de Markdown é renderizada em um novo Tópico conforme abaixo. Meu Discourse está atualizado para a versão mais recente.

Qual poderia ser o problema?

Atenciosamente

Olá @ppcole,

O acima é o que é mostrado na visualização do editor ao criar a pesquisa. Assim que você criar o tópico, ele será renderizado corretamente como esperado.

Obrigado Arpit. Funcionou. Aguardando melhorias

1 curtida

Gostaria de saber se vocês estão trabalhando nisso, mas sem prioridade real?

Seria ótimo que isso continuasse a ser desenvolvido - tem muito potencial.

Descobri que a SQL acima realmente extraiu os resultados, mas não estava em um formato fácil de trabalhar; basicamente, exigiria uma tonelada de transformação no nível da planilha para permitir análises úteis.

No entanto, com um pouco de ajuda da IA Generativa, consegui produzir uma consulta muito boa no Explorador de Dados. Devido a algumas limitações do Explorador de Dados, não é possível torná-lo dinâmico o suficiente para lidar com uma variedade de pesquisas; basicamente, você precisa de uma consulta personalizada por pesquisa.

Felizmente, a IA Generativa pode tornar isso bastante simples. Aqui está um prompt de exemplo que provavelmente funcionará na maioria dos serviços de IA Generativa (se você não tiver o plugin de IA ativo) - basta inserir seu markdown de pesquisa e você estará pronto:

Prompt de IA Generativa para Produzir Consulta SQL Personalizada para uma Pesquisa Específica

Tenho uma pesquisa definida em formato markdown e preciso de uma consulta SQL para extrair os resultados da pesquisa de um banco de dados Discourse usando o Plugin Explorador de Dados. A pesquisa inclui vários tipos de perguntas, como rádio, dropdown, estrela, checkbox, textarea, polegares e número. Quero que a consulta produza resultados com cada usuário tendo uma única linha e cada pergunta tendo sua própria coluna. Para perguntas de checkbox, várias respostas devem ser concatenadas em uma única string.

Aqui está o markdown da pesquisa:

Cole seu markdown de pesquisa aqui

Aqui está a consulta original usada para obter os resultados da pesquisa:

-- [params]
-- text :survey_name = survey

SELECT s.id, s.name, s.post_id, sf.question, COALESCE(sr.value, sfo.html) AS value, sr.user_id, sr.created_at as responded_at
FROM surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE s.name = :survey_name
ORDER BY s.id DESC

Por favor, gere uma consulta SQL que:

  • Codifique o nome da pesquisa.
  • Use agregação condicional para pivotar os dados, com cada pergunta como uma coluna.
  • Utilize STRING_AGG para perguntas de checkbox para lidar com várias respostas.
  • Garanta que a saída seja agrupada por user_id e ordenada por user_id.
  • Seja formatada para legibilidade e inclua comentários explicando a lógica quando necessário.

Orientação Adicional para o Plugin Explorador de Dados:

  • A consulta deve ser compatível com o Plugin Explorador de Dados do Discourse, o que significa que não deve terminar com ponto e vírgula.
  • Use nomes de colunas como user_id para aproveitar os recursos de vinculação automática no Explorador de Dados.
  • Evite usar SQL dinâmico, pois o plugin não o suporta.
  • Garanta que a consulta seja eficiente e otimizada para desempenho, pois pode ser executada em grandes conjuntos de dados.
8 curtidas

Este é um excelente plugin que é surpreendentemente rico em recursos.

Obrigado por criá-lo.

@nathank ótimo trabalho no guia para construir rapidamente consultas de resultados.

4 curtidas

Instalei isso no meu site auto-hospedado para experimentar, e é realmente muito bom!

Percebo que isso é um anátema para o discurso, mas seria útil se fosse possível criar pesquisas que pudessem ser concluídas anonimamente, sem login. Ou pelo menos para anonimizar os resultados para que não estejam associados a usuários específicos.

E, claro, sim, a capacidade de ver os resultados como você pode com enquetes sem ter que recorrer ao explorador de dados seria fantástica.

5 curtidas

Sim, enfrentei o mesmo problema. Espero que haja uma solução.

3 curtidas