Discourse 调查

|||
-|-|-|
:discourse2: | 摘要 | Discourse Surveys 插件允许您使用简单的 Markdown 语法直接在 Discourse 论坛帖子中创建调查。
:hammer_and_wrench: | 存储库链接 | https://github.com/discourse/discourse-surveys
:open_book: | 安装指南 | 如何在 Discourse 中安装插件

Discourse Surveys 插件允许您使用简单的 Markdown 语法直接在 Discourse 论坛帖子中创建调查。该插件目前支持多种问题类型,例如单选按钮、复选框、下拉菜单、数字输入、文本区域、星级评分和点赞/点踩评分。

基本调查 Markdown

以下是包含所有可用字段的调查 Markdown 的基本示例:

[survey name="awesome-survey-thumbs" title="Awesome Survey"]

[radio question="Choose any one option:"]
- cat
- dog
[/radio]

[checkbox question="Choose multiple options:"]
- red
- blue
- green
[/checkbox]

[dropdown question="Gender:"]
- Male
- Female
[/dropdown]

[number question="Rate this survey from 1 to 10:"]
[/number]

[textarea question="What is your feedback about xyz?" required="false"]
[/textarea]

[star question="How would you rate overall experience?"]
[/star]

[thumbs question="Were you satisfied with our services?"]
[/thumbs]

[/survey]

调查渲染

以下是上述 Markdown 在 Discourse 中呈现的示例:

调查结果

目前,该插件没有后端用户界面可以直接查看调查结果。相反,您可以使用 Data Explorer 查询来获取和分析调查响应。以下是一个示例查询:

-- [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

未来范围

该插件有许多改进的潜力。欢迎加入讨论,并在插件的存储库上提交拉取请求。

28 个赞

因此,用户无法看到结果(除非他们有权使用查询),而这完全是为了管理员/后台工作人员?

3 个赞

是的,没错。

7 个赞

这感觉不太实用 :cry:

3 个赞

需要提供发布调查结果的选项。否则,最好使用多个投票。

3 个赞

你好

下面的 Markdown 示例在新主题中呈现。我的 Discourse 已更新到最新版本。

可能是什么问题?

此致

@ppcole

上面是您在创建调查时,在编辑器预览中显示的内容。一旦您创建了主题,它就会按预期正常呈现。

谢谢 Arpit。它奏效了。期待增强功能

1 个赞

请问你们是否在处理这件事,但优先级不高?

如果能继续开发这个就太好了 - 它有巨大的潜力。

我发现上面的 SQL 确实可以提取结果,但格式不易处理;基本上需要在电子表格层面进行大量转换才能进行有用的分析。

不过,在一些生成式人工智能的帮助下,我能够生成一个非常出色的 Data Explorer 查询。由于 Data Explorer 的一些限制,它无法足够动态地适应各种调查;基本上,您需要为每个调查定制一个查询。

幸运的是,生成式人工智能可以使这一过程变得相当简单。以下是一个在大多数生成式人工智能服务中都可能有效的示例提示(如果您没有激活 AI 插件),只需插入您的调查 markdown 即可开始:

生成式人工智能提示,用于为特定调查生成定制化 SQL 查询

我有一个以 markdown 格式定义的调查,我需要一个 SQL 查询来使用 Data Explorer 插件从 Discourse 数据库中提取调查结果。该调查包含各种类型的问题,如单选按钮、下拉菜单、星级、复选框、文本区域、拇指和数字。我希望查询的输出是每个用户占一行,每个问题占一列。对于复选框问题,多个响应应合并为单个字符串。

这是调查 markdown:

在此处粘贴您的调查 markdown

这是用于获取调查结果的原始查询:

-- [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

请生成一个 SQL 查询,该查询:

  • 硬编码调查名称。
  • 使用条件聚合进行数据透视,每个问题作为一列。
  • 对复选框问题使用 STRING_AGG 来处理多个响应。
  • 确保按 user_id 分组并按 user_id 排序。
  • 格式化以便阅读,并包含解释逻辑的注释。

Data Explorer 插件的附加指南:

  • 查询应与 Discourse Data Explorer 插件兼容,这意味着它不应以分号结尾。
  • 使用 user_id 等列名来利用 Data Explorer 中的自动链接功能。
  • 避免使用动态 SQL,因为该插件不支持它。
  • 确保查询高效且针对性能进行了优化,因为它可能在大型数据集上运行。
7 个赞

这是一个很棒的小插件,功能异常丰富。感谢您制作它。

@nathank,您关于快速构建结果查询的指南做得非常棒。

4 个赞

我在我的自托管网站上安装了它来试用,确实很不错!

我知道这与讨论的宗旨相悖,但如果能够创建无需登录即可匿名完成的调查,那将非常有帮助。或者至少能够匿名化结果,使其不与特定用户关联。

当然,是的,能够像查看投票一样查看结果,而无需诉诸数据浏览器,那将是极好的。

4 个赞

是的,我也遇到了同样的问题。希望有解决方案。

3 个赞