# 🔧 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'**
```typescript
// ❌ 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**
```yaml
# ❌ 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

1. ✅ `lib/ai/factory.ts` - Plus de fallback 'ollama', erreurs claires
2. ✅ `docker-compose.yml` - Plus de valeur par défaut OLLAMA_BASE_URL
3. ✅ `components/sidebar.tsx` - Memento (pas Mento)
4. ✅ `README.md` - Memento
5. ✅ `deploy.sh` - Memento
6. ✅ `DOCKER_DEPLOYMENT.md` - Memento
7. ✅ `app/api/ai/config/route.ts` - Affiche 'not set' au lieu de 'ollama'

## 🚀 Déploiement sur Docker

```bash
# 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
```bash
curl http://192.168.1.190:3000/api/debug/config
```
**Résultat attendu :**
```json
{
  "AI_PROVIDER_TAGS": "openai",
  "AI_PROVIDER_EMBEDDING": "openai",
  "OPENAI_API_KEY": "set (hidden)"
}
```

### 2. Tester les endpoints IA
```bash
# Test embeddings
curl http://192.168.1.190:3000/api/ai/test
```
**Résultat attendu :**
```json
{
  "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 :

1. **Admin Settings** → **AI Settings**
   - Vérifiez : Tags Provider = "openai"
   - Vérifiez : Embeddings Provider = "openai"

2. **Créez une note** et testez :
   - ✨ **Génération de titres** (Ctrl+M)
   - 🏷️ **Auto-labels**
   - 📝 **Clarify / Shorten / Improve Style** (les fonctions qui échouaient !)

3. **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
```bash
docker compose exec keep-notes npx tsx scripts/debug-config.ts
```

### Vérifier les variables d'environnement
```bash
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 :
1. Allez dans http://192.168.1.190:3000/admin/settings
2. Section "AI Settings"
3. Changez Tags Provider → "ollama"
4. Sauvegardez
5. Changez Tags Provider → "openai"
6. Sauvegardez
7. 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
