diff --git a/assets/js/chatbot_settings.js b/assets/js/chatbot_settings.js
index 3e888f8..5ac7001 100644
--- a/assets/js/chatbot_settings.js
+++ b/assets/js/chatbot_settings.js
@@ -28,13 +28,13 @@ function openAddKeyModal(provider = null) {
document.getElementById('keyAction').value = 'add';
editMode = false;
+ // Important : activer le select AVANT de définir la valeur
+ providerSelect.disabled = false;
+
// Pre-select provider if provided
if (provider) {
providerSelect.value = provider;
- updateModelsList();
- providerSelect.disabled = false;
- } else {
- providerSelect.disabled = false;
+ providerSelect.dispatchEvent(new Event('change')); // Trigger updateModelsList
}
title.textContent = 'Ajouter une clé API';
@@ -282,6 +282,98 @@ function deleteKey(provider) {
});
}
+// ========== Set Default Provider ==========
+
+function setAsDefault(provider, model) {
+ const formData = new FormData();
+ formData.append('action', 'set_default');
+ formData.append('provider', provider);
+ formData.append('model', model);
+
+ fetch('chatbot_api_ajax.php', {
+ method: 'POST',
+ body: formData
+ })
+ .then(response => response.json())
+ .then(data => {
+ if (data.success) {
+ showToast(data.message || 'Provider par défaut mis à jour', 'success');
+ setTimeout(() => {
+ window.location.reload();
+ }, 1000);
+ } else {
+ showToast(data.error || 'Erreur', 'error');
+ }
+ })
+ .catch(error => {
+ console.error('Error:', error);
+ showToast('Erreur de connexion', 'error');
+ });
+}
+
+// ========== Configure Ollama ==========
+
+function configureOllama() {
+ const availableModels = models['ollama'] || [];
+
+ if (availableModels.length === 0) {
+ showToast('Aucun modèle Ollama disponible', 'error');
+ return;
+ }
+
+ // Créer une liste des modèles
+ let modelOptions = '';
+
+ // Simple prompt
+ const modelHtml = `
+
-
+
+
+
+
+ Type :
+ 🏠 Local (Jetson)
+
+
+ Modèle actuel :
+ = $default_provider === 'ollama' ? htmlspecialchars($default_model) : 'ministral-3:3b' ?>
+
+
+ Coût :
+ Gratuit ✅
+
+
+
+
+
+
+
+
+
+
Modèle par défaut :
@@ -209,6 +239,11 @@ $stats_detail = $db->fetchAll(
+
+
+
diff --git a/sql/chatbot_default_provider.sql b/sql/chatbot_default_provider.sql
new file mode 100644
index 0000000..088df20
--- /dev/null
+++ b/sql/chatbot_default_provider.sql
@@ -0,0 +1,36 @@
+-- ============================================
+-- WebVal - Configuration provider par défaut
+-- Table pour stocker le choix de l'enseignant
+-- ============================================
+
+-- Table de configuration par défaut par enseignant
+CREATE TABLE IF NOT EXISTS chatbot_default_provider (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ id_enseignant INT NOT NULL,
+ provider VARCHAR(50) NOT NULL,
+ model_default VARCHAR(100) NOT NULL,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ FOREIGN KEY (id_enseignant) REFERENCES utilisateurs(id_utilisateur) ON DELETE CASCADE,
+ UNIQUE KEY unique_enseignant (id_enseignant)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+-- Initialiser Ollama comme défaut pour les enseignants existants
+INSERT IGNORE INTO chatbot_default_provider (id_enseignant, provider, model_default)
+SELECT DISTINCT id_utilisateur, 'ollama', 'ministral-3:3b'
+FROM utilisateurs
+WHERE id_type = 1; -- Type enseignant
+
+-- Mettre à jour pour ceux qui ont déjà une clé cloud active
+UPDATE chatbot_default_provider cdp
+JOIN (
+ SELECT id_enseignant, provider, model_default
+ FROM api_keys
+ WHERE is_active = 1
+ ORDER BY created_at ASC
+ LIMIT 1
+) ak ON cdp.id_enseignant = ak.id_enseignant
+SET cdp.provider = ak.provider,
+ cdp.model_default = ak.model_default;
+
+SELECT '✅ Table chatbot_default_provider créée et initialisée' as Status;