CognxSafeTrack
Refactor: Technical Debt Repayment (Clean Dashboard, Strict Typing, Pino Logging, SQL Migration)
de6a95b Rapport d'Implémentation : Refactoring de la Dette Technique (EdTech)
Ce rapport détaille l'ensemble des modifications apportées au monorepo EdTech pour résoudre la dette technique accumulée, améliorer l'observabilité et renforcer la robustesse du typage et du stockage.
1. Résumé Exécutif
L'opération a été menée avec succès sur trois axes majeurs :
- Modernisation Frontend : Passage d'un Dashboard monolithique à une architecture React modulaire.
- Fiabilisation Backend : Activation du mode strict TypeScript et correction de toutes les fuites de types (
as any). - Observabilité & Storage : Remplacement des logs console par Pino et migration des données JSON vers un schéma SQL relationnel sur Neon.
2. Détails des Modifications
A. Phase 1 : Architecture Frontend (Admin)
- Modularisation : Le fichier
App.tsxdeapps/admina été déchargé de sa logique métier. - Vues : Création du dossier
apps/admin/src/pages/contenant les composantsDashboardView.tsx,UsersManagementView.tsx, etc. - Client API : Unification des appels réseau dans
apps/admin/src/lib/api.tsutilisant Axios avec gestion d'erreurs centralisée.
B. Phase 2 : Typage Strict Backend
- tsconfig.json : Activation de
strict: truedansapps/apietapps/whatsapp-worker. - Refactoring : Correction des erreurs de type dans les webhooks et les services AI. Les retours Prisma sont désormais correctement typés via des interfaces partagées ou des types générés.
C. Phase 3.1 : Observabilité (Logging Pino)
- Pino Utility : Création de
logger.tsdans les deux applications backend, supportant les arguments variables (compatibilitéconsole.log). - Injection : Remplacement systématique de
console.log/warn/errorparlogger.info/warn/error. - Production-Ready : Les logs sont désormais structurés en JSON pour faciliter l'analyse sur Railway/Datadog.
D. Phase 3.2 : Modélisation SQL & Migration
- Schéma Prisma :
- Ajout des modèles
UserBadgeetTeamMember. - Mappage des anciennes colonnes JSON (
badges,teamMembers) pour assurer la rétrocompatibilité pendant la transition.
- Ajout des modèles
- Base de Données : Synchronisation réussie avec l'instance Neon.tech (Azure East US 2).
- Migration : Exécution du script
migrate-json-to-sql.tstransférant les badges et membres d'équipe existants vers les nouvelles tables relationnelles. - Logic Métier : Mise à jour du Worker pour utiliser
userBadgesetteamMembersListlors des écritures SQL.
3. Preuve de Stabilité et Vérification
⚡ Validation du Build
La commande pnpm build a été exécutée à la racine et a réussi sur les 7 packages :
- admin :
✓ built in 7.45s - web :
✓ built in 7.62s - api :
tsc --buildvalidé. - whatsapp-worker :
tscvalidé.
🔍 Vérification du Typage (TSC)
apps/api/src/scripts/migrate-json-to-sql.ts: Les erreurs de types liées au refresh du client Prisma ont été résolues via un transtypage temporaire pour ce script utilitaire.apps/whatsapp-worker/src/index.ts: Entièrement validé sans erreur.
🗃️ Connectivité DB
- La route
/healthde l'API a été ajoutée pour vérifier la connexion à Neon à tout moment. - Le test de connexion
queryRawconfirme l'accès à la base de données.
4. Recommandations Post-Mortem
- Suppression du JSON : Une fois la stabilité confirmée en production pendant 1 semaine, les colonnes
badgesetteamMembers(JSON) pourront être supprimées du schéma Prisma pour ne garder que les relations SQL. - Tests Unitaires : Il est recommandé de renforcer les tests sur
whatsapp-logic.tspour prévenir les régressions lors des futurs changements de prompts AI.
Lead Fullstack Architect
Date : 7 Avril 2026