Sondages Discourse

||||\n-|-|-|\n:discourse2: | Résumé | Le plugin Discourse Surveys vous permet de créer des sondages directement dans vos publications de forum Discourse en utilisant une syntaxe Markdown simple.\n:hammer_and_wrench: | Lien du dépôt | \u003chttps://github.com/discourse/discourse-surveys\u003e\n:open_book: | Guide d’installation | Comment installer des plugins dans Discourse\n\nLe plugin Discourse Surveys vous permet de créer des sondages directement dans vos publications de forum Discourse en utilisant une syntaxe Markdown simple. Le plugin prend actuellement en charge une variété de types de questions tels que les boutons radio, les cases à cocher, les menus déroulants, les entrées numériques, les zones de texte, les évaluations par étoiles et les évaluations pouce levé/pouce baissé.\n\n## Fonctionnalités\n\n- 7 Types de champs différents : Boutons radio, cases à cocher, menus déroulants, zones de texte, sélection de nombres, évaluations par étoiles et pouces levés/baissés\n\n- Champs obligatoires/facultatifs : Marquez les champs comme obligatoires pour garantir leur remplissage\n\n- Prise en charge des Emojis : Utilisez des emojis dans vos options de sondage\n\n- Prise en charge HTML : Formatage de texte enrichi dans les questions et les options\n\n- Authentification utilisateur : Invites de connexion automatiques pour les utilisateurs anonymes\n\n- Suivi des réponses : Empêche les soumissions en double par le même utilisateur\n\n- Sensible aux permissions : Respecte les permissions de sujet et de catégorie\n\n- Responsive Mobile : Fonctionne parfaitement sur tous les appareils\n\n## Utilisation\n\n### Structure de sondage de base\n\nTous les sondages doivent être encapsulés dans des balises [survey] :\n\nmarkdown\n\n[survey name=\"mon-sondage\" title=\"Sondage de feedback client\"]\n\n\u003c!-- Les champs du sondage vont ici --\u003e\n\n[/survey]\n\n\n\n### Attributs du sondage\n\n- name : Identifiant unique pour le sondage (par défaut : "survey")\n\n- title : Titre facultatif affiché en haut du sondage\n\n- public : Définir la visibilité (fonctionnalité future)\n\n- status : État du sondage (fonctionnalité future)\n\n### Types de champs\n\n#### 1. Boutons Radio (Choix unique)\n\nmarkdown\n\n[radio question=\"Quelle est votre couleur préférée ?\"]\n\n- Rouge\n\n- Bleu\n\n- Vert\n\n- Jaune\n\n[/radio]\n\n\n\n#### 2. Cases à cocher (Choix multiples)\n\nmarkdown\n\n[checkbox question=\"Quelles fonctionnalités utilisez-vous ? (Sélectionnez tout ce qui s'applique)\"]\n\n- Notifications par e-mail\n\n- Application mobile\n\n- Notifications de bureau\n\n- Accès API\n\n[/checkbox]\n\n\n\n#### 3. Sélection par menu déroulant\n\nmarkdown\n\n[dropdown question=\"Quelle est votre tranche d'âge ?\"]\n\n- Moins de 18 ans\n\n- 18-24\n\n- 25-34\n\n- 35-44\n\n- 45-54\n\n- 55+\n\n[/dropdown]\n\n\n\n#### 4. Zone de texte (Texte long)\n\nmarkdown\n\n[textarea question=\"Veuillez fournir des commentaires détaillés :\" required=\"false\"]\n\n[/textarea]\n\n\n\n#### 5. Sélection numérique\n\nmarkdown\n\n[number question=\"Évaluez cette fonctionnalité de 1 à 10 :\" min=\"1\" max=\"10\"]\n\n[/number]\n\n\n\n#### 6. Évaluation par étoiles\n\nmarkdown\n\n[star question=\"Comment évalueriez-vous votre expérience globale ?\"]\n\n[/star]\n\n\n\n#### 7. Pouce levé/baissé\n\nmarkdown\n\n[thumbs question=\"Recommanderiez-vous ceci à d'autres ?\"]\n\n[/thumbs]\n\n\n\n### Attributs de champ\n\nTous les types de champs prennent en charge ces attributs :\n\n- question : Le texte de la question (obligatoire)\n\n- required : Si le champ doit être rempli (true/false, par défaut à true)\n\n- min : Valeur minimale pour les champs numériques\n\n- max : Valeur maximale pour les champs numériques\n\n### Exemple complet\n\n### Markdown de sondage de base\n\nVoici un exemple de base de Markdown de sondage incluant tous les champs disponibles :\n\n\n[survey name=\"sondage-genial-pouces\" title=\"Sondage Génial\"]\n\n[radio question=\"Choisissez une seule option :\"]\n- chat\n- chien\n[/radio]\n\n[checkbox question=\"Choisissez plusieurs options :\"]\n- rouge\n- bleu\n- vert\n[/checkbox]\n\n[dropdown question=\"Sexe :\"]\n- Masculin\n- Féminin\n[/dropdown]\n\n[number question=\"Évaluez ce sondage de 1 à 10 :\"]\n[/number]\n\n[textarea question=\"Quels sont vos commentaires sur xyz ?\" required=\"false\"]\n[/textarea]\n\n[star question=\"Comment évalueriez-vous l'expérience globale ?\"]\n[/star]\n\n[thumbs question=\"Êtes-vous satisfait de nos services ?\"]\n[/thumbs]\n\n[/survey]\n\n\n### Rendu du sondage\n\nCi-dessous se trouve un exemple de la façon dont le Markdown ci-dessus est rendu dans Discourse :\n\n

