115 lines
4.0 KiB
Markdown
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`
|