4.4 KiB
4.4 KiB
État d'implémentation de l'architecture
Auteur : Équipe 4NK Date : 2025-01-27
Vue d'ensemble
Ce document décrit l'état actuel de l'implémentation des principes d'architecture et les migrations nécessaires.
Services créés
✅ Services conformes aux principes
-
lib/websocketService.ts- Service de gestion des WebSockets- Gère les connexions WebSocket
- Communique avec les Service Workers via
swClient - ✅ Conforme aux principes
-
lib/writeOrchestrator.ts- Service de gestion des écritures- Orchestre les écritures vers WebSockets/API et Web Worker d'écriture
- ✅ Conforme aux principes
-
lib/writeService.ts- Service de gestion du Web Worker d'écriture- Existe déjà et route les écritures vers le Web Worker
- ⚠️ Le fichier
writeWorker.jsdoit être créé et adapté pour Next.js
-
lib/notificationReader.ts- Service de lecture des notifications- Détecte les nouvelles notifications dans IndexedDB
- Séparé du Service Worker qui alimente les notifications
- ✅ Conforme aux principes
-
lib/notificationService.ts- Service de gestion des notifications- Stocke les notifications dans IndexedDB
- ✅ Conforme aux principes
-
lib/notificationDetector.ts- Détecteur de notifications- Scanne IndexedDB pour détecter les nouveaux événements
- ⚠️ Doit être intégré dans le Service Worker pour alimenter les notifications
Migrations nécessaires
🔄 Migrations prioritaires
-
Créer et adapter
writeWorker.js- Le fichier
public/writeWorker.jsexiste mais doit être adapté pour Next.js - Les Web Workers dans Next.js nécessitent une configuration spéciale
- Action : Adapter le worker pour fonctionner avec Next.js ou utiliser une approche alternative
- Le fichier
-
Migrer les écritures directes vers
writeService- Plusieurs services appellent directement
objectCache.setetobjectCache.updatePublished - Fichiers concernés :
lib/platformSync.ts- Synchronisation plateformelib/userContentSync.ts- Synchronisation contenu utilisateurlib/articlePublisher.ts- Publication d'articleslib/purchaseQueries.ts- Requêtes d'achatslib/reviewTipQueries.ts- Requêtes de tipslib/sponsoringQueries.ts- Requêtes de sponsoring
- Action : Remplacer tous les appels directs par
writeService.writeObject()etwriteService.updatePublished()
- Plusieurs services appellent directement
-
Intégrer le Service Worker pour les notifications
- Le Service Worker doit alimenter directement la table des notifications via le Web Worker d'écriture
- Actuellement, le détecteur s'exécute dans le thread principal
- Action : Modifier
public/sw.jspour que le Service Worker alimente les notifications viawriteService.createNotification()
-
Utiliser
websocketServiceau lieu denostrService.poolnostrServiceutilise directementSimplePoolpour les WebSockets- Action : Migrer vers
websocketServicequi communique avec les Service Workers
-
Utiliser
writeOrchestratorpour les publications- Les publications doivent passer par
writeOrchestratorqui orchestre WebSocket + Web Worker - Action : Modifier
nostrService.publishEvent()pour utiliserwriteOrchestrator
- Les publications doivent passer par
Architecture cible
Interface Utilisateur (React)
↓ (lecture uniquement)
IndexedDB
↑ (écriture via Web Worker)
Web Worker d'écriture (writeWorker.js)
↑ (orchestration)
Service de gestion des écritures (writeOrchestrator)
↓ (réseau)
Service WebSocket (websocketService)
↓ (communication)
Service Workers (sw.js)
↓ (persistance via Web Worker)
Web Worker d'écriture
↓
IndexedDB
Priorités
- Haute priorité : Créer et adapter
writeWorker.jspour Next.js - Haute priorité : Migrer les écritures de synchronisation vers
writeService - Moyenne priorité : Intégrer le Service Worker pour alimenter les notifications
- Moyenne priorité : Migrer vers
websocketService - Basse priorité : Utiliser
writeOrchestratorpour les publications
Notes
- Les services de configuration (
configStorage,settingsCache) peuvent continuer à écrire directement dans IndexedDB car ils ne sont pas des données métier - Les services de log (
publishLog) peuvent continuer à écrire directement car ce sont des logs - La migration doit être progressive pour éviter de casser l'application