🛠️ Audit Dette Technique - 02 Mai 2026
🎯 Objectifs de la session
Modernisation de l'architecture CRM, unification des services d'IA dans un SDK partagé, et stabilisation du WhatsApp Worker pour le déploiement sur Railway.
✅ Erreurs & Problèmes résolus
1. Unification de l'IA (@repo/ai-sdk)
- Problème : Logique d'IA dupliquée entre
apps/apietapps/whatsapp-worker. Dépendance excessive du worker envers les endpoints de l'API. - Action : Création du package
@repo/ai-sdk. - Résultat : Toute la logique (OpenAI, Gemini, Transcription, Prompting) est centralisée. L'injection de dépendances (
prisma,redis,secrets) permet au worker de fonctionner de manière autonome.
2. Correction du Seed Prisma (Crash Railway)
- Problème : Le build échouait car les scripts de seed créaient des
TracksansorganizationId, violant les contraintes multi-tenant. - Action : Mise à jour de
packages/database/src/seed.tspour récupérer/créer une organisation par défaut et l'injecter dans chaqueTrack. - Résultat : Build et Seed fonctionnels sur Railway.
3. Harmonisation HTTP du Worker
- Problème : Utilisation éparse de
fetchsans gestion d'erreur robuste, sans timeouts et sans logs uniformes. - Action : Création de
apiClientetcreateWhatsAppClientvia Axios. - Résultat : Remplacement de tous les
fetchdans les handlers (InboundHandler,MediaHandler). Meilleure résilience et traçabilité.
4. Stabilisation du Build (TypeScript)
- Problème : 88+ erreurs de compilation lors du build du SDK d'IA et du worker.
- Absence de fichiers de déclaration (
.d.ts). - Shadowing de variables (
mimeTypedans MediaHandler). - Paramètres inutilisés (
noUnusedParameters).
- Absence de fichiers de déclaration (
- Action :
- Configuration
composite: trueet ajout de@types/nodedans le SDK. - Refactorisation complète du
MediaHandlerpour clarifier les portées de variables. - Nettoyage des signatures de fonctions dans
ai-pedagogy.ts.
- Configuration
- Résultat : Le build passe désormais à 100% (
pnpm turbo run buildsuccess).
⏳ Ce qu'il reste à régler (Dette Résiduelle)
1. Nettoyage des fichiers redondants
- Certains fichiers dans
apps/api/src/services/ai/ont été supprimés, mais une vérification finale est nécessaire pour s'assurer qu'aucun résidu de l'ancienne implémentation ne persiste dans l'arborescence.
2. Migration du Stockage (Storage SDK)
- Le SDK d'IA dépend encore de certains endpoints API pour le stockage (ex:
store-audio). Pour une autonomie totale, une abstraction@repo/storage-sdkdevrait être envisagée.
🚀 État Actuel : LE PROBLÈME BLOQUANT
Statut : RÉSOLU.
Le problème bloquant était une erreur de compilation TypeScript dans le MediaHandler du worker concernant l'accès à la propriété mimeType. Malgré un cast any, le compilateur restait bloqué sur une version mise en cache ou mal interprétée.
- Solution finale : Réécriture complète de la fonction
handleduMediaHandleravec une extraction explicite des données et un build forcé sans cache.
L'architecture est maintenant prête pour un déploiement de production serein.