chartbastan/README_TESTING.md
2026-02-01 09:31:38 +01:00

20 KiB
Raw Permalink Blame History

🚀 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

  1. RabbitMQ (optionnel mais recommandé pour le systÚme complet)

    docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
    
  2. Base de données (créée automatiquement)

    • Fichier : chartbastan.db (SQLite)
    • Localisation : dossier backend/
  3. Variables d'environnement (dans backend/.env)

    • DĂ©jĂ  configurĂ©es avec RABBITMQ_URL=amqp://guest:guest@localhost:5672

🚀 DĂ©marrage Rapide

Option 1 : Lancer tout automatiquement (RECOMMANDÉ)

cd backend
start_all.bat

Choisissez l'option 0 dans le menu pour lancer :

  1. ✅ CrĂ©ation des matchs de test
  2. ✅ Simulation du pipeline complet (scraping → analyse → Ă©nergie → prĂ©dictions)
  3. ✅ 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 worker
    • workers/run_sentiment_worker.py - Sentiment analysis worker
    • workers/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 :

  1. Crée 5 matchs de test dans la base de données
  2. Simule 10-15 tweets par match
  3. Simule 5-6 posts Reddit par match
  4. Analyse le sentiment de chaque tweet/post
  5. Calcule l'énergie collective pour chaque équipe
  6. GénÚre des prédictions avec Confidence Meter
  7. 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 matches et predictions
    • Relations foreign key
  • ✅ Service de prĂ©diction (app/services/prediction_service.py)

    • create_prediction_for_match() - CrĂ©e une prĂ©diction basĂ©e sur l'Ă©nergie
    • get_predictions_with_pagination() - RĂ©cupĂšre les prĂ©dictions avec pagination
    • get_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Ă©dictions
    • GET /api/v1/predictions/{match_id} - DĂ©tails d'une prĂ©diction
    • GET /api/v1/predictions/match/{match_id} - PrĂ©dictions pour un match
    • GET /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 utilisateur
    • POST /api/v1/auth/register - Inscription utilisateur
    • Hashing des mots de passe avec pbkdf2
  • ✅ ModĂšle utilisateur (app/models/user.py)

    • Tables users avec email, password_hash, name, is_premium
  • ✅ Permissions Gratuit vs Premium (implĂ©mentĂ©es dans les endpoints)

    • Champ is_premium dans 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)

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 matchs
    • EnergyWave - Graphique 24h
    • DashboardWrapper - 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 utilisateurs
    • GET /api/v1/leaderboard/personal/{user_id} - Classement personnel
  • ✅ SystĂšme de badges (app/models/badge.py, app/services/badge_service.py)

    • Tables badges et user_badges
    • VĂ©rification automatique des critĂšres de dĂ©blocage
    • 8 catĂ©gories de badges (prĂ©cision, engagement, social)
  • ✅ Endpoint badges (app/api/v1/badges.py)

    • GET /api/v1/badges/ - Liste des badges
    • POST /api/v1/badges/check - VĂ©rifier et dĂ©bloquer
    • GET /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 :

  1. ✅ CrĂ©ation de 5 matchs de test
  2. ✅ Simulation du scraping (10-15 tweets par match)
  3. ✅ Analyse de sentiment VADER
  4. ✅ Calcul d'Ă©nergie collective
  5. ✅ GĂ©nĂ©ration de prĂ©dictions
  6. ✅ DĂ©marrage du serveur FastAPI

Étape 2 : Tester l'authentification

Ouvrez votre navigateur sur http://localhost:3000

  1. 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Ă©
  2. 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 - Connexion
  • POST /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Ă©diction
  • GET /api/v1/predictions/match/{match_id} - PrĂ©dictions pour un match
  • GET /api/v1/predictions/matches/{match_id}/latest - DerniĂšre prĂ©diction
  • POST /api/v1/predictions/matches/{match_id}/predict - CrĂ©er une prĂ©diction

Endpoints de Classement

  • GET /api/v1/leaderboard - Top 100 utilisateurs
  • GET /api/v1/leaderboard/personal/{user_id} - Classement personnel

Endpoints de Badges

  • GET /api/v1/badges/ - Liste de tous les badges
  • GET /api/v1/badges/check - VĂ©rifier et dĂ©bloquer des badges
  • GET /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 :

  1. Lancez le script run_all_system.py
  2. Choisissez l'option 0 (Tout lancer)
  3. Attendez que le pipeline se termine
  4. 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 :

  • /accueil ou /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.