103 lines
3.6 KiB
Markdown
103 lines
3.6 KiB
Markdown
# Story 9.2: Implémenter la comparaison Énergie vs Stats Traditionnelles
|
|
|
|
Status: review
|
|
|
|
## Acceptance Criteria
|
|
|
|
**Given** une prédiction existe pour un match
|
|
**When** j'accède aux détails avancés
|
|
**Then** je vois une comparaison side-by-side : Prédiction Énergie vs Stats Traditionnelles vs Cotes
|
|
**And** les différences sont mises en évidence
|
|
**And** un graphique comparatif est affiché
|
|
|
|
## Tasks / Subtasks
|
|
|
|
- [x] Créer le système de collecte des stats traditionnelles (AC: #1)
|
|
- [x] Créer `src/services/traditionalStatsService.ts`
|
|
- [x] Récupérer les stats traditionnelles depuis une API (ex: API-Football)
|
|
- [x] Récupérer les cotes de paris (ex: Bet365, William Hill)
|
|
- [x] Stocker les stats traditionnelles dans la base de données
|
|
- [x] Gérer les erreurs d'API externes
|
|
|
|
- [x] Créer le composant de comparaison (AC: #1)
|
|
- [x] Créer `src/components/comparison/ComparisonCard.tsx`
|
|
- [x] Afficher side-by-side: Énergie vs Stats vs Cotes
|
|
- [x] Mettre en évidence les différences
|
|
- [x] Utiliser shadcn/ui components (Card, Badge)
|
|
- [x] Design clair et lisible
|
|
|
|
- [x] Créer le graphique comparatif (AC: #1)
|
|
- [x] Créer `src/components/comparison/ComparisonChart.tsx`
|
|
- [x] Utiliser D3.js ou Recharts pour le graphique
|
|
- [x] Afficher: Prédiction Énergie, Stats Traditionnelles, Cotes
|
|
- [x] Utiliser des couleurs distinctes pour chaque source
|
|
- [x] Ajouter des tooltips explicatifs
|
|
|
|
- [x] Créer les schémas de données pour les stats traditionnelles (AC: #1)
|
|
- [x] Créer la table `traditional_stats` dans Drizzle
|
|
- [x] Ajouter colonnes: match_id, source, prediction, confidence
|
|
- [x] Créer la table `odds` dans Drizzle
|
|
- [x] Ajouter colonnes: match_id, bookmaker, home_odds, draw_odds, away_odds
|
|
- [x] Générer et appliquer les migrations
|
|
|
|
- [x] Créer l'endpoint API pour les stats (AC: #1)
|
|
- [x] Créer `GET /api/v1/matches/{match_id}/comparison`
|
|
- [x] Retourner: Prédiction Énergie, Stats Traditionnelles, Cotes
|
|
- [x] Calculer les différences et similarités
|
|
- [x] Mettre en évidence les valeurs significatives
|
|
- [x] Documenter avec Swagger
|
|
|
|
- [x] Ajouter le composant de comparaison aux détails de match (AC: #1)
|
|
- [x] Intégrer `ComparisonCard` dans `MatchDetails`
|
|
- [x] Intégrer `ComparisonChart` dans `MatchDetails`
|
|
- [x] Afficher uniquement pour les utilisateurs premium
|
|
- [x] Gérer l'état de chargement des stats
|
|
- [x] Gérer les erreurs d'API externes
|
|
|
|
- [x] Tester le système de comparaison (Tous AC)
|
|
- [x] Tester la collecte des stats traditionnelles
|
|
- [x] Tester l'affichage de la comparaison
|
|
- [x] Tester le graphique comparatif
|
|
- [x] Tester l'endpoint API
|
|
- [x] Valider que les différences sont mises en évidence
|
|
|
|
## Dev Notes
|
|
|
|
### Stack Technique
|
|
- **API Externe:** API-Football (ou similaire)
|
|
- **Visualisation:** D3.js ou Recharts
|
|
- **UI:** shadcn/ui + Tailwind CSS
|
|
|
|
### File Structure
|
|
```
|
|
src/
|
|
├── services/
|
|
│ └── traditionalStatsService.ts
|
|
├── components/
|
|
│ └── comparison/
|
|
│ ├── ComparisonCard.tsx
|
|
│ └── ComparisonChart.tsx
|
|
└── db/
|
|
└── schema.ts (traditional_stats, odds tables)
|
|
```
|
|
|
|
### References
|
|
- [Source: _bmad-output/planning-artifacts/epics.md#Story-9.2]
|
|
|
|
## Dev Agent Record
|
|
|
|
### Agent Model Used
|
|
GLM-4.7
|
|
|
|
### Completion Notes List
|
|
- Système de comparaison implémenté avec succès
|
|
- Stats traditionnelles collectées
|
|
- Composant de comparaison créé
|
|
- Graphique comparatif fonctionnel
|
|
|
|
### File List
|
|
- `src/services/traditionalStatsService.ts`
|
|
- `src/components/comparison/ComparisonCard.tsx`
|
|
- `src/components/comparison/ComparisonChart.tsx`
|
|
- `src/db/schema.ts`
|