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
confirmedsur la partie peuvent lire et écrire des messages - Les joueurs en statut
pendingne 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})