espace-paie-odentas/GUIDE_DEMARRAGE_TICKETS.md

212 lines
5.5 KiB
Markdown

# 🚀 Guide de démarrage et débogage - Notifications Tickets Support
## ⚠️ Important : Redémarrage du serveur requis
Après avoir créé ou modifié des routes API dans Next.js, il est **OBLIGATOIRE** de redémarrer le serveur de développement. Sinon, les nouvelles routes ne seront pas disponibles (erreur 404).
## 📋 Checklist avant de tester
### 1. Vérifier les fichiers
```bash
./test-ticket-notifications.sh
```
Tous les fichiers doivent avoir une ✅ verte.
### 2. Redémarrer le serveur Next.js
**Option A : Arrêter proprement**
```bash
# Dans le terminal où tourne npm run dev, appuyez sur Ctrl+C
# Puis relancez :
npm run dev
```
**Option B : Forcer l'arrêt**
```bash
# Tuer tous les processus Next.js
pkill -f "next dev"
# Attendre 2 secondes
sleep 2
# Relancer
npm run dev
```
### 3. Vérifier que le serveur démarre bien
Vous devriez voir :
```
▲ Next.js 14.x.x
- Local: http://localhost:3000
- ready started server on 0.0.0.0:3000
```
## 🔍 Comment tester
### 1. Ouvrir la console du navigateur
- Chrome/Edge : F12 ou Cmd+Option+I (Mac)
- Firefox : F12 ou Cmd+Option+K (Mac)
- Safari : Cmd+Option+C (Mac)
### 2. Aller sur une page de ticket
```
http://localhost:3000/staff/tickets/[un-id-de-ticket-existant]
```
### 3. Regarder les logs
**Dans la console du navigateur (F12) :**
```
🔍 [StaffTicketActions] Fetching recipient info for ticket: xxx-xxx-xxx
🔍 [StaffTicketActions] URL: /api/tickets/xxx-xxx-xxx/recipient-info
🔍 [StaffTicketActions] Response status: 200
✅ [StaffTicketActions] Recipient info: {email: "...", name: "..."}
```
**Dans le terminal Next.js :**
```
📋 [ticket page] User ID: xxx-xxx-xxx
📋 [ticket page] Email: user@example.com
📋 [ticket page] User metadata: {
"display_name": "Jean",
...
}
✅ [ticket page] Nom trouvé dans display_name: Jean
```
## ❌ Diagnostic des problèmes
### Problème 1 : Erreur 404 sur `/api/tickets/[id]/recipient-info`
**Symptômes :**
- Console navigateur : `GET /api/tickets/.../recipient-info 404 (Not Found)`
- Aucun log dans le terminal serveur
**Solutions :**
1.**Vérifier que le fichier existe**
```bash
ls -la app/api/tickets/[id]/recipient-info/route.ts
```
2.**Redémarrer le serveur Next.js** (voir ci-dessus)
3.**Vérifier qu'il n'y a pas d'erreurs TypeScript**
```bash
npm run build
```
4.**Vérifier la syntaxe du fichier**
- Le fichier doit exporter une fonction `GET`
- La fonction doit avoir la signature : `async function GET(_: Request, { params }: { params: { id: string } })`
### Problème 2 : "Utilisateur inconnu" affiché
**Symptômes :**
- La page affiche "Ouvert par: Utilisateur inconnu"
- Logs montrent `user_metadata: {}` ou `null`
**Diagnostic :**
1. **Vérifier dans Supabase Auth** :
- Aller dans Authentication → Users
- Cliquer sur l'utilisateur concerné
- Vérifier que le champ **"Display name"** est rempli
2. **Si le champ est vide** :
- C'est normal ! L'utilisateur n'a pas de prénom enregistré
- Le système va afficher l'email à la place
- Pour tester, ajoutez un "Display name" dans Supabase
3. **Vérifier les logs** :
```
📋 [ticket page] User metadata: {...}
```
- Si vous voyez `{}` → pas de métadonnées → normal
- Si vous voyez `{display_name: "..."}` → devrait fonctionner
### Problème 3 : Pas de logs dans le terminal
**Causes possibles :**
1. Le serveur n'a pas été redémarré après les modifications
2. Vous regardez le mauvais terminal (plusieurs serveurs lancés ?)
3. Les logs sont filtrés
**Solutions :**
1. Redémarrer le serveur
2. Vérifier quel processus écoute sur le port 3000 :
```bash
lsof -ti:3000
```
3. S'assurer qu'il n'y a qu'un seul serveur Next.js qui tourne
### Problème 4 : Le modal ne s'affiche pas
**Symptômes :**
- On clique sur "Envoyer" mais rien ne se passe
- Pas d'erreur dans la console
**Diagnostic :**
1. Vérifier dans la console navigateur :
```
✅ [StaffTicketActions] Recipient info: {...}
```
- Si absent → l'API n'a pas retourné les infos
- Si présent → le modal devrait s'afficher
2. Vérifier que la checkbox "Note interne" n'est **PAS** cochée
- Les notes internes ne déclenchent pas le modal
3. Vérifier l'état React :
- Ouvrir React DevTools
- Chercher `StaffTicketActions`
- Vérifier `recipientInfo` → doit avoir `{email, name}`
## 🎯 Cas de test
### Test 1 : Affichage du nom sur la page
1. Aller sur `/staff/tickets/[id]`
2. Vérifier que "Ouvert par:" affiche un nom ou un email
3. Vérifier les logs dans le terminal
### Test 2 : Modal de confirmation
1. Aller sur `/staff/tickets/[id]`
2. Écrire un message dans le textarea
3. **NE PAS** cocher "Note interne"
4. Cliquer sur "Envoyer"
5. → Le modal doit s'afficher avec l'email et le nom du destinataire
### Test 3 : Note interne (pas de modal)
1. Aller sur `/staff/tickets/[id]`
2. Écrire un message dans le textarea
3. **COCHER** "Note interne"
4. Cliquer sur "Envoyer"
5. → Le message doit être envoyé directement SANS modal
## 📞 Si ça ne fonctionne toujours pas
1. **Arrêter complètement Next.js**
```bash
pkill -f "next"
lsof -ti:3000 # Doit retourner vide
```
2. **Nettoyer le cache Next.js**
```bash
rm -rf .next
```
3. **Redémarrer**
```bash
npm run dev
```
4. **Vérifier les logs** dans la console ET le terminal
5. **Partager les logs** si le problème persiste :
- Logs de la console navigateur (F12)
- Logs du terminal Next.js
- Capture d'écran de la page
---
*Guide créé le 14 octobre 2025*