\n\n## Utilisation avancée\n\n### Utilisation des Emojis dans les options\n\nmarkdown\n\n[radio question=\"Choisissez votre animal préféré :\"]\n\n- 🐈 Chat\n\n- 🐶 Chien\n\n- 🐦 Oiseau\n\n- 🐠 Poisson\n\n[/radio]\n\n\n\n### Formatage HTML dans les questions\n\nmarkdown\n\n[radio question=\"Quel \u003cstrong\u003elangage de programmation\u003c/strong\u003e préférez-vous ?\"]\n\n- JavaScript\n\n- Python\n\n- Ruby\n\n- Go\n\n[/radio]\n\n\n\n### Champs obligatoires et facultatifs mélangés\n\nmarkdown\n\n[survey name=\"sondage-mixte\"]\n\n[radio question=\"Quel est votre rôle ?\" required=\"true\"]\n\n- Développeur\n\n- Designer\n\n- Manager\n\n- Autre\n\n[/radio]\n\n[textarea question=\"Des réflexions supplémentaires ?\" required=\"false\"]\n\n[/textarea]\n\n[/survey]\n\n\n\n## Résultats du sondage\n\nActuellement, ce plugin n’a pas d’interface utilisateur backend pour visualiser les résultats du sondage directement. Au lieu de cela, vous pouvez vous fier aux requêtes Data Explorer pour récupérer et analyser les réponses au sondage. Voici un exemple de requête :\n\nsql\n-- [params]\n-- text :survey_name = survey\n\nSELECT 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\nFROM surveys s\nJOIN survey_fields sf ON sf.survey_id = s.id\nJOIN survey_responses sr ON sr.survey_field_id = sf.id\nLEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id\nWHERE s.name = :survey_name\nORDER BY s.id DESC\n\n\n## Permissions et sécurité\n\n- Connexion requise : Les utilisateurs anonymes doivent se connecter avant de soumettre des réponses\n\n- Une réponse par utilisateur : Chaque utilisateur ne peut soumettre qu’une seule réponse par sondage\n\n- Permissions de sujet : Les utilisateurs doivent avoir un accès en lecture au sujet pour voir les sondages\n\n- Permissions de publication : Les utilisateurs doivent avoir des permissions de publication dans le sujet pour soumettre des réponses\n\n- Sujets archivés : Les sondages dans les sujets archivés ne peuvent pas accepter de nouvelles réponses\n\n- Publications supprimées : Les sondages dans les publications supprimées ne sont plus accessibles\n\n## Limitations\n\n- Un seul sondage est autorisé par publication\n\n- La structure du sondage ne peut pas être modifiée après avoir reçu des réponses\n\n- Toutes les questions des champs de sondage doivent être uniques au sein d’un même sondage\n\n- Les questions des champs de sondage ne peuvent pas être vides\n\n## Détails techniques\n\n### Schéma de la base de données\n\nLe plugin crée quatre tables de base de données principales :\n\n- surveys : Enregistrements principaux des sondages\n\n- survey_fields : Champs individuels dans les sondages\n\n- survey_field_options : Options pour les champs basés sur le choix\n\n- survey_responses : Réponses des utilisateurs aux champs de sondage\n\n### Stylisme\n\nLe plugin inclut un CSS adaptatif qui s’adapte à votre thème. Un style personnalisé peut être ajouté en ciblant ces classes CSS :\n\n- .survey - Conteneur principal du sondage\n\n- .survey-field - Enveloppe de champ individuelle\n\n- .field-[type] - Conteneurs de types de champs spécifiques\n\n- .submit-response - Bouton de soumission"

31 « J'aime »

