✦ Dashboard de Test — Furbotto
Validation HML avant migration PROD · 3 octobre 2026
Statut des sites
Espaces de supervision
Maisons
Utilisateurs
Lien de supervision
Scénarios de test F19
HML
S1 — Portail mono-membre
▼
Maison Otto de Quincy · 1 membre (Aurélien OTTO) · vérifier affichage portail et guestToken.
- 01Ouvrir le portail :
hml2.../portail/4d80f8bb...
→ Page portail, blason affiché, bouton "Aurélien OTTO" - 02Cliquer "Aurélien OTTO"
→ Spinner bref puis cards (faire-part + jeu) - 03Inspecter localStorage : clé
portail_guest_token
→ UUID présent - 04Cliquer la card jeu
→ Redirection vers jeu-hml avec familyToken + guestToken, "Vérification…" puis home jeu
HML
S2 — Portail 2 membres · isolation
▼
Maison Otto de Reims · Jean-Paul + Inès · vérifier que 2 membres = 2 guestToken distincts = 2 membres jeu distincts.
- 01Session A — Ouvrir en navigation normale :
hml2.../portail/78d8ca28...
Sélectionner "Jean-Paul OTTO" → noter guestToken localStorage - 02Cliquer card jeu → noter le membre jeu (prenom dans l'URL ou dans le cookie)
→ onboarding ou home jeu pour Jean-Paul - 03Session B — Ouvrir en navigation privée :
hml2.../portail/78d8ca28...
Sélectionner "Inès OTTO" → noter guestToken localStorage - 04Cliquer card jeu → membre jeu différent de Jean-Paul
→ Deux UUID distincts dans portal_guest.jeu_membre_id (vérifier SQL ci-dessous)
HML
S3 — Portail 4 membres · stress isolation
▼
Maison Otto de Montmartin · Jean-Pierre, Sonia, Nomi, Keny · 4 sessions = 4 membres jeu distincts.
- 01Répéter 4 fois (1 session distincte par membre) :
hml2.../portail/799c64cb... - 02Vérifier SQL (copier ci-dessous) → 4 lignes dans portal_guest, 4 jeu_membre_id distincts et non null
→ Aucun doublon de jeu_membre_id
HML
S4 — Jeu legacy (sans portail)
▼
Accès direct au jeu par token famille (ancien QR code). Vérifier compatibilité rétrograde.
- 01Ouvrir :
jeu-hml.../join?token=78d8ca28...
→ "Vérification…" puis onboarding ou home (membre legacy) - 02Re-ouvrir le même lien depuis un autre appareil ou après clear cookies
→ Même membre retrouvé (P1 invite_token)
HML
S5 — Retour portail après jeu (persistance)
▼
Vérifier que revenir sur le portail après avoir joué ne redemande pas "Qui êtes-vous ?"
- 01Après S1 ou S2 : revenir sur le portail (même session)
hml2.../portail/4d80f8bb... - 02→ Membre déjà sélectionné (bouton actif), cards déjà visibles, pas de re-sélection requise
- 03Cliquer card jeu à nouveau
→ Même membre jeu (P0 : portal_guest.jeu_membre_id déjà lié)
API
S6 — guestToken invalide → refus 400
▼
Vérifier que l'API jeu refuse un guestToken mal formé plutôt que de tomber en legacy.
- 01Dans la console navigateur sur jeu-hml :
fetch('/api/auth/invite',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({token:'78d8ca28eec06d33c8ccdebbab8c0bf0',guestToken:'pas-un-uuid'})}).then(r=>console.log(r.status)) - 02→ Status 400 (pas 200 ni 401)
Checklist de validation HML → PROD
0 / 0 validés
Requêtes SQL — Supabase HML
-- Vérifier l'isolation des membres par guestToken
SELECT
pg.guest_token,
pg.member_key,
pg.jeu_membre_id,
mm.display_name
FROM portal_guest pg
LEFT JOIN maison_member mm ON mm.id = pg.maison_member_id
ORDER BY pg.created_at DESC
LIMIT 20;
-- Vérifier qu'aucun jeu_membre_id n'est partagé entre deux portal_guest
SELECT jeu_membre_id, COUNT(*) as nb
FROM portal_guest
WHERE jeu_membre_id IS NOT NULL
GROUP BY jeu_membre_id
HAVING COUNT(*) > 1;
-- Résultat attendu : 0 lignes
-- Vérifier les membres jeu créés via portail (invite_token = NULL)
SELECT id, prenom, onboarding_complete, invite_token, created_at
FROM membres
WHERE invite_token IS NULL
ORDER BY created_at DESC
LIMIT 10;
-- Schéma FK actuel sur portal_guest et maison_member
SELECT conname, contype, confrelid::regclass, conrelid::regclass
FROM pg_constraint
WHERE conrelid IN ('portal_guest'::regclass, 'maison_member'::regclass)
ORDER BY conrelid, conname;