# Audit de la Dette Technique — Infrastructure PaaS (v3.0) **Dernière Mise à Jour** : 25 Avril 2026 **Statut global** : 🏗️ Transition PaaS (Architecture Stable, Optimisations Requises) ## 🚦 Résumé des Risques Actuels | Priorité | Sujet | État | Impact | | :--- | :--- | :--- | :--- | | 🔴 **Critique** | Performance du Bridge (Requêtes Prisma) | ⚠️ À RISQUE | Latence accrue à chaque message reçu | | 🟠 **Haute** | Duplication d'Extraction WhatsApp | 🔄 DUPLIQUÉ | Risque d'incohérence entre Gateway et Worker | | 🟠 **Haute** | Résilience des Webhooks Clients | ❌ MANQUANT | Perte de messages si le client est offline | | 🟡 **Moyenne** | Validation JSON FlowConfig | ✅ **FIXED** | Sécurisé côté API, à renforcer côté Worker | | 🟡 **Moyenne** | Gestion des Secrets (Shared Keys) | 🔐 STATIQUE | Risque de compromission sur le long terme | --- ## 1. Performance & Évolutivité (Scalability) - **Problème** : Chaque message entrant dans le bridge du Worker (`index.ts`) déclenche une requête SQL synchrone pour récupérer le `mode` de l'organisation. - **Risque** : Saturation de la pool de connexions Prisma lors de pics de trafic. - **Action requise** : Implémenter un cache Redis pour les métadonnées des organisations (TTL: 1h). - **Statut** : ⚠️ À surveiller. ## 2. Maintenabilité : Duplication de Logique - **Problème** : La logique d'extraction du `phone` et du `text` depuis le payload Meta est copiée entre `apps/api` et `apps/whatsapp-worker`. - **Risque** : Un changement dans l'API WhatsApp (ex: nouveau type de bouton) doit être reporté à deux endroits, multipliant les chances d'erreur. - **Action requise** : Créer un helper `extractWhatsAppPayload` dans `packages/shared-types` ou un nouveau package `@repo/whatsapp-utils`. - **Statut** : 🔄 Dette active. ## 3. Fiabilité des Webhooks (Phase 2) - **Problème** : Le routage vers les clients externes en mode `WEBHOOK` utilise un simple `fetch` avec un log d'erreur en cas d'échec. - **Risque** : Aucun mécanisme de retry (tentatives de renvoi). Si le serveur du client redémarre, le message est définitivement perdu. - **Action requise** : Utiliser une file d'attente BullMQ dédiée (`webhook-retry-queue`) pour garantir la livraison avec exponential backoff. - **Statut** : ❌ Manquant. ## 4. Intégrité des Données (Zod) - **Problème** : Le Worker lit le champ `flowConfig` (JSON) et le parse sans re-validation. - **Risque** : Si un administrateur injecte un JSON corrompu via un script direct (hors API), le Worker peut crasher en tentant de lire des propriétés inexistantes. - **Action effectuée** : ✅ Validation Zod ajoutée sur la route `PUT /organizations`. - **Action restante** : Re-valider le schéma lors de la lecture dans `OnboardingHandler.ts`. - **Statut** : 🟡 Partiellement résolu. ## 5. Intelligence Artificielle (RAG) - **Problème** : Le champ `knowledgeBaseUrl` n'est qu'un lien vers un fichier. L'`AIAgentHandler` simule l'injection. - **Risque** : Pour des fichiers volumineux (> 10 pages), l'injection directe dans le prompt va exploser les limites de tokens et les coûts. - **Action requise** : Implémenter une pipeline d'indexation vectorielle (Vector DB) pour les clients en mode `AI_AGENT`. - **Statut** : 🏗️ En cours de conception. --- ## 📅 Historique des Corrections (v2.x) - ✅ **[FIXED]** Sécurisation du bridge interne via `ADMIN_API_KEY`. - ✅ **[FIXED]** Dé-hardcodage des secteurs EdTech. - ✅ **[FIXED]** Isolation des tenants via `runWithTenant` (Context API). - ✅ **[FIXED]** Centralisation des logs Pino.