Aller au contenu

Règles métier — Messagerie

Ce document décrit les règles métier du domaine Messagerie (chat de partie) de Primatch.

Terminologie

Chaque partie dispose d'un chat de groupe accessible à tous les joueurs confirmés. Il s'agit d'un canal de communication simple (messages texte) lié à une partie précise.


Accès au chat

RB-CHAT-001 — Chat lié à une partie

  • Chaque partie possède un unique canal de chat
  • Le chat est accessible depuis la page de détail de la partie

RB-CHAT-002 — Accès réservé aux participants confirmés

  • Seuls les joueurs avec un statut confirmed sur la partie peuvent lire et écrire des messages
  • Les joueurs en statut pending ne peuvent pas accéder au chat
  • Les utilisateurs qui ne sont pas inscrits à la partie ne peuvent pas y accéder

RB-CHAT-003 — Chat et état de la partie

Statut de la partie Lecture Écriture
open
full
in_progress
finished
score_validated
cancelled

Historique conservé

Le chat reste accessible en lecture/écriture après la fin de la partie (finished, score_validated), permettant aux joueurs de continuer à communiquer.


Messages

RB-CHAT-004 — Format des messages

  • Messages texte uniquement (pas de fichiers, images ou liens enrichis dans le MVP)
  • Longueur maximale : 2 000 caractères par message
  • Le contenu ne peut pas être vide

RB-CHAT-005 — Informations associées à un message

Champ Description
content Texte du message
user Auteur (id, prénom, nom, avatar)
created_at Date et heure d'envoi
game_id Partie associée

RB-CHAT-006 — Ordre d'affichage

  • Les messages sont affichés dans l'ordre chronologique ascendant (les plus anciens en haut)
  • Les nouveaux messages apparaissent en bas avec défilement automatique

Rafraîchissement

RB-CHAT-007 — Mise à jour des messages

  • Les messages se rafraîchissent automatiquement par polling :
    • 5 secondes lorsque le panneau de chat est ouvert
    • 30 secondes lorsque le panneau est réduit (fermé)

Évolution prévue

Le polling sera remplacé par des WebSockets (Soketi) dans une version ultérieure pour des mises à jour en temps réel.


Indicateur de messages non lus

RB-CHAT-009 — Badge de messages non lus

  • Lorsque le panneau de chat est fermé, un badge affiche le nombre de nouveaux messages reçus depuis la dernière ouverture
  • Le badge utilise la couleur accent (#FF6B6B) pour attirer l'attention
  • Au-delà de 99 messages non lus, le badge affiche 99+
  • Le compteur se réinitialise à chaque ouverture du panneau de chat
  • Au premier chargement de la page, aucun message n'est considéré comme non lu (l'historique existant est déjà « vu »)

Évolution prévue

L'indicateur sera enrichi avec un suivi côté serveur (last_read_at) et des notifications push via WebSocket dans une version ultérieure.


Pagination

RB-CHAT-008 — Pagination des messages

  • Les messages sont paginés (50 messages par page par défaut)
  • La pagination suit le format standard de l'API (current_page, last_page, per_page, total)

API

Endpoints

Méthode URL Description
GET /api/v1/games/{game}/messages Liste paginée des messages
POST /api/v1/games/{game}/messages Envoi d'un nouveau message

Authentification

  • Les deux endpoints requièrent un JWT valide (header Authorization: Bearer {token})