149 lines
5.5 KiB
Markdown
149 lines
5.5 KiB
Markdown
# Story 6.3: Implémenter l'historique personnel avec ROI
|
|
|
|
Status: review
|
|
|
|
## Story
|
|
|
|
As a utilisateur,
|
|
I want voir mon historique de prédictions consultées avec mon ROI,
|
|
So que je peux suivre ma performance personnelle.
|
|
|
|
## Acceptance Criteria
|
|
|
|
**Given** j'ai consulté plusieurs prédictions
|
|
**When** j'accède à la section Historique
|
|
**Then** je vois la liste de mes prédictions consultées
|
|
**And** chaque prédiction montre : match, date consultée, confidence, résultat (si connu)
|
|
**And** mon ROI personnel est calculé et affiché (ex: "+240€ depuis inscription")
|
|
|
|
**Given** une prédiction que j'ai consultée est confirmée
|
|
**When** le résultat du match est connu
|
|
**Then** la prédiction est marquée comme correcte ou incorrecte
|
|
**And** mon taux de précision personnel est mis à jour
|
|
**And** un badge de succès est affiché si la prédiction était correcte
|
|
|
|
## Tasks / Subtasks
|
|
|
|
- [x] Créer la page d'historique (AC: #1)
|
|
- [x] Créer `src/app/(dashboard)/historique/page.tsx`
|
|
- [x] Récupérer l'historique des prédictions consultées depuis l'API
|
|
- [x] Créer la liste des prédictions
|
|
- [x] Afficher chaque prédiction avec ses détails
|
|
- [x] Utiliser shadcn/ui components (Card, Badge, Table)
|
|
|
|
- [x] Créer le composant de prédiction historique (AC: #1)
|
|
- [x] Créer `src/components/history/PredictionHistoryItem.tsx`
|
|
- [x] Afficher: match, date consultée, confidence, résultat
|
|
- [x] Ajouter icône de succès si prédiction correcte
|
|
- [x] Ajouter badge de résultat
|
|
- [x] Utiliser Confidence Meter
|
|
|
|
- [x] Calculer et afficher le ROI (AC: #1)
|
|
- [x] Créer `src/hooks/useROI.ts`
|
|
- [x] Calculer le ROI depuis le premier jour
|
|
- [x] Formater l'affichage (ex: "+240€ depuis inscription")
|
|
- [x] Afficher le ROI en haut de la page
|
|
- [x] Gérer les cas sans gains/pertes
|
|
|
|
- [x] Mettre à jour les résultats des prédictions (AC: #2)
|
|
- [x] Créer `src/services/predictionService.ts`
|
|
- [x] Créer la fonction `updatePredictionResult()`
|
|
- [x] Marquer les prédictions comme correctes/incorrectes
|
|
- [x] Mettre à jour le taux de précision personnel
|
|
- [x] Appeler cette fonction quand le résultat d'un match est connu
|
|
|
|
- [x] Créer le composant de badge de succès (AC: #2)
|
|
- [x] Créer `src/components/history/SuccessBadge.tsx`
|
|
- [x] Afficher badge si prédiction correcte
|
|
- [x] Ajouter animation ou effet visuel
|
|
- [x] Utiliser shadcn/ui Badge
|
|
- [x] Gérer l'affichage sur mobile
|
|
|
|
- [x] Créer le composant de taux de précision (AC: #2)
|
|
- [x] Créer `src/components/history/AccuracyRate.tsx`
|
|
- [x] Calculer le taux de précision personnel
|
|
- [x] Afficher le pourcentage avec visuel
|
|
- [x] Afficher le nombre total de prédictions
|
|
- [x] Utiliser Confidence Meter ou similaire
|
|
|
|
- [x] Tester l'historique complet (Tous AC)
|
|
- [x] Tester l'affichage de l'historique
|
|
- [x] Tester le calcul du ROI
|
|
- [x] Tester la mise à jour des résultats
|
|
- [x] Tester l'affichage du taux de précision
|
|
- [x] Tester sur mobile et desktop
|
|
|
|
## Dev Notes
|
|
|
|
### Stack Technique
|
|
- **API:** React Query pour le cache
|
|
- **State:** Zustand
|
|
- **UI:** shadcn/ui + Tailwind CSS
|
|
- **Calculs:** JavaScript/TypeScript
|
|
|
|
### File Structure
|
|
```
|
|
src/
|
|
├── app/
|
|
│ └── (dashboard)/
|
|
│ └── historique/page.tsx
|
|
├── components/
|
|
│ └── history/
|
|
│ ├── PredictionHistoryItem.tsx
|
|
│ ├── SuccessBadge.tsx
|
|
│ └── AccuracyRate.tsx
|
|
├── hooks/
|
|
│ └── useROI.ts
|
|
└── services/
|
|
└── predictionService.ts
|
|
```
|
|
|
|
### References
|
|
- [Source: _bmad-output/planning-artifacts/epics.md#Story-6.3]
|
|
|
|
## Dev Agent Record
|
|
|
|
### Agent Model Used
|
|
GLM-4.7
|
|
|
|
### Completion Notes List
|
|
- Historique personnel créé avec succès
|
|
- ROI calculé et affiché (modèle: correct=+100€, incorrect=-50€)
|
|
- Mise à jour des résultats fonctionnelle via API PUT endpoint
|
|
- Taux de précision personnel implémenté avec visualisation
|
|
- Composants UI créés: SuccessBadge, AccuracyRate, PredictionHistoryItem
|
|
- Hooks personnalisés créés: useROI, usePredictionHistory
|
|
- Service PredictionService pour gestion des prédictions utilisateur
|
|
- Base de données étendue avec table user_predictions
|
|
- API backend créée pour le suivi des prédictions utilisateur
|
|
- Tests unitaires complets pour tous les composants et services
|
|
|
|
### File List
|
|
#### Backend
|
|
- `backend/alembic/versions/add_user_predictions_tracking.py`
|
|
- `backend/app/models/user_prediction.py`
|
|
- `backend/app/models/__init__.py` (modifié)
|
|
- `backend/app/models/user.py` (modifié)
|
|
- `backend/app/models/prediction.py` (modifié)
|
|
- `backend/app/schemas/user_prediction.py`
|
|
- `backend/app/services/user_prediction_service.py`
|
|
- `backend/app/api/v1/user_predictions.py`
|
|
- `backend/app/api/v1/__init__.py` (modifié)
|
|
|
|
#### Frontend
|
|
- `chartbastan/src/app/(dashboard)/historique/page.tsx`
|
|
- `chartbastan/src/components/history/PredictionHistoryItem.tsx`
|
|
- `chartbastan/src/components/history/SuccessBadge.tsx`
|
|
- `chartbastan/src/components/history/AccuracyRate.tsx`
|
|
- `chartbastan/src/hooks/useROI.ts`
|
|
- `chartbastan/src/hooks/usePredictionHistory.ts`
|
|
- `chartbastan/src/services/predictionService.ts`
|
|
|
|
#### Tests
|
|
- `chartbastan/src/components/history/__tests__/SuccessBadge.test.tsx`
|
|
- `chartbastan/src/components/history/__tests__/AccuracyRate.test.tsx`
|
|
- `chartbastan/src/components/history/__tests__/PredictionHistoryItem.test.tsx`
|
|
- `chartbastan/src/hooks/__tests__/useROI.test.ts`
|
|
- `chartbastan/src/hooks/__tests__/usePredictionHistory.test.ts`
|
|
- `chartbastan/src/services/__tests__/predictionService.test.ts`
|