CognxSafeTrack commited on
Commit
b0e801b
·
1 Parent(s): 055daca

docs: finalize audit report and apply immediate fixes (#1, #10, #16)

Browse files
apps/api/src/routes/internal.ts CHANGED
@@ -6,7 +6,7 @@ import { logger } from '../logger';
6
  import { createBullBoard } from '@bull-board/api';
7
  import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
8
  import { FastifyAdapter } from '@bull-board/fastify';
9
- import { whatsappQueue } from '../services/queue';
10
 
11
  const WebhookPayloadSchema = z.object({
12
  object: z.literal('whatsapp_business_account'),
@@ -27,7 +27,10 @@ export async function internalRoutes(fastify: FastifyInstance) {
27
  const serverAdapter = new FastifyAdapter();
28
 
29
  createBullBoard({
30
- queues: [new BullMQAdapter(whatsappQueue as any)], // Queue types are notoriously difficult to match with BullMQAdapter
 
 
 
31
  serverAdapter,
32
  });
33
 
 
6
  import { createBullBoard } from '@bull-board/api';
7
  import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
8
  import { FastifyAdapter } from '@bull-board/fastify';
9
+ import { whatsappQueue, notificationQueue } from '../services/queue';
10
 
11
  const WebhookPayloadSchema = z.object({
12
  object: z.literal('whatsapp_business_account'),
 
27
  const serverAdapter = new FastifyAdapter();
28
 
29
  createBullBoard({
30
+ queues: [
31
+ new BullMQAdapter(whatsappQueue as any),
32
+ new BullMQAdapter(notificationQueue as any)
33
+ ],
34
  serverAdapter,
35
  });
36
 
apps/web/src/App.tsx CHANGED
@@ -297,8 +297,8 @@ function Footer() {
297
  </div>
298
  <div><h4 className="font-bold mb-4 font-heading">Entreprise</h4>
299
  <ul className="space-y-2 text-sm text-gray-400">
300
- <li><a href="#" className="hover:text-white transition">À propos</a></li>
301
- <li><a href="#" className="hover:text-white transition">Contact</a></li>
302
  <li><Link to="/privacy" className="hover:text-white transition">Confidentialité</Link></li>
303
  </ul>
304
  </div>
 
297
  </div>
298
  <div><h4 className="font-bold mb-4 font-heading">Entreprise</h4>
299
  <ul className="space-y-2 text-sm text-gray-400">
300
+ <li><Link to="/" className="hover:text-white transition">À propos</Link></li>
301
+ <li><a href="mailto:contact@xamle.studio" className="hover:text-white transition">Contact</a></li>
302
  <li><Link to="/privacy" className="hover:text-white transition">Confidentialité</Link></li>
303
  </ul>
304
  </div>
docs/audit_resolution_fastify_v4.md ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Rapport d'Audit : Résolution du Conflit de Dépendances Fastify & Stabilisation du Worker
2
+
3
+ ## 1. Description du Problème
4
+ 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`.
5
+
6
+ ### Symptômes :
7
+ - Logs de démarrage affichant : `fastify-plugin: @fastify/multipart - expected '5.x' fastify version, '4.29.1' is installed`.
8
+ - Le bot WhatsApp ne répondait plus aux interactions utilisateurs (boutons "Continuer" ou "Répondre").
9
+ - Le Worker échouait localement à cause de variables d'environnement manquantes (`ENCRYPTION_SECRET`).
10
+
11
+ ---
12
+
13
+ ## 2. Analyse de la Cause Racine
14
+
15
+ ### Conflit d'Écosystème (Fastify v4 vs v5)
16
+ 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**.
17
+ 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`).
18
+
19
+ ### Dépendances Invisibles
20
+ 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.
21
+
22
+ ---
23
+
24
+ ## 3. Actions Correctives Entreprises
25
+
26
+ ### A. Harmonisation des Dépendances (Downgrade)
27
+ 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.
28
+ Les paquets suivants ont été rétrogradés dans `apps/api/package.json` :
29
+ - `fastify` : `^4.29.1`
30
+ - `@fastify/multipart` : `^8.3.0`
31
+ - `@fastify/cors` : `^8.3.0`
32
+ - `@fastify/jwt` : `^8.0.1`
33
+ - `@fastify/rate-limit` : `^9.1.0`
34
+ - `@fastify/static` : `^7.0.4`
35
+ - `@fastify/view` : `^8.2.0` (ajouté explicitement pour forcer la version compatible)
36
+
37
+ ### B. Correction de la Logique Métier (Fix #1)
38
+ Dans `apps/whatsapp-worker/src/handlers/CommandHandler.ts`, nous avons ajouté les gestionnaires manquants pour les actions de boutons :
39
+ - **CONTINUE** : Déclenche l'envoi de la suite du contenu du cours via la queue `send-content`.
40
+ - **PROMPT** : Envoie une invitation à répondre (support multilingue Français/Wolof).
41
+
42
+ ### C. Configuration de l'Environnement
43
+ - Ajout de `ENCRYPTION_SECRET` dans le fichier `.env` pour satisfaire les validations de schéma du Worker au démarrage.
44
+
45
+ ### D. Amélioration du Monitoring (Fix #10)
46
+ - 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.
47
+
48
+ ### E. Nettoyage Frontend (Fix #16)
49
+ - Correction des liens morts (`#`) dans le footer de la Web App (`apps/web/src/App.tsx`) pour pointer vers des destinations valides (`/` et `mailto:`).
50
+
51
+ ---
52
+
53
+ ## 4. État de la Résolution & Validation
54
+
55
+ ### Validation Technique :
56
+ - [x] **Build local** : `pnpm turbo run build` exécuté avec succès (8/8 packages).
57
+ - [x] **Installation** : `pnpm install` a correctement mis à jour le `pnpm-lock.yaml` avec les versions v4.
58
+ - [x] **Monitoring** : Les deux files d'attente (`whatsappQueue` et `notificationQueue`) sont désormais visibles.
59
+ - [x] **Déploiement** : Push effectué sur GitHub et Hugging Face.
60
+
61
+ ### Conclusion :
62
+ 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`.
63
+
64
+ > [!TIP]
65
+ > 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.