# Correction du Bug - Logos CassĂ©s dans les PDFs PDFMonkey ## 🐛 ProblĂšme Lors de la gĂ©nĂ©ration de contrats PDF via PDFMonkey, les logos des clients apparaissaient cassĂ©s (image non chargĂ©e). ## 🔍 Diagnostic ### Flux actuel (buguĂ©) 1. **Upload du logo** (`/app/(app)/staff/clients/[id]/page.tsx`) : - L'utilisateur upload un logo via le composant `ImageUpload` - Le fichier est lu et converti en base64 - ❌ **Seule la partie base64 Ă©tait extraite** (sans le prĂ©fixe `data:image/png;base64,`) - Exemple : `iVBORw0KGgoAAAANS...` au lieu de `data:image/png;base64,iVBORw0KGgoAAAANS...` 2. **Sauvegarde en base** (`/app/api/staff/clients/[id]/route.ts`) : - Le logo est sauvegardĂ© dans `organization_details.logo` - Valeur stockĂ©e : base64 pur (sans prĂ©fixe) 3. **GĂ©nĂ©ration PDF** (`/app/api/contrats/[id]/generate-pdf/route.ts`) : - Le champ `imageUrl` du payload PDFMonkey reçoit `orgDetails.logo` - ❌ **PDFMonkey reçoit une chaĂźne base64 sans prĂ©fixe** → image cassĂ©e ### Pourquoi ça casse ? PDFMonkey accepte pour le champ `imageUrl` : - ✅ Une **URL publique** (ex: `https://example.com/logo.png`) - ✅ Une **data URI complĂšte** (ex: `data:image/png;base64,iVBORw0KG...`) - ❌ **PAS** une chaĂźne base64 brute ## ✅ Solution ImplĂ©mentĂ©e ### 1. Modification de l'Upload (`/app/(app)/staff/clients/[id]/page.tsx`) **Avant :** ```typescript const base64 = result.split(',')[1]; // ❌ Extraction du base64 pur onChange(base64); ``` **AprĂšs :** ```typescript // Conserver la data URI complĂšte onChange(result); // ✅ Format : data:image/png;base64,iVBORw0KG... ``` ### 2. Migration des Logos Existants Un script SQL a Ă©tĂ© créé pour mettre Ă  jour les logos existants : ```sql -- Fichier : MIGRATION_LOGO_DATAURI.sql UPDATE organization_details SET logo = 'data:image/png;base64,' || logo WHERE logo IS NOT NULL AND logo != '' AND logo NOT LIKE 'data:%'; ``` ### 3. CompatibilitĂ© RĂ©troactive Le composant `LogoLine` gĂšre dĂ©jĂ  les deux formats (dĂ©jĂ  en place) : ```typescript Logo ``` Cela garantit que : - Les nouveaux logos (avec prĂ©fixe) s'affichent correctement - Les anciens logos (sans prĂ©fixe, avant migration) s'affichent toujours - PDFMonkey reçoit toujours le bon format ## 📋 Instructions de DĂ©ploiement ### 1. Appliquer le code modifiĂ© ```bash git add app/(app)/staff/clients/[id]/page.tsx git commit -m "fix: Conserver data URI complĂšte pour logos clients (compatibilitĂ© PDFMonkey)" git push ``` ### 2. ExĂ©cuter la migration SQL **Via Supabase Dashboard :** 1. Se connecter Ă  Supabase 2. Aller dans SQL Editor 3. Copier-coller le contenu de `MIGRATION_LOGO_DATAURI.sql` 4. ExĂ©cuter la requĂȘte **Via CLI :** ```bash psql -h db.xxx.supabase.co -U postgres -d postgres -f MIGRATION_LOGO_DATAURI.sql ``` ### 3. VĂ©rifier le rĂ©sultat 1. Aller sur `/staff/clients/[id]` d'un client existant 2. VĂ©rifier que le logo s'affiche correctement 3. GĂ©nĂ©rer un nouveau PDF de contrat 4. VĂ©rifier que le logo apparaĂźt correctement dans le PDF ## đŸ§Ș Tests ### Test 1 : Upload d'un nouveau logo 1. Aller sur `/staff/clients/[id]` 2. Cliquer sur "Modifier" 3. Uploader un nouveau logo 4. Sauvegarder 5. VĂ©rifier que le logo s'affiche 6. GĂ©nĂ©rer un PDF → Le logo doit apparaĂźtre ### Test 2 : Logo existant (aprĂšs migration) 1. Client avec un ancien logo (avant la correction) 2. AprĂšs migration SQL, le logo doit s'afficher 3. GĂ©nĂ©rer un PDF → Le logo doit apparaĂźtre ### Test 3 : Client sans logo 1. Client sans logo configurĂ© 2. GĂ©nĂ©rer un PDF → Pas d'erreur, juste pas de logo ## 📝 Fichiers ModifiĂ©s - ✅ `app/(app)/staff/clients/[id]/page.tsx` - Correction de l'upload - ✅ `MIGRATION_LOGO_DATAURI.sql` - Script de migration SQL - ✅ `FIX_LOGO_PDF_PDFMONKEY.md` - Ce document ## 🔗 RĂ©fĂ©rences - API PDFMonkey : https://pdfmonkey.io/docs - Data URI scheme : https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs - Template PDFMonkey utilisĂ© : `736E1A5F-BBA1-4D3E-91ED-A6184479B58D` ## ⚠ Notes Importantes - Les logos sont stockĂ©s directement en base64 dans Supabase (pas sur S3) - Taille max : 5MB - Formats acceptĂ©s : JPG, PNG, GIF - Le prĂ©fixe `data:image/png;base64,` est ajoutĂ© mĂȘme pour les JPEG (PDFMonkey gĂšre automatiquement)