3.5 KiB
Epic 2: Teams & Constraints
Goal: Implémenter la gestion complète des Teams avec la règle métier fondamentale : impossible d'avoir 2 personnages du même compte dans une team active. L'utilisateur peut créer des teams, y ajouter des personnages, et voir le statut de complétion.
Story 2.1: Team Database Schema
As a developer, I want a Prisma schema for Teams with many-to-many relation to Characters, so that teams can be created and managed.
Acceptance Criteria:
- Model
Team: id, name, type (enum: MAIN, SUCCESS, PL, CUSTOM), isActive (boolean), createdAt, updatedAt - Relation many-to-many Team ↔ Character via table de jonction
TeamMember - Model
TeamMember: teamId, characterId, joinedAt - Enum
TeamTypeavec les types identifiés (Main, Succès, PL, Custom) - Migration générée et appliquée
- Seed script mis à jour avec 2-3 teams de test
Story 2.2: Team CRUD - Basic
As a user, I want to create, view, edit and delete teams, so that I can organize my characters into groups.
Acceptance Criteria:
- Page
/teamsaffiche la liste des teams en tableau (nom, type, nb membres, statut actif) - Bouton "Ajouter" ouvre un formulaire modal de création
- Formulaire avec champs : nom (requis), type (select), isActive (checkbox)
- Actions Edit/Delete sur chaque ligne
- Clic sur une team navigue vers
/teams/:id(fiche détail) - Suppression team supprime aussi les TeamMember associés
- Badge visuel pour teams actives vs inactives
- Toast de confirmation après chaque action
Story 2.3: Team Member Management
As a user, I want to add and remove characters from a team, so that I can compose my teams.
Acceptance Criteria:
- Page
/teams/:idaffiche la liste des membres actuels - Bouton "Ajouter membre" ouvre un sélecteur de personnages
- Sélecteur filtrable par nom, classe, compte, serveur
- Multi-select possible pour ajouter plusieurs personnages à la fois
- Bouton "Retirer" sur chaque membre pour le supprimer de la team
- Affichage du compte de chaque personnage dans la liste des membres
- Ordre des membres modifiable (drag & drop optionnel, sinon ordre d'ajout)
Story 2.4: Account Constraint Validation
As a user, I want the system to prevent adding two characters from the same account to an active team, so that I respect the game's simultaneous play restriction.
Acceptance Criteria:
- Lors de l'ajout d'un membre, vérification que son compte n'est pas déjà dans la team
- Si conflit détecté : message d'erreur clair indiquant le personnage en conflit
- Validation côté serveur (impossible de contourner)
- Validation côté client pour feedback immédiat
- La contrainte ne s'applique qu'aux teams actives (isActive = true)
- Teams inactives peuvent avoir plusieurs persos du même compte (pour planification)
- Lors du passage d'une team inactive → active : vérification des conflits
Story 2.5: Team Status Overview
As a user, I want to see a summary of each team's composition, so that I can quickly assess my teams.
Acceptance Criteria:
- Sur
/teams, colonnes : nom, type, membres (count), statut, classes représentées - Sur
/teams/:id, section récapitulative : nb membres, comptes utilisés, classes - Indicateur visuel si team incomplète (< 8 membres pour type MAIN)
- Liste des comptes utilisés dans la team (pour éviter conflits lors de multi-boxing)
- Affichage des classes sous forme d'icônes compactes