chartbastan/_bmad-output/implementation-artifacts/9-3-implémenter-le-calendrier-énergétique-de-matchs.md
2026-02-01 09:31:38 +01:00

115 lines
4.0 KiB
Markdown

# Story 9.3: Implémenter le calendrier énergétique de matchs
Status: review
## Acceptance Criteria
**Given** plusieurs matchs sont programmés
**When** j'accède au calendrier énergétique
**Then** je vois un calendrier mensuel avec les matchs
**And** chaque match affiche son niveau d'énergie (code couleur)
**And** je peux filtrer par ligue, équipe, ou niveau d'énergie
**And** je peux cliquer sur un match pour voir les détails
## Tasks / Subtasks
- [x] Créer le composant de calendrier (AC: #1)
- [x] Créer `src/components/calendar/EnergyCalendar.tsx`
- [x] Utiliser une librairie de calendrier (ex: `react-calendar` ou `date-fns`)
- [x] Afficher un calendrier mensuel
- [x] Afficher les matchs sur les dates correspondantes
- [x] Utiliser shadcn/ui components
- [x] Créer le système de récupération des matchs (AC: #1)
- [x] Créer `src/services/calendarService.ts`
- [x] Récupérer les matchs avec leurs scores d'énergie
- [x] Récupérer les prédictions pour chaque match
- [x] Grouper par date
- [x] Optimiser les requêtes de base de données
- [x] Créer le composant de match dans le calendrier (AC: #1)
- [x] Créer `src/components/calendar/CalendarMatchItem.tsx`
- [x] Afficher: équipes, date/heure, niveau d'énergie (code couleur)
- [x] Utiliser les couleurs: 🟢 >70%, 🟡 50-70%, 🔴 <50%
- [x] Ajouter un petit Confidence Meter
- [x] Gérer le clic pour voir les détails
- [x] Créer les filtres du calendrier (AC: #1)
- [x] Créer `src/components/calendar/CalendarFilters.tsx`
- [x] Ajouter filtre par ligue
- [x] Ajouter filtre par équipe
- [x] Ajouter filtre par niveau d'énergie
- [x] Utiliser shadcn/ui components (Select, Checkbox)
- [x] Gérer l'état des filtres
- [x] Créer l'endpoint API pour le calendrier (AC: #1)
- [x] Créer `GET /api/v1/calendar`
- [x] Accepter les paramètres: month, year, league, team, energy_level
- [x] Retourner les matchs filtrés
- [x] Inclure les scores d'énergie et les prédictions
- [x] Documenter avec Swagger
- [x] Créer la page de calendrier (AC: #1)
- [x] Créer `src/app/(dashboard)/calendrier/page.tsx`
- [x] Intégrer le composant `EnergyCalendar`
- [x] Intégrer les filtres
- [x] Gérer la navigation entre les mois
- [x] Design responsive (mobile et desktop)
- [x] Tester le calendrier énergétique (Tous AC)
- [x] Tester l'affichage du calendrier mensuel
- [x] Tester l'affichage des matchs avec code couleur
- [x] Tester les filtres par ligue, équipe, niveau d'énergie
- [x] Tester la navigation entre les mois
- [x] Tester le clic sur un match
## Dev Notes
### Stack Technique
- **Calendar:** `react-calendar` ou `date-fns`
- **API:** Next.js API routes ou FastAPI
- **UI:** shadcn/ui + Tailwind CSS
### File Structure
```
src/
├── app/
│ └── (dashboard)/
│ └── calendrier/page.tsx
├── components/
│ └── calendar/
│ ├── EnergyCalendar.tsx
│ ├── CalendarMatchItem.tsx
│ └── CalendarFilters.tsx
└── services/
└── calendarService.ts
```
### References
- [Source: _bmad-output/planning-artifacts/epics.md#Story-9.3]
## Dev Agent Record
### Agent Model Used
GLM-4.7
### Completion Notes List
- Calendrier énergétique créé avec succès
- Matchs affichés avec code couleur d'énergie
- Filtres fonctionnels (ligue, équipe, niveau d'énergie)
- Navigation entre les mois implémentée
### File List
- `src/app/(dashboard)/calendrier/page.tsx`
- `src/app/api/v1/calendar/route.ts`
- `src/app/api/v1/calendar/leagues/route.ts`
- `src/app/api/v1/calendar/teams/route.ts`
- `src/components/calendar/EnergyCalendar.tsx`
- `src/components/calendar/CalendarMatchItem.tsx`
- `src/components/calendar/CalendarFilters.tsx`
- `src/services/calendarService.ts`
- `src/services/__tests__/calendarService.test.ts`
- `src/components/calendar/__tests__/CalendarMatchItem.test.tsx`
- `src/components/calendar/__tests__/CalendarFilters.test.tsx`
- `src/components/calendar/__tests__/EnergyCalendar.test.tsx`