Calendrier Botola Pro

Générateur Intelligent & Optimisé

Powered by PLUTUS • Version 1.0

Générateur de Calendrier

Créez des calendriers optimisés avec notre système intelligent de gestion des contraintes

✨ 16 équipes
⚡ 30 journées
🎯 28 contraintes
Charger équipes
Contraintes
Génération
Résultats

Importez vos équipes

Glissez-déposez votre fichier JSON ou CSV contenant les informations des 16 équipes de la Botola Pro

Glissez votre fichier ici

ou cliquez pour sélectionner

Formats supportés: JSON, CSV (Max: 5MB)

Équipes chargées ({{ equipes.length }})

{{ equipe.nom }}

{{ equipe.ville }}

Configuration des contraintes

Personnalisez les règles de génération de votre calendrier selon vos besoins spécifiques

🔴 Contraintes HARD (obligatoires)

📅 Dates de la saison

Premier jour possible pour programmer un match de championnat

Dernier jour possible pour terminer le championnat

Pause hivernale sans matchs (généralement décembre-janvier)

⚙️ Paramètres configurables

Temps de récupération nécessaire pour éviter les blessures et maintenir la performance physique des joueurs

Limite les avantages répétés du terrain et assure l'équité de la compétition entre toutes les équipes

Préserve l'état physique des équipes en évitant l'accumulation de voyages et stress logistique

Adapte le calendrier aux habitudes de spectateurs et aux contraintes culturelles du pays

⏰ Créneaux Horaires Disponibles
{{ creneauxDisponiblesCount }} créneaux/journée

💡 Astuce : Plus vous ajoutez de créneaux, plus le solveur aura de flexibilité

Définissez les heures précises où les matchs peuvent être programmés. Recommandé : 20+ créneaux par journée pour 8 matchs.

Aucun créneau défini. Utilisez les raccourcis ci-dessous ou ajoutez manuellement.

{{ creneau }}
{{ creneauxHoraires.length }}
Heures définies
{{ joursActifs }}
Jours actifs
{{ creneauxDisponiblesCount }}
Total créneaux
⚠️ Créneaux insuffisants détectés

Vous avez seulement {{ creneauxDisponiblesCount }} créneaux par journée. Pour programmer 8 matchs par journée efficacement, nous recommandons au moins 20 créneaux. Le solveur risque de ne pas trouver de solution complète.

✅ Configuration optimale

Excellent ! Vous avez {{ creneauxDisponiblesCount }} créneaux par journée, ce qui est largement suffisant pour générer un calendrier complet et équilibré. Le solveur disposera de toute la flexibilité nécessaire.

⚡ Configuration correcte mais peut être améliorée

Vous avez {{ creneauxDisponiblesCount }} créneaux. C'est fonctionnel, mais ajouter quelques créneaux supplémentaires améliorerait la qualité de la solution.

Mode Ramadan
Créneaux spéciaux pendant Ramadan

🌙 Premier jour de Ramadan

🌙 Dernier jour de Ramadan

Durée Ramadan: {{ calculateRamadanDays() }} jours

💡 Seules ces heures seront utilisées pendant les périodes Ramadan

💡 Nombre maximum de matchs par jour pendant Ramadan

Créneaux: {{ ramadanConfig.creneauxAutorises.length }}h
Max/jour: {{ ramadanConfig.maxMatchsParJour }}
📅 Période: {{ new Date(ramadanConfig.debut).toLocaleDateString('fr-FR', { day: 'numeric', month: 'short' }) }} → {{ new Date(ramadanConfig.fin).toLocaleDateString('fr-FR', { day: 'numeric', month: 'short', year: 'numeric' }) }}

Activez le mode Ramadan pour configurer les créneaux spéciaux

{{ formatDate(date.date) }}

Utile pour exclure les jours fériés, vacances scolaires

{{ formatDateRange(date.debut, date.fin) }}

Aucune rencontre pendant les dates FIFA

📅 Calendrier & structure
Une équipe ne joue qu'un seul match par journée
Une équipe ne joue jamais contre elle-même
Chaque paire d'équipes se rencontre deux fois (aller / retour)
Le match aller précède toujours le retour
Il y a exactement 30 journées
Chaque équipe joue 15 matchs à domicile et 15 à l'extérieur
Chaque journée contient exactement 8 matchs
🏟️ Stades & conflits
Un seul match par stade et créneau horaire
Pas deux clubs de la même ville jouant à domicile le même jour

🟡 Contraintes SOFT (optimisation)

🧭 Répartition & alternance

{{ contrainte.desc }}

Poids: {{ contrainte.poids }}
📺 TV & audience

{{ contrainte.desc }}

Poids: {{ contrainte.poids }}
🛫 Déplacements & logistique

{{ contrainte.desc }}

Poids: {{ contrainte.poids }}
💰 Économie

{{ contrainte.desc }}

Poids: {{ contrainte.poids }}

Génération du calendrier

Prêt à générer votre calendrier optimisé avec {{ equipes.length }} équipes et {{ contraintesSoft.filter(c => c.active).length }} contraintes souples activées.

Génération en cours...

