Skip to content

feat(run): mode passation en présentiel (poste partagé) — ?kiosk=1#131

Merged
mindcraft-research merged 1 commit into
mainfrom
feat-kiosk-presentiel-mode
Jun 15, 2026
Merged

feat(run): mode passation en présentiel (poste partagé) — ?kiosk=1#131
mindcraft-research merged 1 commit into
mainfrom
feat-kiosk-presentiel-mode

Conversation

@mindcraft-research

Copy link
Copy Markdown
Owner

Résumé

Cas d'usage : faire passer plusieurs participant·e·s à tour de rôle sur le même ordinateur (laboratoire, salle de test), éventuellement sur plusieurs postes en parallèle.

Problème résolu : avec le lien de participation classique, l'identité du·de la participant·e est mémorisée dans le localStorage du navigateur. Sur un poste partagé, la 2ᵉ personne récupérait la session de la 1ʳᵉ → même ordre de blocs, réponses déjà saisies, données mélangées. Problème d'intégrité en présentiel.

Solution : mode présentiel ?kiosk=1

  • Identité par onglet : stockée dans sessionStorage (et non le localStorage partagé). Survit à un rafraîchissement accidentel en cours de passation, mais chaque nouvelle passation repart d'une identité neuve → ordre des blocs et session indépendants.
  • Bouton « Démarrer nouvelle passation » à l'écran de fin (avec confirmation) : efface l'identité de l'onglet et recharge pour la personne suivante.
  • Ce bouton n'apparaît qu'en mode présentiel. En ligne (lien normal / Prolific), l'écran de fin reste « Merci, vous pouvez fermer cette page ».
  • Postes en parallèle : aucune interférence (UUID uniques par onglet, allocation des conditions sérialisable côté serveur).

Où c'est exposé

  • Panneau « Lien participation » : nouvelle entrée « 🖥️ Passation en présentiel (poste partagé) » avec le lien ?kiosk=1 (Copier + Ouvrir) et une note explicative.
  • /docs section 10 : sous-section dédiée (pourquoi, mode d'emploi en 3 étapes, parallélisme).

Aucun changement backend

L'allocation existante gère déjà l'unicité (chaque participantId distinct = nouvelle session) et la concurrence (transaction sérialisable).

Test plan

  • Ouvrir le lien ?kiosk=1 (étude En collecte) → réaliser l'étude → écran de fin affiche « Démarrer nouvelle passation »
  • Cliquer → confirmation → après acceptation, l'étude redémarre avec un nouvel ordre possible et une session vierge
  • Annuler la confirmation → reste sur l'écran de fin, rien ne se passe
  • Enchaîner 3-4 passations sur le même poste → chacune indépendante (ordres variés, pas de réponses pré-remplies)
  • Rafraîchir la page en cours de passation kiosk → l'identité est conservée (pas de nouvelle session involontaire)
  • Lien normal (sans ?kiosk=1) → écran de fin classique, pas de bouton
  • 2 navigateurs/postes simultanés en kiosk → 2 participants distincts, ordres indépendants
  • Lien présentiel visible dans le panneau « Lien participation », Copier/Ouvrir fonctionnels
  • /docs section 10 → sous-section « Passation en présentiel »

🤖 Generated with Claude Code

Cas d'usage : faire passer plusieurs participant·e·s à tour de rôle sur
le même ordinateur (laboratoire, salle de test). Avec le lien classique,
l'identité est mémorisée dans le localStorage du navigateur : la 2e
personne récupérait alors la session de la 1re (même ordre de blocs,
réponses déjà saisies) — problème d'intégrité en présentiel.

Mode présentiel (paramètre d'URL ?kiosk=1) :
- L'identité participant·e est stockée dans sessionStorage (propre à
  l'onglet) au lieu du localStorage partagé. Elle survit à un
  rafraîchissement accidentel en cours de passation, mais chaque
  nouvelle passation repart d'une identité neuve → ordre des blocs et
  session indépendants.
- À l'écran de fin, bouton « Démarrer nouvelle passation » (avec
  confirmation) qui efface l'identité de l'onglet et recharge pour la
  personne suivante. Ce bouton n'apparaît QU'EN mode présentiel ; en
  ligne, l'écran de fin reste « Merci, vous pouvez fermer cette page ».
- Plusieurs postes peuvent être utilisés en parallèle sans interférence
  (UUID uniques, allocation des conditions sérialisable côté serveur).

Lien dédié exposé dans le panneau « Lien participation » (Copier +
Ouvrir) et documenté dans la section 10 de /docs.

Aucun changement backend nécessaire.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mindcraft-research mindcraft-research merged commit ab15c53 into main Jun 15, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant