File size: 3,633 Bytes
6248bf4 de6a95b 6248bf4 de6a95b 6248bf4 de6a95b 853ee72 6248bf4 de6a95b 6248bf4 de6a95b 853ee72 de6a95b 6248bf4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # 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.
|