Notre IA PLUTUS optimise votre calendrier

{{ Math.floor(tempsEcoule / 60) }}:{{ String(tempsEcoule % 60).padStart(2, '0') }}
Écoulé
{{ Math.floor((tempsEstime - tempsEcoule) / 60) }}:{{ String(Math.max(0, (tempsEstime - tempsEcoule) % 60)).padStart(2, '0') }}
Restant
Temps estimé: {{ Math.floor(tempsEstime / 60) }} min {{ tempsEstime % 60 }} sec

{{ progressGeneration }}% terminé

🎉 Calendrier généré avec succès !

Votre calendrier de 30 journées a été optimisé selon vos contraintes

30 Journées

Calendrier complet

240 Matchs

Tous les matchs planifiés

98% Optimisé

Respect des contraintes

Résultats de la Génération

{{ calendrierData.calendrier.statistiques.matchsPlaces }}
Matchs
{{ calendrierData.calendrier.statistiques.nbDerbys }}
Derbys
{{ calendrierData.calendrier.statistiques.nbMatchsPrimetime }}
Prime-time
{{ calendrierData.calendrier.statistiques.nbMatchsWeekend }}
Week-end

Statistiques de déplacement

Distance totale
{{ Math.round(calendrierData.calendrier.statistiques.distanceTotale).toLocaleString() }} km
Distance moyenne/match
{{ Math.round(calendrierData.calendrier.statistiques.distanceMoyenne) }} km
Performance
{{ calendrierData.performance.statut }}

Calendrier complet ({{ calendrierData.calendrier.matchs.length }} matchs)

# Date Heure J. Domicile vs Extérieur Dist. Tags
{{ match.id }} {{ formatDate(match.creneau.dateTime) }} {{ match.creneau.heure }} J{{ match.creneau.journee }} {{ match.domicile }} - {{ match.exterieur }} {{ Math.round(match.distance) }} km 🔥 📅

Affichage des 50 premiers matchs / {{ calendrierData.calendrier.matchs.length }} total

Journée {{ journee.journee }}

{{ journee.nbMatchs }} matchs 🔥 {{ journee.nbDerbys }} derby(s) {{ Math.round(journee.distanceTotale) }} km
{{ getMatchById(matchId).domicile }}
vs {{ getMatchById(matchId).exterieur }}
{{ getMatchById(matchId).creneau.heure }}
{{ Math.round(getMatchById(matchId).distance) }} km

Affichage des 10 premières journées / {{ calendrierData.calendrier.statistiquesJournees.length }} total

⚽ {{ equipe.nom }}

Ville {{ equipe.ville }}
Stade {{ equipe.stade }}
🏠 Domicile {{ equipe.matchsDomicile }}
✈️ Extérieur {{ equipe.matchsExterieur }}
🗺️ Distance totale {{ Math.round(equipe.distanceTotale) }} km
📏 Distance moyenne {{ Math.round(equipe.distanceMoyenne) }} km
📊 Distance max {{ Math.round(equipe.distanceMax) }} km
⭐ Prime-time {{ equipe.matchsPrimetime }}
📅 Week-end {{ equipe.matchsWeekend }}
☀️ Jour / 🌙 Nuit {{ equipe.matchsJour }} / {{ equipe.matchsNuit }}

🔥 Matchs à enjeux ({{ getDerbys().length }} derbys)

{{ match.domicile }} vs {{ match.exterieur }}
📅 {{ formatDate(match.creneau.dateTime) }} 🕐 {{ match.creneau.heure }} 📍 Journée {{ match.creneau.journee }}
⭐ Prime-time 📅 Week-end

Contraintes intelligentes

28 contraintes pour un calendrier optimisé

IA PLUTUS

Optimisation en temps réel

Export flexible

CSV, PDF et API REST

Visualisation du Calendrier

{{ calendrierData.statistics?.matchsProgrammes || 0 }}

Matchs programmés

{{ calendrierData.statistics?.matchsWeekend || 0 }}

Matchs weekend

{{ calendrierData.statistics?.derbys || 0 }}

Derbys

{{ Math.round(calendrierData.completionPercentage) }}%

Complétion

Aucun match trouvé pour ces filtres

Journée Date Heure Match Stade Info
J{{ match.journee }} {{ formatCreneauDate(match.creneau) }} {{ formatCreneauTime(match.creneau) }}
{{ match.equipeDomicile.nom }} vs {{ match.equipeExterieur.nom }} Derby
{{ match.equipeDomicile.stade }} Weekend Prime

Affichage de {{ matchsFiltres.length }} match(s) sur {{ calendrierData.statistics?.matchsProgrammes || 0 }} programmé(s)

Visualisations Avancées

Planning Gantt par Équipe
Timeline des matchs sur la saison
Équipes
J{{ journee }}
{{ equipe.nom }}
Match à domicile
Match à l'extérieur
Heatmap de Distribution Horaire
Répartition des matchs par jour et heure
Heure {{ jour }}
{{ heure }}
{{ getMatchCountByDayAndHour(jour, heure) || '-' }}
Intensité:
0-5
6-10
11-15
16+

{{ notification.title }}

{{ notification.message }}