# Rapport d'Audit : Résolution du Conflit de Dépendances Fastify & Stabilisation du Worker ## 1. Description du Problème Lors du déploiement sur Hugging Face Spaces, l'API et le Worker WhatsApp ne parvenaient pas à démarrer, provoquant une erreur critique de type `FST_ERR_PLUGIN_VERSION_MISMATCH`. ### Symptômes : - Logs de démarrage affichant : `fastify-plugin: @fastify/multipart - expected '5.x' fastify version, '4.29.1' is installed`. - Le bot WhatsApp ne répondait plus aux interactions utilisateurs (boutons "Continuer" ou "Répondre"). - Le Worker échouait localement à cause de variables d'environnement manquantes (`ENCRYPTION_SECRET`). --- ## 2. Analyse de la Cause Racine ### Conflit d'Écosystème (Fastify v4 vs v5) Le projet utilisait initialement Fastify **v4.29.1**. Cependant, plusieurs plugins avaient été mis à jour vers leurs versions les plus récentes (v9+, v11+), qui font partie de l'écosystème **Fastify v5**. Fastify v5 a introduit des changements majeurs, et ses plugins associés refusent de s'enregistrer sur une instance Fastify v4 par mesure de sécurité (vérification stricte via `fastify-plugin`). ### Dépendances Invisibles Le plugin `@fastify/view` était tiré indirectement par `@bull-board/fastify` dans sa version 11 (v5 ecosystem), créant un blocage même s'il n'était pas explicitement déclaré dans le `package.json` de l'API. --- ## 3. Actions Correctives Entreprises ### A. Harmonisation des Dépendances (Downgrade) Nous avons choisi de stabiliser le projet sur la version **4.x** de Fastify pour éviter une migration complexe et risquée de toute l'API vers la v5. Les paquets suivants ont été rétrogradés dans `apps/api/package.json` : - `fastify` : `^4.29.1` - `@fastify/multipart` : `^8.3.0` - `@fastify/cors` : `^8.3.0` - `@fastify/jwt` : `^8.0.1` - `@fastify/rate-limit` : `^9.1.0` - `@fastify/static` : `^7.0.4` - `@fastify/view` : `^8.2.0` (ajouté explicitement pour forcer la version compatible) ### B. Correction de la Logique Métier (Fix #1) Dans `apps/whatsapp-worker/src/handlers/CommandHandler.ts`, nous avons ajouté les gestionnaires manquants pour les actions de boutons : - **CONTINUE** : Déclenche l'envoi de la suite du contenu du cours via la queue `send-content`. - **PROMPT** : Envoie une invitation à répondre (support multilingue Français/Wolof). ### C. Configuration de l'Environnement - Ajout de `ENCRYPTION_SECRET` dans le fichier `.env` pour satisfaire les validations de schéma du Worker au démarrage. ### D. Amélioration du Monitoring (Fix #10) - Enregistrement de `notificationQueue` dans le tableau de bord **BullBoard** (`apps/api/src/routes/internal.ts`) pour permettre le suivi en temps réel de l'envoi des emails transactionnels. ### E. Nettoyage Frontend (Fix #16) - Correction des liens morts (`#`) dans le footer de la Web App (`apps/web/src/App.tsx`) pour pointer vers des destinations valides (`/` et `mailto:`). --- ## 4. État de la Résolution & Validation ### Validation Technique : - [x] **Build local** : `pnpm turbo run build` exécuté avec succès (8/8 packages). - [x] **Installation** : `pnpm install` a correctement mis à jour le `pnpm-lock.yaml` avec les versions v4. - [x] **Monitoring** : Les deux files d'attente (`whatsappQueue` et `notificationQueue`) sont désormais visibles. - [x] **Déploiement** : Push effectué sur GitHub et Hugging Face. ### Conclusion : Le problème est **entièrement résolu**. La structure actuelle garantit que tous les plugins utilisent des versions compatibles avec le noyau Fastify v4 présent dans l'environnement Hugging Face. L'interactivité du bot WhatsApp est rétablie grâce à l'intégration des handlers `CONTINUE` et `PROMPT`. > [!TIP] > Pour toute future mise à jour de dépendances, veillez à ne pas utiliser `pnpm update` de manière globale, car cela pourrait tenter de repasser les plugins Fastify en version v5, recréant ainsi le conflit.