correction erreur questions chatbot

This commit is contained in:
nicoboy
2026-01-03 15:02:09 +01:00
parent a98c8bc1c6
commit f207a0f0af

View File

@ -48,18 +48,71 @@ class ChatbotIA {
} }
ouvrirChat() { ouvrirChat() {
// Récupérer l'ID de la question actuelle // Récupérer l'ID de la question ACTUELLE dynamiquement
this.currentQuestionId = this.getCurrentQuestionId(); this.currentQuestionId = this.detectCurrentQuestion();
if (!this.currentQuestionId) { if (!this.currentQuestionId) {
alert('Erreur : impossible de déterminer la question actuelle'); alert('Erreur : impossible de déterminer la question actuelle');
return; return;
}
this.modalChat.classList.add('show');
this.chatInput.focus();
} }
console.log('💬 Ouverture chat - Question:', this.currentQuestionId);
// Charger l'aide restante pour cette question
this.loadHelpRemaining();
this.modalChat.classList.add('show');
this.chatInput.focus();
}
// NOUVELLE MÉTHODE : Détecter la question visible
detectCurrentQuestion() {
// Méthode 1 : Chercher l'élément de question visible/actif
const activeQuestion = document.querySelector('.question.active, .question-container.active, [data-question-active="true"]');
if (activeQuestion && activeQuestion.dataset.questionId) {
return parseInt(activeQuestion.dataset.questionId);
}
// Méthode 2 : Chercher dans les inputs visibles
const visibleInputs = document.querySelectorAll('input[name^="reponse_"]:not([style*="display: none"])');
if (visibleInputs.length > 0) {
const match = visibleInputs[0].name.match(/reponse_(\d+)/);
if (match) {
return parseInt(match[1]);
}
}
// Méthode 3 : Index de question actuelle (si ton système utilise un index)
if (typeof currentQuestionIndex !== 'undefined' && questionsIds[currentQuestionIndex]) {
return questionsIds[currentQuestionIndex];
}
// Fallback : première question
return questionsIds[0];
}
// NOUVELLE MÉTHODE : Charger l'aide restante via AJAX
async loadHelpRemaining() {
try {
const response = await fetch('/mathematiques/api/chatbot_check_limit.php', {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: new URLSearchParams({
id_tentative: this.tentativeId,
id_question: this.currentQuestionId
})
});
const data = await response.json();
if (data.success) {
this.helpRemaining = data.remaining;
this.updateHelpBadge();
}
} catch (error) {
console.error('Erreur chargement limite aide:', error);
}
}
fermerChat() { fermerChat() {
this.modalChat.classList.remove('show'); this.modalChat.classList.remove('show');
} }