# 🔍 Guide de débogage - Notifications Email Tickets

## ✅ Corrections appliquées

1. **Import Supabase** : Remplacé `createRouteHandlerClient` par `createSbServer` et `createSbServiceRole`
2. **Permissions** : Utilisation de `createSbServiceRole()` pour `getUserById()`
3. **Récupération du prénom** : Depuis `user_metadata.display_name` au lieu de `organization_members.first_name`
4. **Logs ajoutés** : Logs détaillés à chaque étape de l'envoi

## 📋 Comment tester

### 1. Ouvrir le terminal où tourne `npm run dev`

### 2. Envoyer un message depuis `/staff/tickets/[id]`
- Écrire un message
- **NE PAS** cocher "Note interne"
- Cliquer sur "Envoyer"
- Confirmer dans le modal

### 3. Surveiller les logs dans le terminal

Vous devriez voir ces logs dans l'ordre :

#### ✅ Logs attendus (succès)

```
📧 [POST messages] Envoi de notification email...
📧 [POST messages] Ticket: { id: 'xxx-xxx-xxx', created_by: 'yyy-yyy-yyy' }
📧 [POST messages] Creator user: { hasData: true, email: 'user@example.com', error: null }
📧 [POST messages] Staff profile: { hasData: true, email: 'staff@example.com', error: null }
📧 [POST messages] Envoi vers: user@example.com
📧 [POST messages] Données email: {
  firstName: 'Jean',
  staffName: 'Support Team',
  ticketId: 'xxx-xxx-xxx',
  ticketSubject: 'Mon problème'
}
🔍 [SES DEBUG] sendUniversalEmailV2 called with: {
  type: 'support-reply',
  toEmail: 'user@example.com',
  subject: 'Nouvelle réponse à votre ticket: Mon problème'
}
✅ Email sent successfully: [MessageId]
✅ [POST messages] Notification email envoyée à user@example.com pour le ticket xxx-xxx-xxx
```

#### ❌ Logs d'erreur possibles

**Problème 1 : Utilisateur introuvable**
```
📧 [POST messages] Creator user: { hasData: false, email: undefined, error: [Error] }
❌ [POST messages] Email du créateur introuvable
```
→ **Solution** : L'utilisateur n'existe pas ou a été supprimé

**Problème 2 : Permissions insuffisantes**
```
❌ [POST messages] Erreur: AuthApiError: User not allowed
```
→ **Solution** : Vérifier que `SUPABASE_SERVICE_ROLE_KEY` est bien configurée

**Problème 3 : Email invalide**
```
🚨 [SES DEBUG] Invalid toEmail detected: { toEmail: '', type: 'string' }
```
→ **Solution** : L'utilisateur n'a pas d'email configuré

**Problème 4 : Erreur SES**
```
❌ [SES ERROR] Failed to send email: [Error message]
```
→ **Solution** : Problème avec AWS SES (quota, email non vérifié, etc.)

## 🔍 Vérifications supplémentaires

### Vérifier la variable d'environnement

```bash
# Dans le terminal
echo $SUPABASE_SERVICE_ROLE_KEY
```

Doit retourner une longue chaîne commençant par `eyJ...`

### Vérifier la configuration SES

```bash
# Vérifier que les variables AWS sont configurées
grep "AWS_" .env.local
```

Doit contenir :
```
AWS_REGION=eu-west-3
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_SES_FROM_EMAIL=...
```

### Tester l'envoi d'email directement

Vous pouvez créer un petit script de test dans `/scripts/test-email.ts` :

```typescript
import { sendSupportReplyEmail } from "@/lib/emailMigrationHelpers";

async function testEmail() {
  try {
    await sendSupportReplyEmail("votre-email@example.com", {
      firstName: "Test",
      ticketId: "test-123",
      ticketSubject: "Test d'envoi",
      staffName: "Équipe Test",
      staffMessage: "Ceci est un message de test",
    });
    console.log("✅ Email de test envoyé !");
  } catch (error) {
    console.error("❌ Erreur:", error);
  }
}

testEmail();
```

## 📧 Vérifier les emails envoyés

### Dans AWS SES Console

1. Aller sur https://console.aws.amazon.com/ses/
2. Région : **Europe (Paris) eu-west-3**
3. Menu : **Email sending** → **Statistics**
4. Vérifier les emails envoyés dans les dernières minutes

### Vérifier les bounces

Si l'email n'arrive pas :
- Vérifier les **Bounces** (rebonds) dans SES
- Vérifier les **Complaints** (plaintes)
- Vérifier que l'email destinataire n'est pas dans une liste noire

### Vérifier le spam

L'email peut arriver dans les spams. Vérifier :
- Dossier spam du destinataire
- Promotions (Gmail)
- Autres dossiers

## 🎯 Checklist complète

- [ ] Le serveur Next.js est redémarré
- [ ] Le message est envoyé SANS cocher "Note interne"
- [ ] Les logs `📧 [POST messages]` apparaissent dans le terminal
- [ ] `Creator user` a `hasData: true` et un email
- [ ] `sendUniversalEmailV2` est appelé
- [ ] Aucune erreur SES dans les logs
- [ ] L'email arrive dans la boîte de réception (ou spam) du destinataire

## 💡 Notes importantes

1. **Les notes internes ne déclenchent PAS d'email** (comportement normal)
2. **L'email est envoyé à l'adresse personnelle** de l'utilisateur (depuis `auth.users`)
3. **Le prénom vient de `display_name`** dans les métadonnées utilisateur
4. **Le nom du staff** vient aussi de `display_name` ou de l'email

---

**Si après toutes ces vérifications, l'email n'est toujours pas envoyé, partagez-moi les logs complets du terminal !**

*Guide créé le 14 octobre 2025*