Ainsi, les utilisateurs ne peuvent pas voir les résultats (sauf s’ils ont les droits d’utiliser la requête) et ceci est totalement destiné aux administrateurs/personnel de fond ?

3 « J'aime »

Oui, c’est exact.

7 « J'aime »

Ce n’est pas très pratique :cry:

3 « J'aime »

Besoin d’une option pour publier les résultats de l’enquête. Sinon, il est préférable d’utiliser plusieurs sondages.

3 « J'aime »

Bonjour

Le rendu Markdown d’exemple est le suivant dans un nouveau sujet. Mon Discourse est mis à jour vers la dernière version.

Quel pourrait être le problème ?

Cordialement

Salut @ppcole,

Ceci est ce qui est affiché dans l’aperçu du compositeur lorsque vous créez l’enquête. Une fois que vous avez créé le sujet, il s’affichera correctement comme prévu.

Merci Arpit. Ça a fonctionné. Au plaisir de voir les améliorations.

1 « J'aime »

Puis-je savoir si vous travaillez sur ce point, mais sans réelle priorité ?

Ce serait formidable que cela continue à être développé - il a énormément de potentiel.

J’ai constaté que le SQL ci-dessus extrayait les résultats, mais pas dans un format facile à exploiter ; cela nécessiterait une tonne de transformations au niveau de la feuille de calcul pour permettre une analyse utile.

Cependant, avec un peu d’aide de l’IA générative, j’ai pu produire une requête Data Explorer très performante. En raison de certaines limitations de Data Explorer, il n’est pas possible de la rendre suffisamment dynamique pour gérer une variété d’enquêtes ; en gros, vous avez besoin d’une requête sur mesure par enquête.

Heureusement, l’IA générative peut rendre cela assez simple. Voici un exemple d’invite qui fonctionnera probablement dans la plupart des services d’IA générative (si vous n’avez pas le plugin d’IA actif) - il suffit d’y coller votre markdown d’enquête et vous devriez être prêt :

Invite d'IA générative pour produire une requête SQL personnalisée pour une enquête spécifique

J’ai une enquête définie en format markdown, et j’ai besoin d’une requête SQL pour extraire les résultats de l’enquête d’une base de données Discourse en utilisant le plugin Data Explorer. L’enquête comprend différents types de questions tels que radio, dropdown, star, checkbox, textarea, thumbs et number. Je souhaite que la requête produise des résultats avec chaque utilisateur ayant une seule ligne et chaque question ayant sa propre colonne. Pour les questions à cases à cocher, plusieurs réponses doivent être concaténées en une seule chaîne.

Voici le markdown de l’enquête :

Collez votre markdown d'enquête ici

Voici la requête originale utilisée pour obtenir les résultats de l’enquête :

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

Veuillez générer une requête SQL qui :

  • Code en dur le nom de l’enquête.
  • Utilise l’agrégation conditionnelle pour pivoter les données, avec chaque question comme colonne.
  • Utilise STRING_AGG pour les questions à cases à cocher afin de gérer plusieurs réponses.
  • Assure que la sortie est regroupée par user_id et triée par user_id.
  • Est formatée pour la lisibilité et inclut des commentaires expliquant la logique si nécessaire.

Conseils supplémentaires pour le plugin Data Explorer :

  • La requête doit être compatible avec le plugin Discourse Data Explorer, ce qui signifie qu’elle ne doit pas se terminer par un point-virgule.
  • Utilisez des noms de colonnes comme user_id pour tirer parti des fonctionnalités de liaison automatique dans Data Explorer.
  • Évitez d’utiliser du SQL dynamique, car le plugin ne le prend pas en charge.
  • Assurez-vous que la requête est efficace et optimisée pour les performances, car elle peut être exécutée sur de grands ensembles de données.
8 « J'aime »

C’est un excellent petit plugin qui est étonnamment riche en fonctionnalités. Merci de l’avoir créé.

@nathank excellent travail sur le guide pour construire rapidement une requête de résultats.

4 « J'aime »

Je l’ai installé sur mon site auto-hébergé pour l’essayer, et c’est vraiment très bien !

Je me rends compte que c’est anathème au discours, mais ce serait utile s’il était possible de créer des sondages qui peuvent être remplis anonymement, sans se connecter. Ou du moins d’anonymiser les résultats afin qu’ils ne soient pas associés à des utilisateurs spécifiques.

Et bien sûr, oui, la possibilité de consulter les résultats comme avec les sondages sans avoir à recourir à l’explorateur de données serait fantastique.

5 « J'aime »

Oui, j’ai rencontré le même problème. J’espère qu’il existe une solution.

3 « J'aime »