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)