# 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`