Files
my-ia/DEBUG.md
2026-03-31 13:10:44 +02:00

301 lines
6.4 KiB
Markdown

# 🔍 Guide de Debug - AI Code Assistant
## 🛠️ Outils de debug intégrés
### 1. Console du navigateur (F12)
**Ouvrir la console :**
- Windows/Linux : `F12` ou `Ctrl+Shift+I`
- Mac : `Cmd+Option+I`
**Dans l'onglet Console, tu verras :**
#### Messages normaux ✅
```
🚀 Initialisation de l'application...
📡 Réponse /models: 200
✅ Modèles chargés: 2
🔌 Tentative de connexion WebSocket à: ws://localhost:9001/ws/chat
✅ WebSocket connecté
📨 Message WebSocket: stream
✅ Réponse complète reçue
```
#### Messages d'erreur ❌
```
❌ Erreur chargement modèles: TypeError...
❌ Erreur WebSocket: ...
🔴 Erreur React: ...
❌ Erreur rendu message: ...
```
### 2. Bandeau d'erreur dans l'UI
Si une erreur se produit, un bandeau rouge apparaît en haut avec :
- Le message d'erreur
- Un bouton ✕ pour fermer
### 3. Message backend non accessible
Si le backend ne répond pas, un message s'affiche au centre :
- Instructions pour démarrer le backend
- Lien vers les logs (F12)
## 🐛 Problèmes courants et solutions
### Problème 1 : UI plante quand l'IA génère du code
**Symptômes :**
- Page devient blanche/bleue
- Erreur dans la console : `Cannot read properties of undefined`
**Causes possibles :**
1. Caractère spécial non échappé dans le code
2. Balise HTML mal fermée
3. Erreur Prism.js
**Solution :**
**Corrigé dans cette version !**
- Échappement HTML complet
- Try/catch autour du rendu
- Message d'erreur au lieu de crash
**Si ça arrive quand même :**
1. Ouvrir F12 → Console
2. Copier l'erreur exacte
3. Rafraîchir la page (Ctrl+F5)
4. Relancer
### Problème 2 : WebSocket ne connecte pas
**Dans la console :**
```
❌ Erreur WebSocket: ...
🔌 WebSocket déconnecté, reconnexion dans 3s...
```
**Vérifications :**
```bash
# 1. Le backend tourne-t-il ?
curl http://localhost:9001/health
# 2. Voir les logs backend
cat /tmp/fastapi.log
# 3. Processus Python actif ?
ps aux | grep "python main.py"
```
**Solution :**
```bash
cd backend
. venv/bin/activate
python main.py
```
Tu dois voir :
```
INFO: Uvicorn running on http://0.0.0.0:9001
```
### Problème 3 : Code ne s'affiche pas correctement
**Symptômes :**
- Blocs de code sans couleur
- Caractères bizarres (< >)
**Dans la console, chercher :**
```
❌ Erreur Prism.js: ...
```
**Solution :**
1. Rafraîchir la page (Ctrl+F5)
2. Vider le cache navigateur
3. Vérifier connexion internet (Prism.js vient du CDN)
### Problème 4 : Boutons Copier/Tester ne marchent pas
**Dans la console :**
```
❌ Erreur copyCode: ...
Élément code introuvable: code-X-Y
```
**Solution :**
**Corrigé !** Les boutons ont maintenant :
- Vérification que l'élément existe
- Try/catch pour éviter les crashes
- Logs détaillés
**Test manuel :**
```javascript
// Dans la console (F12)
window.copyCode('code-0-0')
// Doit afficher une erreur claire si l'ID n'existe pas
```
### Problème 5 : Messages ne s'affichent pas
**Dans la console :**
```
❌ Erreur rendu message: ...
```
**Ce que tu verras dans l'UI :**
- Avatar ⚠️
- "Erreur d'affichage du message"
- Début du message brut
**Solution :**
1. Noter l'erreur exacte dans la console
2. Copier le message qui cause problème
3. Relancer le chat
## 📊 Workflow de debug complet
### Étape 1 : Ouvrir la console (F12)
Avant même de tester, ouvre la console pour voir les logs en temps réel.
### Étape 2 : Envoyer un message test simple
```
Écris une fonction Python qui dit bonjour
```
**Dans la console, tu devrais voir :**
```
📨 Message WebSocket: stream
📨 Message WebSocket: stream
...
✅ Réponse complète reçue
```
### Étape 3 : Si erreur, identifier le type
#### Type 1 : Backend (réseau)
```
❌ Erreur WebSocket: ...
ou
Failed to load resource: net::ERR_CONNECTION_REFUSED
```
→ Le backend n'est pas démarré
#### Type 2 : Rendu (React)
```
🔴 Erreur React: ...
ou
❌ Erreur rendu message: ...
```
→ Problème d'affichage du contenu
#### Type 3 : Fonctions (boutons)
```
❌ Erreur copyCode: ...
```
→ Problème avec les boutons d'action
### Étape 4 : Copier les logs
```bash
# Dans la console (F12), clic droit → Save as...
# Ou copier manuellement les erreurs
```
## 🔬 Tests avancés
### Test 1 : Vérifier que tout est chargé
Dans la console :
```javascript
// Vérifier React
console.log('React:', typeof React); // doit afficher "object"
// Vérifier Prism
console.log('Prism:', typeof Prism); // doit afficher "object"
// Vérifier l'API
fetch('http://localhost:9001/health')
.then(r => r.json())
.then(d => console.log('Backend:', d));
```
### Test 2 : Vérifier WebSocket manuellement
```javascript
const ws = new WebSocket('ws://localhost:9001/ws/chat');
ws.onopen = () => console.log('WS OK');
ws.onerror = (e) => console.error('WS Error:', e);
```
### Test 3 : Tester le rendu d'un message
```javascript
// Dans la console
const testMsg = {
role: 'assistant',
content: 'Test ```python\nprint("hello")\n```'
};
// Voir si ça plante
console.log('Test:', testMsg);
```
## 📝 Logs à envoyer si besoin d'aide
Si tu as un problème, copie et envoie :
### 1. Logs console navigateur
```
[Tous les messages rouges ❌ et 🔴]
```
### 2. Logs backend
```bash
cat /tmp/fastapi.log
```
### 3. État du système
```bash
# Processus actifs
ps aux | grep -E "python|ollama"
# Ports utilisés
netstat -tlnp | grep -E "9000|9001"
# Version Python
python3 --version
```
## 🎯 Checklist avant de demander de l'aide
- [ ] Console ouverte (F12) pour voir les logs
- [ ] Backend lancé et accessible (curl http://localhost:9001/health)
- [ ] WebSocket connecté (point vert en bas à droite)
- [ ] Copié les erreurs exactes de la console
- [ ] Testé avec un message simple d'abord
- [ ] Rafraîchi la page (Ctrl+F5)
- [ ] Vidé le cache si nécessaire
## 💡 Astuces
1. **Logs en temps réel** : Laisse toujours F12 ouvert quand tu utilises l'app
2. **Preserve log** : Dans F12, coche "Preserve log" pour garder les logs même après refresh
3. **Filtre console** : Tu peux filtrer par "Error" ou "Warning" dans la console
4. **Network tab** : Onglet Network dans F12 pour voir les requêtes HTTP/WebSocket
5. **React DevTools** : Installe React DevTools pour debug React spécifiquement
---
**La nouvelle version a :**
✅ Échappement HTML complet
✅ Try/catch partout
✅ Logs détaillés avec émojis
✅ Messages d'erreur clairs
✅ Bandeau d'erreur visible
✅ Pas de crash, juste des erreurs visibles
**Plus d'écran bleu ! 🎉**