# 🛠️ 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/api` et `apps/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 `Track` sans `organizationId`, violant les contraintes multi-tenant. * **Action** : Mise à jour de `packages/database/src/seed.ts` pour récupérer/créer une organisation par défaut et l'injecter dans chaque `Track`. * **Résultat** : Build et Seed fonctionnels sur Railway. ### 3. Harmonisation HTTP du Worker * **Problème** : Utilisation éparse de `fetch` sans gestion d'erreur robuste, sans timeouts et sans logs uniformes. * **Action** : Création de `apiClient` et `createWhatsAppClient` via **Axios**. * **Résultat** : Remplacement de tous les `fetch` dans 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 (`mimeType` dans MediaHandler). * Paramètres inutilisés (`noUnusedParameters`). * **Action** : * Configuration `composite: true` et ajout de `@types/node` dans le SDK. * Refactorisation complète du `MediaHandler` pour clarifier les portées de variables. * Nettoyage des signatures de fonctions dans `ai-pedagogy.ts`. * **Résultat** : **Le build passe désormais à 100%** (`pnpm turbo run build` success). --- ## ⏳ 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-sdk` devrait ê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 `handle` du `MediaHandler` avec 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.**