Files
dofus-manager/docs/prd/epic-2-teams-constraints.md
2026-01-19 08:52:38 +01:00

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:

  1. Model Team: id, name, type (enum: MAIN, SUCCESS, PL, CUSTOM), isActive (boolean), createdAt, updatedAt
  2. Relation many-to-many Team ↔ Character via table de jonction TeamMember
  3. Model TeamMember: teamId, characterId, joinedAt
  4. Enum TeamType avec les types identifiés (Main, Succès, PL, Custom)
  5. Migration générée et appliquée
  6. 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:

  1. Page /teams affiche la liste des teams en tableau (nom, type, nb membres, statut actif)
  2. Bouton "Ajouter" ouvre un formulaire modal de création
  3. Formulaire avec champs : nom (requis), type (select), isActive (checkbox)
  4. Actions Edit/Delete sur chaque ligne
  5. Clic sur une team navigue vers /teams/:id (fiche détail)
  6. Suppression team supprime aussi les TeamMember associés
  7. Badge visuel pour teams actives vs inactives
  8. 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:

  1. Page /teams/:id affiche la liste des membres actuels
  2. Bouton "Ajouter membre" ouvre un sélecteur de personnages
  3. Sélecteur filtrable par nom, classe, compte, serveur
  4. Multi-select possible pour ajouter plusieurs personnages à la fois
  5. Bouton "Retirer" sur chaque membre pour le supprimer de la team
  6. Affichage du compte de chaque personnage dans la liste des membres
  7. 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:

  1. Lors de l'ajout d'un membre, vérification que son compte n'est pas déjà dans la team
  2. Si conflit détecté : message d'erreur clair indiquant le personnage en conflit
  3. Validation côté serveur (impossible de contourner)
  4. Validation côté client pour feedback immédiat
  5. La contrainte ne s'applique qu'aux teams actives (isActive = true)
  6. Teams inactives peuvent avoir plusieurs persos du même compte (pour planification)
  7. 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:

  1. Sur /teams, colonnes : nom, type, membres (count), statut, classes représentées
  2. Sur /teams/:id, section récapitulative : nb membres, comptes utilisés, classes
  3. Indicateur visuel si team incomplète (< 8 membres pour type MAIN)
  4. Liste des comptes utilisés dans la team (pour éviter conflits lors de multi-boxing)
  5. Affichage des classes sous forme d'icônes compactes