# 🚀 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) ```bash 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É) ```bash 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** : ```bash # 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) : ```bash 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** : ```bash # 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** : ```bash # 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** : ```bash # 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** : ```bash # 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** : ```bash # 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** : ```bash # 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 ```bash 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` : ```bash # 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) ```bash 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.