Aller au contenu

Cas d'utilisation — Notifications

Ce document décrit les cas d'utilisation du domaine Notifications.


UC-NOTIF-001 — Consulter ses notifications

Acteur : Joueur authentifié

Préconditions : L'utilisateur est connecté

Scénario principal :

  1. L'utilisateur accède à la page Notifications via la barre de navigation
  2. Le système affiche la liste des notifications groupées par jour
  3. Les notifications non lues sont visuellement distinguées (indicateur bleu)
  4. L'utilisateur peut filtrer par catégorie (Tout / Matchs / Scores)

Scénarios alternatifs :

  • Aucune notification : Le système affiche un message vide avec l'icône notifications_off
  • Erreur réseau : Le système affiche un message d'erreur

UC-NOTIF-002 — Marquer une notification comme lue

Acteur : Joueur authentifié

Préconditions : L'utilisateur a au moins une notification non lue

Scénario principal :

  1. L'utilisateur clique sur une notification non lue
  2. Le système marque la notification comme lue
  3. Le compteur de notifications non lues est décrémenté
  4. L'utilisateur est redirigé vers la page de détail de la partie associée

UC-NOTIF-003 — Marquer toutes les notifications comme lues

Acteur : Joueur authentifié

Préconditions : L'utilisateur a au moins une notification non lue

Scénario principal :

  1. L'utilisateur clique sur le bouton « Tout marquer comme lu » (icône ✓✓)
  2. Le système marque toutes les notifications de l'utilisateur comme lues
  3. Le compteur de notifications non lues passe à 0
  4. Les indicateurs visuels non lus disparaissent

UC-NOTIF-004 — Supprimer une notification

Acteur : Joueur authentifié

Préconditions : L'utilisateur a au moins une notification

Scénario principal :

  1. L'utilisateur clique sur le bouton de suppression (×) d'une notification
  2. Le système supprime la notification de manière définitive
  3. La notification disparaît de la liste

UC-NOTIF-005 — Recevoir une notification automatique

Acteur : Système (déclencheur automatique)

Préconditions : Un événement métier est déclenché (rejoindre/quitter/annuler une partie, soumettre/valider/contester un score)

Scénario principal :

  1. Un joueur effectue une action déclenchant une notification (cf. RB-NOTIF-002)
  2. Le système crée une notification pour chaque joueur concerné
  3. Le compteur de notifications non lues est incrémenté pour chaque destinataire
  4. Le badge dans la barre de navigation est mis à jour au prochain rafraîchissement (≤ 30s)

UC-NOTIF-006 — Configurer ses préférences de notification

Acteur : Joueur authentifié

Préconditions : L'utilisateur est connecté

Scénario principal :

  1. L'utilisateur accède à Paramètres → Notifications (/player/settings/notifications)
  2. Le système affiche la liste de tous les types de notifications configurables groupés par catégorie (Parties, Scores, Messages, Réservations, Club)
  3. Pour chaque type, l'utilisateur peut activer/désactiver individuellement les canaux applicables : In-App, Push, Email
  4. Les canaux non applicables pour un type (ex : email pour game_nearby) sont affichés grisés et non modifiables
  5. L'utilisateur peut activer/désactiver toutes les notifications en une action (mode silencieux)
  6. Le système persiste les préférences en temps réel via l'API (mise à jour optimiste en local)

Scénarios alternatifs :

  • Erreur serveur : Le système revient à l'état précédent et affiche un message d'erreur
  • Premier accès : Tous les canaux applicables sont activés par défaut

Types de notifications configurables :

Type Catégorie In-App Push Email
game_nearby Parties ✓ ✓ —
participation_request Parties ✓ ✓ ✓
participation_approved Parties ✓ ✓ ✓
participation_rejected Parties ✓ ✓ ✓
game_joined Parties ✓ ✓ ✓
game_left Parties ✓ ✓ ✓
game_cancelled Parties ✓ ✓ ✓
game_reminder Parties ✓ ✓ ✓
game_invitation Parties ✓ ✓ ✓
score_submitted Scores ✓ ✓ ✓
score_validated Scores ✓ ✓ ✓
score_contested Scores ✓ ✓ ✓
score_finalized Scores ✓ ✓ ✓
message_received Messages ✓ ✓ —
reservation_request Réservations ✓ ✓ ✓
reservation_accepted Réservations ✓ ✓ ✓
reservation_rejected Réservations ✓ ✓ ✓
club_validated Club ✓ ✓ ✓
club_rejected Club ✓ ✓ ✓

UC-NOTIF-007 — Rappel automatique avant une partie

Acteur : Système (tâche planifiée)

Préconditions : Une partie est confirmée et le délai de rappel configuré est atteint

Scénario principal :

  1. Toutes les 10 minutes, la commande games:send-reminders s'exécute
  2. Le système récupère les parties dont le début est dans {match_reminder_delay} heures (±10 min)
  3. Pour chaque partie trouvée sans reminder_sent_at, le système envoie une notification game_reminder à tous les joueurs confirmés
  4. Le champ reminder_sent_at est marqué sur la partie pour éviter les doublons

Règles métier :

  • Le délai de rappel est configurable via app_settings.match_reminder_delay (en heures, défaut 2h)
  • Un rappel n'est envoyé qu'une seule fois par partie (idempotent via reminder_sent_at)
  • Les préférences de notification utilisateur sont respectées (si le canal est désactivé, la notification n'est pas créée)