chartbastan/_bmad-output/implementation-artifacts/6-3-implémenter-l-historique-personnel-avec-roi.md
2026-02-01 09:31:38 +01:00

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`