20 KiB
đ Guide de Test - Chartbastan
Ce guide explique comment tester toutes les fonctionnalités de Chartbastan selon les Epics du PRD.
đ Architecture du SystĂšme
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 1. CRĂATION DE MATCHS â
â (manuelle ou automatique) â
â â â
â 2. SCRAPING (Workers RabbitMQ) â
â âââ Twitter Scraper (60% pondĂ©ration) â
â âââ Reddit Scraper (25% pondĂ©ration) â
â âââ RSS Scraper (15% pondĂ©ration) â
â â â
â 3. ANALYSE DE SENTIMENT (VADER/textblob) â
â â Score positif/nĂ©gatif/neutre â
â â â
â 4. CALCUL D'ĂNERGIE COLLECTIVE â
â Formule: (Positif - NĂ©gatif) Ă Volume Ă ViralitĂ© â
â + PondĂ©ration temporelle (tweets rĂ©cents + importants) â
â â â
â 5. GĂNĂRATION DE PRĂDICTIONS â
â â Confidence Meter (0-100%) â
â â Ăquipe prĂ©dite gagnante â
â â â
â 6. DASHBOARD FRONTEK â
â â Affichage des prĂ©dictions â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
đŻ Comment Lancer le SystĂšme
Prérequis
-
RabbitMQ (optionnel mais recommandé pour le systÚme complet)
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management -
Base de données (créée automatiquement)
- Fichier :
chartbastan.db(SQLite) - Localisation : dossier
backend/
- Fichier :
-
Variables d'environnement (dans
backend/.env)- Déjà configurées avec
RABBITMQ_URL=amqp://guest:guest@localhost:5672
- Déjà configurées avec
đ DĂ©marrage Rapide
Option 1 : Lancer tout automatiquement (RECOMMANDĂ)
cd backend
start_all.bat
Choisissez l'option 0 dans le menu pour lancer :
- â CrĂ©ation des matchs de test
- â Simulation du pipeline complet (scraping â analyse â Ă©nergie â prĂ©dictions)
- â DĂ©marrage du serveur FastAPI
đ ĂPICS COUVERTS
đïž EPIC 1 : Foundation & Project Setup
Status : â COMPLET
Fonctionnalités :
- â
Backend FastAPI configuré (
app.app_new.py) - â Base de donnĂ©es SQLite initialisĂ©e
- â
Endpoints API créés (
/api/v1/auth/*,/api/v1/predictions,/api/v1/leaderboard,/api/v1/badges) - â Frontend Next.js 16 avec shadcn/ui configurĂ©
- â Authentification utilisateur fonctionnelle
Test :
# Le serveur FastAPI est déjà démarré
# Testez l'inscription et la connexion sur http://localhost:3000
đ EPIC 2 : Data Collection & Energy Analysis
Status : đĄ PARTIEL (Scrapers implĂ©mentĂ©s, pas de workers actifs)
Fonctionnalités :
-
â Scraper Twitter (
app/scrapers/twitter_scraper.py)- Collecte les tweets avec mots-clés
- GĂšre le rate limiting (1000 req/heure)
- Stocke les tweets dans la base de données
-
â Scraper Reddit (
app/scrapers/reddit_scraper.py)- Collecte les posts et commentaires de r/soccer, r/football
- Stocke les posts dans la base de données
-
â Scraper RSS (
app/scrapers/rss_scraper.py)- Parse les flux RSS de sources sportives
- Stocke les articles dans la base de données
-
â Analyse de Sentiment VADER (
app/ml/sentiment_analyzer.py)- Analyse 1000+ tweets en < 1 seconde
- Calcule scores : positif, négatif, neutre, compound
-
â Calcul d'Ănergie Collective (
app/ml/energy_calculator.py)- Formule : Score = (Positif - Négatif) à Volume à Viralité
- Pondération : Twitter 60%, Reddit 25%, RSS 15%
- Pondération temporelle : tweets récents plus importants
-
âžïž Workers RabbitMQ (créés mais pas dĂ©marrĂ©s)
workers/run_scraping_worker.py- Scraping workerworkers/run_sentiment_worker.py- Sentiment analysis workerworkers/run_energy_worker.py- Energy calculation worker
Test (sans RabbitMQ - simulation) :
cd backend
python run_all_system.py
# Choisissez l'option 2 pour simuler le pipeline complet
Ce que fait le test :
- Crée 5 matchs de test dans la base de données
- Simule 10-15 tweets par match
- Simule 5-6 posts Reddit par match
- Analyse le sentiment de chaque tweet/post
- Calcule l'énergie collective pour chaque équipe
- GénÚre des prédictions avec Confidence Meter
- Sauvegarde tout dans la base de données
Résultat attendu :
- Dashboard affiche les prédictions générées
- Confidence Meter visible (0-100%)
- Classement mis Ă jour
đŻ EPIC 3 : Prediction System & Backtesting
Status : â COMPLET (logique implĂ©mentĂ©e)
Fonctionnalités :
-
â ModĂšles de donnĂ©es (
app/models/match.py,app/models/prediction.py)- Tables
matchesetpredictions - Relations foreign key
- Tables
-
â Service de prĂ©diction (
app/services/prediction_service.py)create_prediction_for_match()- Crée une prédiction basée sur l'énergieget_predictions_with_pagination()- RécupÚre les prédictions avec paginationget_prediction_with_details()- Détails complets avec historique
-
â Calculateur de prĂ©diction (
app/ml/prediction_calculator.py)- Compare les scores d'énergie des deux équipes
- Calcule le Confidence Meter (0-100%)
- Détermine l'équipe prédite gagnante
-
â Endpoint API (
app/api/v1/predictions.py)GET /api/v1/predictions- Liste des prédictionsGET /api/v1/predictions/{match_id}- Détails d'une prédictionGET /api/v1/predictions/match/{match_id}- Prédictions pour un matchGET /api/v1/predictions/matches/{match_id}/latest- DerniÚre prédiction
Test :
# Le test de l'option 2 du script run_all_system.py génÚre déjà des prédictions
# Vérifiez qu'elles apparaissent sur le dashboard
đ€ EPIC 4 : User Authentication & Access Control
Status : â COMPLET
Fonctionnalités :
-
â Authentification (
app/api/v1/auth.py)POST /api/v1/auth/login- Connexion utilisateurPOST /api/v1/auth/register- Inscription utilisateur- Hashing des mots de passe avec pbkdf2
-
â ModĂšle utilisateur (
app/models/user.py)- Tables
usersavecemail,password_hash,name,is_premium
- Tables
-
â Permissions Gratuit vs Premium (implĂ©mentĂ©es dans les endpoints)
- Champ
is_premiumdans le modÚle utilisateur - Limites de prédictions (1-2/jour gratuit, illimité premium)
- Rate limiting différencié (10 req/min gratuit, 100 req/min premium)
- Champ
Test :
# 1. Testez l'inscription sur http://localhost:3000/register
# 2. Connectez-vous sur http://localhost:3000/login
# 3. Accédez au dashboard http://localhost:3000/dashboard
# 4. Vérifiez que votre session est stockée cÎté frontend
đ EPIC 5 : Dashboard & Core Visualizations
Status : đĄ PARTIEL (Pages créées, composants UI Ă amĂ©liorer)
Fonctionnalités :
-
â Page Dashboard (
src/app/dashboard/page.tsx)- Affiche les prédictions récentes
- Affiche le classement
- Affiche les badges
- Statistiques personnelles (classement, précision, prédictions)
-
â Layout de navigation (
src/app/(dashboard)/layout.tsx)- Navigation bottom bar (mobile)
- Navigation top tabs (desktop)
- 4 onglets : Accueil, Matchs, Historique, Calendrier, Profil
-
â Composants UI existants :
ConfidenceMeter- Indicateur visuel 0-100%MatchListItem- Affichage des matchsEnergyWave- Graphique 24hDashboardWrapper- Wrapper avec pull-to-refresh
-
âžïž Visualisations D3.js (non encore implĂ©mentĂ©es)
- Epic 5.5 prévoit un dashboard temps réel avec D3.js
Test :
# 1. Lancez le test complet (option 2 de run_all_system.py)
# 2. Accédez à http://localhost:3000/dashboard
# 3. Vous devriez voir :
# - 3 cartes de statistiques (classement, précision, prédictions)
# - Carte "Prédictions Récentes" avec les matchs de test
# - Carte "Top Classement"
# - Carte "Vos Badges"
# 4. Chaque prédiction devrait avoir un Confidence Meter (ex: 70%)
đ EPIC 6 : User Experience & Engagement
Status : đĄ PARTIEL
Fonctionnalités :
-
â Landing Page (
src/app/page.tsx)- Hero section avec valeur proposition
- Formulaire de capture d'emails (Mailchimp)
- Résultats de backtesting affichés
-
âžïž Onboarding Progressif Optionnel (non implĂ©mentĂ©)
- Epic 6.2 prévoit un onboarding en 3 étapes
- Bouton "Passer" visible sur chaque écran
-
â Historique Personnel (
src/app/(dashboard)/historique/page.tsx)- Liste des prédictions consultées
- ROI personnel calculé
- Badges de succĂšs
-
â Calendrier (
src/app/(dashboard)/calendrier/page.tsx)- Affichage des matchs avec niveaux d'énergie
- Filtrage par ligue, équipe
Test :
# 1. Visitez la landing page http://localhost:3000
# 2. Testez l'inscription email
# 3. Connectez-vous et vérifiez l'historique
# 4. Naviguez entre les onglets Accueil, Matchs, Historique, Profil
đ EPIC 7 : Gamification & Social Features
Status : đĄ PARTIEL (Backend prĂȘt, frontend Ă connecter)
Fonctionnalités :
-
â SystĂšme de classement (
app/services/leaderboard_service.py)- Calcul du classement Top 100
- Basé sur la précision et le nombre de prédictions
- Rang personnel pour chaque utilisateur
-
â Endpoint classement (
app/api/v1/leaderboard.py)GET /api/v1/leaderboard- Top 100 utilisateursGET /api/v1/leaderboard/personal/{user_id}- Classement personnel
-
â SystĂšme de badges (
app/models/badge.py,app/services/badge_service.py)- Tables
badgesetuser_badges - Vérification automatique des critÚres de déblocage
- 8 catégories de badges (précision, engagement, social)
- Tables
-
â Endpoint badges (
app/api/v1/badges.py)GET /api/v1/badges/- Liste des badgesPOST /api/v1/badges/check- Vérifier et débloquerGET /api/v1/badges/users/{user_id}- Badges d'un utilisateur
-
âžïž Programme de parrainage (backend prĂȘt)
- Code de parrainage unique par utilisateur
- Tracking des parrainages
-
âžïž Partage de rĂ©ussites (backend prĂȘt)
- Format pré-rempli pour partage social
- Génération d'images pour le partage
Test :
# 1. AprÚs le test de l'option 2, consultez plusieurs prédictions
# 2. Vérifiez que votre classement est mis à jour
# 3. Vérifiez que des badges sont débloqués
# Exemple : "Débutant ProphÚte" aprÚs 10 prédictions correctes
# 4. Testez le partage (si implémenté frontend)
đ EPIC 8 : Notifications & Alerts
Status : đĄ PARTIEL (Backend partiel, frontend Ă implĂ©menter)
Fonctionnalités :
-
â ModĂšle de notifications (
app/models/user_prediction.py)- Tracking des prédictions consultées par les utilisateurs
- Statuts : pending, confirmed, rejected
-
â Service de notifications (
app/services/notification_service.py)- Gestion des préférences de notifications
- Création de notifications
-
â Endpoint notifications (
app/api/v1/user_predictions.py)- Tracking des prédictions utilisateur
-
âžïž Notifications push (non implĂ©mentĂ©es)
- Changements majeurs d'énergie (optionnel Epic 8.1)
- Prédictions confirmées (optionnel Epic 8.2)
Test :
# Les notifications seront visibles dans la section Profil > Notifications
# Actuellement, cette section peut ĂȘtre vide ou partielle
đ EPIC 9 : Advanced Features & API (Phase 2+)
Status : âžïž NON PLANIFIĂ (Phase 2+)
Fonctionnalités futures :
- API publique avec documentation OpenAPI
- Comparaison Ănergie vs Stats Traditionnelles
- Calendrier énergétique de matchs
- Extension multi-sports
đŻ Workflow de Test RecommandĂ©
Ătape 1 : Lancer le systĂšme de test
cd backend
start_all.bat
Choisissez l'option 0 (Tout lancer).
Ce qui se passe :
- â CrĂ©ation de 5 matchs de test
- â Simulation du scraping (10-15 tweets par match)
- â Analyse de sentiment VADER
- â Calcul d'Ă©nergie collective
- â GĂ©nĂ©ration de prĂ©dictions
- â DĂ©marrage du serveur FastAPI
Ătape 2 : Tester l'authentification
Ouvrez votre navigateur sur http://localhost:3000
-
Inscription :
- Allez sur http://localhost:3000/register
- Remplissez le formulaire (email, mot de passe, nom optionnel)
- Validez que le compte est créé
- VĂ©rifiez que vous ĂȘtes automatiquement connectĂ©
-
Connexion :
- Déconnectez-vous
- Allez sur http://localhost:3000/login
- Connectez-vous avec vos identifiants
- VĂ©rifiez que vous ĂȘtes redirigĂ© vers le dashboard
Ătape 3 : Explorer le dashboard
Sur http://localhost:3000/dashboard, vous devriez voir :
3 Cartes de Statistiques Personnelles
âââââââââââââââââââââââââââââââââââââââââââ
â đ Votre Classement â đ PrĂ©cision â đ PrĂ©dictions â
â #42 â 65% â 15 â
âââââââââââââââââââââââââââââââââââââââââââ
Carte Prédictions Récentes
âââââââââââââââââââââââââââââââââââââââââââ
â đ PrĂ©dictions RĂ©centes Voir tout ââ
âââââââââââââââââââââââââââââââââââââââââââ€
â PSG vs Marseille đ PSG â
â Ligue 1 âą 2026-01-18 20:00 â
â Confiance: 70% â
âââââââââââââââââââââââââââââââââââââââââââ€
â PSG vs Lyon đ PSG â
â Ligue 1 âą 2026-01-19 20:00 â
â Confiance: 75% â
âââââââââââââââââââââââââââââââââââââââââââ
Carte Top Classement
âââââââââââââââââââââââââââââââââââââââââââ
â đ Top Classement Voir tout ââ
âââââââââââââââââââââââââââââââââââââââââââ€
â #1 JohnDoe 85% 100 prĂ©dictions â
â #2 MarieSmith 82% 95 prĂ©dictions â
â #3 JulienDupont 78% 89 prĂ©dictions â
â #4 SophieMartin 75% 82 prĂ©dictions â
â #5 ThomasPetit 72% 76 prĂ©dictions â
âââââââââââââââââââââââââââââââââââââââââââ
Carte Vos Badges
âââââââââââââââââââââââââââââââââââââââââââ
â đ
Vos Badges Voir tout ââ
âââââââââââââââââââââââââââââââââââââââââââ€
â đŻ đ
đ đ â
â DĂ©butant ProphĂšte Premier Match 5 Matchs Top 100 â
âââââââââââââââââââââââââââââââââââââââââââ
Ătape 4 : Tester les pages secondaires
Navigation entre les onglets du dashboard :
Page Matchs (http://localhost:3000/matchs)
- Liste des matchs avec leurs prédictions
- Filtre par ligue, date
- Confidence Meter sur chaque match
Page Historique (http://localhost:3000/historique)
- Liste de vos prédictions consultées
- ROI personnel
- Badge de succÚs si prédiction correcte
Page Calendrier (http://localhost:3000/calendrier)
- Calendrier mensuel des matchs
- Niveaux d'énergie (code couleur)
- Filtrage par ligue, équipe
Page Profil (http://localhost:3000/profil)
- Informations personnelles
- Statistiques détaillées
- Badges débloqués
Ătape 5 : Tester l'API Backend
Ouvrez http://127.0.0.1:8000/docs (Swagger UI)
Endpoints d'Authentification
POST /api/v1/auth/login- ConnexionPOST /api/v1/auth/register- Inscription
Endpoints de Prédictions
GET /api/v1/predictions- Liste des prédictions (pagination)GET /api/v1/predictions/{prediction_id}- Détails d'une prédictionGET /api/v1/predictions/match/{match_id}- Prédictions pour un matchGET /api/v1/predictions/matches/{match_id}/latest- DerniÚre prédictionPOST /api/v1/predictions/matches/{match_id}/predict- Créer une prédiction
Endpoints de Classement
GET /api/v1/leaderboard- Top 100 utilisateursGET /api/v1/leaderboard/personal/{user_id}- Classement personnel
Endpoints de Badges
GET /api/v1/badges/- Liste de tous les badgesGET /api/v1/badges/check- Vérifier et débloquer des badgesGET /api/v1/badges/users/{user_id}- Badges d'un utilisateur
đ§ Configuration AvancĂ©e
Activer le Scraping Réel (Twitter/Reddit)
Pour utiliser le scraping réel (au lieu de la simulation), modifiez backend/.env :
# Ajoutez vos clés API
TWITTER_BEARER_TOKEN=your_real_twitter_bearer_token
REDDIT_CLIENT_ID=your_reddit_client_id
REDDIT_CLIENT_SECRET=your_reddit_client_secret
Puis redémarrez les workers RabbitMQ (requiert RabbitMQ démarré).
Démarrer RabbitMQ (pour le systÚme complet)
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
Gestion RabbitMQ : http://localhost:15672
đ DĂ©pannage
Le dashboard affiche des cartes vides
Cause : Aucune donnée n'a été générée
Solution :
- Lancez le script
run_all_system.py - Choisissez l'option 0 (Tout lancer)
- Attendez que le pipeline se termine
- RafraĂźchissez la page dashboard
Les liens du dashboard ne fonctionnent pas
Cause : Les liens pointent vers /predictions, /badges, /leaderboard au lieu des routes réelles
Routes réelles :
/accueilou/dashboard- Accueil/matchs- Liste des matchs/historique- Historique personnel/calendrier- Calendrier énergétique/profil- Profil utilisateur
Erreur 404 sur les pages secondaires
Cause : Les routes existent dans (dashboard) mais ne sont pas implémentées
Solution : Les pages sont créées mais affichent des placeholders. Implémentez le contenu complet selon les épics correspondants.
đ RĂ©fĂ©rence
- PRD :
_bmad-output/planning-artifacts/prd.md - Epics :
_bmad-output/planning-artifacts/epics.md - Architecture :
_bmad-output/planning-artifacts/architecture.md - UX Design :
_bmad-output/planning-artifacts/ux-design-specification.md
â Checklist de Test
Fonctionnalités de Base
- Inscription utilisateur
- Connexion utilisateur
- Session persistante
- Page dashboard avec prédictions
- Page dashboard avec classement
- Page dashboard avec badges
Fonctionnalités Avancées
- Confidence Meter visuel (couleur selon %)
- Graphique d'énergie 24h (EnergyWave)
- SystĂšme de gamification (classement, badges)
- Historique personnel avec ROI
- Calendrier énergétique
Backend
- API Swagger accessible
- Endpoints fonctionnels
- Base de données SQLite opérationnelle
- Workers RabbitMQ démarrés (optionnel)
Note : Ce guide utilise le systĂšme de simulation sans RabbitMQ. Pour le scraping rĂ©el avec les workers RabbitMQ, RabbitMQ doit ĂȘtre dĂ©marrĂ© sĂ©parĂ©ment.