# 📧 Email de réponse support - Template amélioré

## ✨ Modifications appliquées

### 1. InfoCard standardisée

L'email de réponse au ticket support utilise maintenant la même structure que les autres notifications :

**Première card (InfoCard) :**
- **Votre structure** : Nom de l'organisation
- **Votre code employeur** : Code depuis `organization_details.code_employeur`
- **Votre gestionnaire** : Renaud BREVIERE-ABRAHAM (forcé)

### 2. DetailsCard enrichie

**Deuxième card (Message) :**
- **Répondant** : Prénom du staff avec majuscule automatique + "[Staff Odentas]"
- **Sujet** : Sujet du ticket
- **Réponse** : Message du staff

### 3. Formatage automatique du nom du staff

```typescript
// Exemple : "renaud" devient "Renaud [Staff Odentas]"
const formattedStaffName = data.staffName.charAt(0).toUpperCase() + 
                          data.staffName.slice(1) + 
                          ' [Staff Odentas]';
```

## 📊 Structure du template

```
┌─────────────────────────────────────────────────────┐
│  Bonjour Jean,                                       │
│                                                      │
│  Vous avez reçu une nouvelle réponse                │
│  à votre ticket support.                            │
│                                                      │
│  ┌──────────────────────────────────────────────┐  │
│  │  Informations                                 │  │
│  │                                               │  │
│  │  Votre structure: Entreprise ABC             │  │
│  │  Votre code employeur: 12345                 │  │
│  │  Votre gestionnaire: Renaud BREVIERE-ABRAHAM │  │
│  └──────────────────────────────────────────────┘  │
│                                                      │
│  ┌──────────────────────────────────────────────┐  │
│  │  Message                                      │  │
│  │                                               │  │
│  │  Répondant: Renaud [Staff Odentas]           │  │
│  │  Sujet: Mon problème de paie                 │  │
│  │  Réponse: Bonjour, voici la solution...      │  │
│  └──────────────────────────────────────────────┘  │
│                                                      │
│           ┌──────────────────────┐                  │
│           │   Voir le ticket    │                  │
│           └──────────────────────┘                  │
└─────────────────────────────────────────────────────┘
```

## 🗂️ Sources de données

| Donnée | Source | Champ |
|--------|--------|-------|
| **Nom organisation** | `organizations` | `name` |
| **Code employeur** | `organization_details` | `code_employeur` |
| **Gestionnaire** | Forcé | `"Renaud BREVIERE-ABRAHAM"` |
| **Prénom staff** | `auth.users.user_metadata` | `display_name` ou `first_name` |
| **Sujet ticket** | `tickets` | `subject` |
| **Message** | Corps du message | POST body |

## 💻 Code modifié

### 1. `/lib/emailTemplateService.ts`

```typescript
infoCard: {
  title: 'Informations',
  items: [
    { label: 'Votre structure', value: 'organizationName' },
    { label: 'Votre code employeur', value: 'employerCode' },
    { label: 'Votre gestionnaire', value: 'handlerName' },
  ],
},
detailsCard: {
  title: 'Message',
  items: [
    { label: 'Répondant', value: 'staffName' },
    { label: 'Sujet', value: 'ticketSubject' },
    { label: 'Réponse', value: 'staffMessage' },
  ],
},
```

### 2. `/lib/emailMigrationHelpers.ts`

```typescript
export async function sendSupportReplyEmail(
  toEmail: string,
  data: {
    firstName?: string;
    ticketId: string;
    ticketSubject: string;
    staffName: string;
    staffMessage: string;
    organizationName?: string;
    employerCode?: string;  // ⭐ Nouveau : code depuis organization_details
  }
) {
  // ⭐ Formatage automatique : majuscule + [Staff Odentas]
  const formattedStaffName = data.staffName.charAt(0).toUpperCase() + 
                            data.staffName.slice(1) + 
                            ' [Staff Odentas]';
  
  const emailData: EmailDataV2 = {
    firstName: data.firstName,
    ticketId: data.ticketId,
    ticketSubject: data.ticketSubject,
    staffName: formattedStaffName,
    staffMessage: data.staffMessage,
    organizationName: data.organizationName || 'Non définie',
    employerCode: data.employerCode || 'Non défini',  // ⭐ Nouveau
    handlerName: 'Renaud BREVIERE-ABRAHAM',  // ⭐ Forcé
    ctaUrl: `${process.env.NEXT_PUBLIC_BASE_URL}/support/${data.ticketId}`,
  };

  await sendUniversalEmailV2({
    type: 'support-reply',
    toEmail,
    subject: `Nouvelle réponse à votre ticket: ${data.ticketSubject}`,
    data: emailData,
  });
}
```

### 3. `/app/api/tickets/[id]/messages/route.ts`

```typescript
// ⭐ Récupération du code employeur
const { data: orgDetails } = await sb
  .from("organization_details")
  .select("code_employeur")
  .eq("org_id", ticket.org_id)
  .maybeSingle();

// Envoi de l'email avec les nouvelles données
await sendSupportReplyEmail(creatorUser.user.email, {
  firstName,
  ticketId: ticket.id,
  ticketSubject: ticket.subject,
  staffName,
  staffMessage: text,
  organizationName: organization?.name,
  employerCode: orgDetails?.code_employeur,  // ⭐ Code employeur
});
```

## 📋 Logs de debug

Dans le terminal, vous verrez :

```
📧 [POST messages] Organization: { name: 'Entreprise ABC', structure_api: 'abc' }
📧 [POST messages] Org details: { code_employeur: '12345' }
📧 [POST messages] Données email: {
  firstName: 'Jean',
  staffName: 'renaud',
  ticketId: 'xxx-xxx-xxx',
  ticketSubject: 'Mon problème',
  organizationName: 'Entreprise ABC',
  employerCode: '12345'
}
```

Le nom du staff sera automatiquement formaté en : `Renaud [Staff Odentas]`

## ✅ Résultat

Les emails de réponse au ticket support ont maintenant :
- ✅ La même structure que les autres notifications
- ✅ Le code employeur correct depuis `organization_details`
- ✅ Le gestionnaire forcé à "Renaud BREVIERE-ABRAHAM"
- ✅ Le nom du staff formaté avec majuscule + badge "[Staff Odentas]"
- ✅ Toutes les informations importantes dans la première card
- ✅ Les détails du message dans la deuxième card

---

*Améliorations appliquées le 14 octobre 2025*
