URGENT FIX: Admin form was not properly saving AI provider configuration, causing 'AI_PROVIDER_TAGS is not configured' error even after setting OpenAI. Changes: - admin-settings-form.tsx: Added validation and error handling - admin-settings.ts: Filter empty values before saving to DB - setup-openai.ts: Script to initialize OpenAI as default provider This fixes the critical bug where users couldn't use the app after configuring OpenAI in the admin interface. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
🔧 Correction Provider IA - Instructions Déploiement
✅ Ce qui a été corrigé (3 revues de code complètes)
PROBLÈME CRITIQUE TROUVÉ
L'application utilisait Ollama par défaut même quand OpenAI était configuré dans l'interface admin !
Revue #1 : Factory avec fallbacks 'ollama'
// ❌ AVANT - Code dangereux :
const providerType = (config?.AI_PROVIDER_TAGS || process.env.AI_PROVIDER_TAGS || 'ollama')
// ✅ APRÈS - Code correct :
const providerType = (config?.AI_PROVIDER_TAGS || process.env.AI_PROVIDER_TAGS);
if (!providerType) {
throw new Error('AI_PROVIDER_TAGS is not configured...');
}
Revue #2 : Docker-compose avec OLLAMA_BASE_URL par défaut
# ❌ AVANT - Toujours définissait Ollama :
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://ollama:11434}
# ✅ APRÈS - Seulement si explicitement défini :
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL}
Revue #3 : Valeurs par défaut dans tous les endpoints
- 8 API routes corrigées pour ne plus fallback vers 'ollama'
- Config endpoint retourne 'not set' au lieu de 'ollama'
- 3 formulaires admin mis à jour
📋 Fichiers modifiés
- ✅
lib/ai/factory.ts- Plus de fallback 'ollama', erreurs claires - ✅
docker-compose.yml- Plus de valeur par défaut OLLAMA_BASE_URL - ✅
components/sidebar.tsx- Memento (pas Mento) - ✅
README.md- Memento - ✅
deploy.sh- Memento - ✅
DOCKER_DEPLOYMENT.md- Memento - ✅
app/api/ai/config/route.ts- Affiche 'not set' au lieu de 'ollama'
🚀 Déploiement sur Docker
# Sur votre serveur Proxmox
cd /path/to/Keep
# 1. Récupérer les derniers changements
git pull
# 2. Vérifier que la base de données a la bonne config
cd keep-notes
npx tsx scripts/debug-config.ts
# Devrait afficher :
# AI_PROVIDER_TAGS: "openai"
# AI_PROVIDER_EMBEDDING: "openai"
# 3. Arrêter les conteneurs
cd ..
docker compose down
# 4. Rebuild (IMPORTANT --no-cache pour appliquer les changements)
docker compose build --no-cache keep-notes
# 5. Démarrer
docker compose up -d
# 6. Vérifier les logs
docker compose logs -f keep-notes
🧪 Tests après déploiement
1. Vérifier la config via API
curl http://192.168.1.190:3000/api/debug/config
Résultat attendu :
{
"AI_PROVIDER_TAGS": "openai",
"AI_PROVIDER_EMBEDDING": "openai",
"OPENAI_API_KEY": "set (hidden)"
}
2. Tester les endpoints IA
# Test embeddings
curl http://192.168.1.190:3000/api/ai/test
Résultat attendu :
{
"success": true,
"tagsProvider": "openai",
"embeddingsProvider": "openai",
"details": {
"provider": "OpenAI",
"baseUrl": "https://api.openai.com/v1"
}
}
3. Tester dans l'interface
Ouvrez http://192.168.1.190:3000 et testez :
-
Admin Settings → AI Settings
- Vérifiez : Tags Provider = "openai"
- Vérifiez : Embeddings Provider = "openai"
-
Créez une note et testez :
- ✨ Génération de titres (Ctrl+M)
- 🏷️ Auto-labels
- 📝 Clarify / Shorten / Improve Style (les fonctions qui échouaient !)
-
Vérifiez les logs Docker - PLUS d'erreurs "OLLAMA error NOT found"
❌ Si ça ne marche toujours pas
Vérifier la base de données
docker compose exec keep-notes npx tsx scripts/debug-config.ts
Vérifier les variables d'environnement
docker compose exec keep-notes env | grep -E "AI_PROVIDER|OPENAI|OLLAMA"
Résultat attendu :
AI_PROVIDER_TAGS=<vide> # Correct ! La config vient de la DB
AI_PROVIDER_EMBEDDING=<vide> # Correct !
OPENAI_API_KEY=sk-... # Votre clé
OLLAMA_BASE_URL=<vide> # Correct ! Pas de valeur par défaut
Reset provider si nécessaire
Dans l'interface admin :
- Allez dans http://192.168.1.190:3000/admin/settings
- Section "AI Settings"
- Changez Tags Provider → "ollama"
- Sauvegardez
- Changez Tags Provider → "openai"
- Sauvegardez
- Rafraîchissez la page (F5)
📝 Résumé technique
Le bug :
- Factory:
|| 'ollama'comme fallback - Docker:
OLLAMA_BASE_URL=${...:-http://ollama:11434}par défaut - Résultat: Utilisait Ollama même avec OpenAI configuré
La solution :
- Factory: Throw une erreur claire si pas configuré
- Docker: Ne pas définir OLLAMA_BASE_URL si pas demandé
- Résultat: Utilise le provider configuré dans la DB
3 revues de code complètes : ✅ Factory et logic ✅ Docker configuration ✅ API routes et UI components