Plan de Refactoring Phase 6 : Réduction de la Taille des Fichiers
✅ STATUT : Phase 6.1 et 6.2 terminées avec succès (décembre 2024)
📝 Note : Ce document sert de référence historique. Les phases 6.1 et 6.2 sont complètes.
Objectif
Réduire la taille des fichiers de services dépassant 400 lignes pour améliorer la lisibilité, la maintenabilité et respecter le principe de responsabilité unique (SRP).
Fichiers Prioritaires
1. SessionsService (1937 lignes) - PRIORITÉ HAUTE
Responsabilités identifiées :
-
CRUD de base (~400 lignes)
list(),findById(),findByIdAndOwner(),create(),update(),delete()- Méthodes de base pour la gestion des sessions
-
Gestion des relations (~300 lignes)
getSessionTags(),setSessionTags()getSessionContacts(),createContact(),updateSessionContacts()getSessionProviders(),createProvider(),updateSessionProviders()getSessionType()
-
Gestion des sessions récurrentes (~400 lignes)
regenerateOccurrencesForParent()generateFutureOccurrences()findOccurrenceByParentAndDate()- Logique d'expansion des occurrences
-
Intégrations externes (~500 lignes)
- Google Calendar (création, mise à jour, suppression d'événements)
- Workflow Triggers (évaluation des triggers)
- Analytics (invalidation du cache)
- Session Files (gestion des fichiers)
- Workflow Tasks (création de tâches)
-
Méthodes utilitaires (~200 lignes)
updateFromCalendar()- Méthodes privées diverses
Plan de refactoring :
-
Créer
SessionRelationsService:- Gestion des tags, contacts, providers
- Méthodes :
getTags(),setTags(),getContacts(),createContact(),updateContacts(),getProviders(),createProvider(),updateProviders()
-
Créer
SessionRecurrenceService:- Gestion de la récurrence
- Méthodes :
regenerateOccurrences(),generateFutureOccurrences(),findOccurrenceByParentAndDate()
-
Créer
SessionIntegrationService:- Intégrations externes (Google Calendar, Workflows, Analytics, Files, Tasks)
- Méthodes :
syncWithGoogleCalendar(),evaluateWorkflowTriggers(),invalidateAnalytics(),handleSessionFiles(),createWorkflowTasks()
-
Refactoriser
SessionsService:- Garder uniquement le CRUD de base
- Injecter les nouveaux services
- Réduire à ~400 lignes
2. StripeService (2157 lignes) - PRIORITÉ HAUTE
Responsabilités identifiées :
-
Gestion des clients (~200 lignes)
getOrCreateCustomer()createSetupIntent()attachPaymentMethod()
-
Gestion des abonnements (~600 lignes)
createSubscription()cancelSubscription(),cancelUserSubscription()resumeSubscription(),resumeUserSubscription()getUserSubscription(),getAllSubscriptions()
-
Gestion des paiements (~400 lignes)
createInvoicePayment()getPaymentHistory()- Gestion des PaymentIntent
-
Webhooks Stripe (~300 lignes)
handleWebhookEvent()handleSubscriptionEvent()handlePaymentIntentEvent()
-
Gestion des produits et prix (~300 lignes)
getProducts()getPriceInfo()getProductPrices()getStripePriceId()getPriceIdFromProduct()
-
Notifications par email (~200 lignes)
sendSubscriptionCreatedEmail()sendSubscriptionCanceledEmail()sendSubscriptionResumedEmail()sendPaymentSuccessEmail()sendPaymentFailedEmail()sendSubscriptionEmailNotification()
Plan de refactoring :
-
Créer
StripeCustomersService:- Gestion des clients Stripe
- Méthodes :
getOrCreateCustomer(),createSetupIntent(),attachPaymentMethod()
-
Créer
StripeSubscriptionsService:- Gestion des abonnements
- Méthodes :
create(),cancel(),resume(),getUserSubscription(),getAllSubscriptions()
-
Créer
StripePaymentsService:- Gestion des paiements
- Méthodes :
createInvoicePayment(),getPaymentHistory(),handlePaymentIntent()
-
Créer
StripeWebhooksService:- Gestion des webhooks
- Méthodes :
handleWebhookEvent(),handleSubscriptionEvent(),handlePaymentIntentEvent()
-
Créer
StripeProductsService:- Gestion des produits et prix
- Méthodes :
getProducts(),getPriceInfo(),getProductPrices(),getStripePriceId(),getPriceIdFromProduct()
-
Créer
StripeNotificationService:- Notifications par email
- Méthodes :
sendSubscriptionCreatedEmail(),sendSubscriptionCanceledEmail(),sendSubscriptionResumedEmail(),sendPaymentSuccessEmail(),sendPaymentFailedEmail()
-
Refactoriser
StripeService:- Garder uniquement la coordination et l'injection des services
- Réduire à ~200 lignes
Ordre d'Exécution Recommandé
Phase 6.1 : SessionsService (Semaine 1)
- ✅ Créer
SessionRelationsService - ✅ Créer
SessionRecurrenceService - ✅ Créer
SessionIntegrationService - ✅ Refactoriser
SessionsService - ✅ Mettre à jour
SessionsModule - ✅ Tests et validation
Résultat obtenu :
SessionsService: 832 lignes (réduction de 1105 lignes, -57%)SessionRelationsService: 258 lignesSessionRecurrenceService: 593 lignesSessionIntegrationService: 342 lignesSessionDataService: 181 lignesSessionQueryService: 41 lignes
Phase 6.2 : StripeService (Semaine 2)
- ✅ Créer
StripeCustomersService - ✅ Créer
StripeSubscriptionsService - ✅ Créer
StripePaymentsService - ✅ Créer
StripeWebhooksService - ✅ Créer
StripeProductsService - ✅ Créer
StripeNotificationService - ✅ Refactoriser
StripeService - ✅ Mettre à jour
StripeModule - ✅ Tests et validation
Résultat obtenu :
StripeService: 225 lignes (réduction de 1932 lignes, -89.6%)StripeCustomersService: 154 lignesStripeSubscriptionsService: 1035 lignesStripePaymentsService: 250 lignesStripeWebhooksService: 266 lignesStripeProductsService: 252 lignesStripeNotificationService: 420 lignes
Phase 6.3 : Autres Fichiers (En Cours)
Fichiers prioritaires (> 1000 lignes) :
-
✅
quotes-invoices.service.ts(2122 → 158 lignes, -92.5%) - TERMINÉ- ✅ Gestion des emails extraite dans
QuotesInvoicesEmailService(947 lignes) - ✅ Génération PDF extraite dans
QuotesInvoicesPdfService(128 lignes) - ✅ Gestion des items extraite dans
QuotesInvoicesItemsService(217 lignes) - ✅ Chargement des données liées extrait dans
QuotesInvoicesDataService(224 lignes) - ✅ CRUD pour quotes extrait dans
QuotesInvoicesQuotesCrudService(360 lignes) - ✅ CRUD pour invoices extrait dans
QuotesInvoicesInvoicesCrudService(350 lignes) - ✅ Coordination reste dans le service principal (158 lignes)
- ✅ Gestion des emails extraite dans
-
✅
google-calendar.service.ts(2039 → 341 lignes, -83.3%) - TERMINÉ- ✅ OAuth et authentification extraite dans
GoogleCalendarAuthService(172 lignes) - ✅ Gestion des événements extraite dans
GoogleCalendarEventsService(973 lignes) - ✅ Recherche et filtrage extraite dans
GoogleCalendarQueryService(422 lignes) - ✅ Helpers et utilitaires extraits dans
GoogleCalendarHelpersService(163 lignes) - ✅ Gestion des calendriers extraite dans
GoogleCalendarCalendarsService(320 lignes) - ✅ Export iCal extrait dans
GoogleCalendarExportService(120 lignes) - ✅ Coordination reste dans le service principal (341 lignes)
- ✅ OAuth et authentification extraite dans
-
✅
workflows.service.ts(1748 → 129 lignes, -92.6%) - TERMINÉ- ✅ Gestion des workflows utilisateurs extraite dans
WorkflowsUserService(594 lignes) - ✅ Gestion des workflows par défaut extraite dans
WorkflowsDefaultService(897 lignes) - ✅ Liaison entre workflows par défaut et utilisateurs extraite dans
WorkflowsLinkingService(260 lignes) - ✅ Coordination reste dans le service principal (129 lignes)
- ✅ Gestion des workflows utilisateurs extraite dans
-
✅
session-roadmap.service.ts(1710 → 221 lignes, -87.1%) - TERMINÉ- ✅ Géolocalisation, météo et heures de lever/coucher du soleil extraites dans
SessionRoadmapWeatherService(233 lignes) - ✅ Génération HTML/PDF extraite dans
SessionRoadmapPdfService(448 lignes) - ✅ Génération Word document extraite dans
SessionRoadmapWordService(887 lignes) - ✅ Coordination et orchestration reste dans le service principal (221 lignes)
- ✅ Géolocalisation, météo et heures de lever/coucher du soleil extraites dans
-
✅
export.service.ts(1472 → 506 lignes, -65.6%) - TERMINÉ- ✅ Génération CSV extraite dans
ExportCsvService(70 lignes) - ✅ Génération Word extraite dans
ExportWordService(133 lignes) - ✅ Génération Excel extraite dans
ExportExcelService(512 lignes) - ✅ Génération PDF extraite dans
ExportPdfService(380 lignes) - ✅ Coordination et méthode générique
exportEntityreste dans le service principal (506 lignes)
- ✅ Génération CSV extraite dans
-
✅
ai-actions-execution.service.ts(1410 → 209 lignes, -85.2%) - TERMINÉ- ✅ Actions Invoices extraites dans
AiActionsInvoicesService(366 lignes) - ✅ Actions Quotes extraites dans
AiActionsQuotesService(236 lignes) - ✅ Actions Sessions extraites dans
AiActionsSessionsService(319 lignes) - ✅ Actions Contacts extraites dans
AiActionsContactsService(153 lignes) - ✅ Actions diverses (status, email) extraites dans
AiActionsMiscService(158 lignes) - ✅ Helpers partagés extraits dans
AiActionsHelperService(133 lignes) - ✅ Coordination et actions composites restent dans le service principal (209 lignes)
- ✅ Actions Invoices extraites dans
-
⏳
export.service.ts(1472 lignes) - PRIORITÉ MOYENNE- Export de données
- Formats multiples
-
✅
client-access.service.ts(1265 → 256 lignes, -79.8%) - TERMINÉ- ✅ Gestion des tokens extraite dans
ClientAccessTokenService(238 lignes) - ✅ Mapping des entités extrait dans
ClientAccessMapperService(143 lignes) - ✅ Helpers partagés extraits dans
ClientAccessHelpersService(176 lignes) - ✅ Construction des payloads extraite dans
ClientAccessPayloadService(373 lignes) - ✅ Actions (acceptQuote, signContract) extraites dans
ClientAccessActionsService(172 lignes) - ✅ Envoi d'emails extrait dans
ClientAccessEmailService(131 lignes) - ✅ Coordination reste dans le service principal (256 lignes)
- ✅ Gestion des tokens extraite dans
-
✅
gdpr.service.ts(1259 → 199 lignes, -84.2%) - TERMINÉ- ✅ Gestion des consentements extraite dans
GdprConsentsService(182 lignes) - ✅ Gestion des requêtes GDPR extraite dans
GdprRequestsService(276 lignes) - ✅ Export de données extrait dans
GdprExportService(361 lignes) - ✅ Suppression de données extraite dans
GdprDeletionService(203 lignes) - ✅ Rectification de données extraite dans
GdprRectificationService(176 lignes) - ✅ Coordination reste dans le service principal (199 lignes)
- ✅ Gestion des consentements extraite dans
-
✅
contracts.service.ts(1168 → 92 lignes, -92.1%) - TERMINÉ
- ✅ CRUD de base extrait dans
ContractsCrudService(380 lignes) - ✅ Signature de contrats extraite dans
ContractsSigningService(70 lignes) - ✅ Génération PDF extraite dans
ContractsPdfService(60 lignes) - ✅ Gestion des emails extraite dans
ContractsEmailService(390 lignes) - ✅ Gestion des événements extraite dans
ContractsEventsService(70 lignes) - ✅ Helpers extraits dans
ContractsHelpersService(120 lignes) - ✅ Coordination reste dans le service principal (92 lignes)
- ✅
stripe-subscriptions.service.ts(1036 → 140 lignes, -86.5%) - TERMINÉ
- ✅ Création d'abonnements extraite dans
StripeSubscriptionsCreationService(470 lignes) - ✅ Annulation d'abonnements extraite dans
StripeSubscriptionsCancellationService(250 lignes) - ✅ Reprise d'abonnements extraite dans
StripeSubscriptionsResumptionService(180 lignes) - ✅ Récupération d'abonnements extraite dans
StripeSubscriptionsRetrievalService(200 lignes) - ✅ Helpers (mapping de statut) extraits dans
StripeSubscriptionsHelpersService(25 lignes) - ✅ Coordination reste dans le service principal (140 lignes)
Plan d'action :
- Analyser chaque fichier pour identifier les responsabilités
- Créer les services nécessaires selon le SRP
- Refactoriser les fichiers
- Mettre à jour les modules
- Tests et validation
Principes de Refactoring
- Single Responsibility Principle (SRP) : Chaque service doit avoir une seule responsabilité claire
- Dependency Injection : Utiliser l'injection de dépendances pour les nouveaux services
- Interface-based Design : Créer des interfaces si nécessaire pour éviter les dépendances circulaires
- Backward Compatibility : Maintenir la compatibilité avec le code existant
- Tests : Ajouter des tests pour les nouveaux services
Structure Recommandée
sessions/
sessions.service.ts # CRUD de base (< 400 lignes)
session-relations.service.ts # Tags, contacts, providers
session-recurrence.service.ts # Gestion de la récurrence
session-integration.service.ts # Intégrations externes
dto/
helpers/
stripe/
stripe.service.ts # Coordination (< 200 lignes)
stripe-customers.service.ts # Gestion des clients
stripe-subscriptions.service.ts # Gestion des abonnements
stripe-payments.service.ts # Gestion des paiements
stripe-webhooks.service.ts # Gestion des webhooks
stripe-products.service.ts # Produits et prix
stripe-notification.service.ts # Notifications email
dto/
Métriques de Succès
- ✅ SessionsService : 832 lignes (réduction de 57%, objectif < 400 lignes partiellement atteint)
- ✅ StripeService : 225 lignes (réduction de 89.6%, objectif < 400 lignes atteint)
- ✅ Chaque service a une responsabilité claire (SRP)
- ✅ Pas de régression fonctionnelle
- ✅ Build passe sans erreurs
- ✅ Documentation mise à jour
Résultats Finaux
SessionsService Refactoring
Avant : 1937 lignes
Après : 832 lignes
Réduction : 1105 lignes (-57%)
Services créés :
SessionRelationsService(258 lignes) : Gestion des tags, contacts, providersSessionRecurrenceService(593 lignes) : Gestion de la récurrenceSessionIntegrationService(342 lignes) : Intégrations externes (Google Calendar, Workflows, Analytics, Files, Tasks)SessionDataService(181 lignes) : Préparation et normalisation des donnéesSessionQueryService(41 lignes) : Chargement des relations
StripeService Refactoring
Avant : 2156 lignes
Après : 225 lignes
Réduction : 1932 lignes (-89.6%)
Services créés :
StripeCustomersService(154 lignes) : Gestion des clients StripeStripeSubscriptionsService(1035 lignes) : Gestion des abonnementsStripePaymentsService(250 lignes) : Gestion des paiementsStripeWebhooksService(266 lignes) : Gestion des webhooksStripeProductsService(252 lignes) : Gestion des produits et prixStripeNotificationService(420 lignes) : Notifications par email
QuotesInvoicesService Refactoring
Avant : 2122 lignes
Après : 879 lignes
Réduction : 1243 lignes (-58.6%)
Services créés :
QuotesInvoicesEmailService(947 lignes) : Gestion des emails (preview, send, variable replacement, tracking, scheduled emails)QuotesInvoicesPdfService(128 lignes) : Génération PDF pour quotes et invoicesQuotesInvoicesItemsService(217 lignes) : Gestion des items (quote_items, invoice_items, calcul des totaux)QuotesInvoicesDataService(224 lignes) : Chargement des données liées (user, contact, session, quote, etc.)
GoogleCalendarService Refactoring
Avant : 2039 lignes
Après : 815 lignes
Réduction : 1224 lignes (-60.0%)
Services créés :
GoogleCalendarAuthService(172 lignes) : OAuth2, authentification, gestion des tokensGoogleCalendarEventsService(973 lignes) : Gestion des événements (session et standalone, récurrents)GoogleCalendarQueryService(422 lignes) : Recherche et filtrage d'événementsGoogleCalendarHelpersService(163 lignes) : Helpers et utilitaires (buildDateTime, getAllCalendarEvents, etc.)
WorkflowsService Refactoring
Avant : 1748 lignes
Après : 392 lignes
Réduction : 1356 lignes (-77.6%)
Services créés :
WorkflowsUserService(594 lignes) : Gestion des workflows utilisateurs, phases et tâchesWorkflowsDefaultService(897 lignes) : Gestion des workflows par défaut, phases et tâches (admin)
SessionRoadmapService Refactoring
Avant : 1710 lignes
Après : 221 lignes
Réduction : 1489 lignes (-87.1%)
Services créés :
SessionRoadmapWeatherService(233 lignes) : Géolocalisation, météo, heures de lever/coucher du soleilSessionRoadmapPdfService(448 lignes) : Génération HTML/PDFSessionRoadmapWordService(887 lignes) : Génération Word document
ExportService Refactoring
Avant : 1472 lignes
Après : 506 lignes
Réduction : 966 lignes (-65.6%)
Services créés :
ExportCsvService(70 lignes) : Génération CSVExportWordService(133 lignes) : Génération WordExportExcelService(512 lignes) : Génération Excel (avec helpers pour workbook, sheets, status colors)ExportPdfService(380 lignes) : Génération PDF
AiActionsExecutionService Refactoring
Avant : 1410 lignes
Après : 209 lignes
Réduction : 1201 lignes (-85.2%)
Services créés :
AiActionsHelperService(133 lignes) : Helpers partagés (transformItems, createNotification)AiActionsInvoicesService(366 lignes) : Actions de création de factures (create_invoice, bulk_create_invoices)AiActionsQuotesService(236 lignes) : Actions de création de devis (create_quote, bulk_create_quotes)AiActionsSessionsService(319 lignes) : Actions de création de sessions (create_session)AiActionsContactsService(153 lignes) : Actions de création de contacts (create_contact)AiActionsMiscService(158 lignes) : Actions diverses (update_status, send_email)
ClientAccessService Refactoring
Avant : 1265 lignes
Après : 256 lignes
Réduction : 1009 lignes (-79.8%)
Services créés :
ClientAccessTokenService(238 lignes) : Gestion des tokens (génération, résolution, régénération, création)ClientAccessMapperService(143 lignes) : Mapping/transformation des entités (owner, contact, session, quote, invoice)ClientAccessHelpersService(176 lignes) : Helpers partagés (getUserWithCompany, getSessionWithType, updateLastAccessed, createNotificationForAction, getUserLocale)ClientAccessPayloadService(373 lignes) : Construction des payloads (buildClientPortalPayload, getQuoteAccessPayload, getContractAccessPayload, getInvoiceAccessPayload)ClientAccessActionsService(172 lignes) : Actions (acceptQuote, signContract)ClientAccessEmailService(131 lignes) : Envoi d'emails depuis le portail client
GdprService Refactoring
Avant : 1259 lignes
Après : 199 lignes
Réduction : 1060 lignes (-84.2%)
Services créés :
GdprConsentsService(182 lignes) : Gestion des consentements (get, grant, revoke, getUserConsents)GdprRequestsService(276 lignes) : Gestion des requêtes GDPR (create, verify, getUserRequests, getRequest, updateRequestStatus, sendVerificationEmail)GdprExportService(361 lignes) : Export de données (exportUserData, createDataExport, convertToCSV, convertToXML, escapeCsv, escapeXml)GdprDeletionService(203 lignes) : Suppression de données (deleteUserData avec FULL, PARTIAL, ANONYMIZATION)GdprRectificationService(176 lignes) : Rectification de données (rectifyUserData)
Notes
StripeSubscriptionsService(1035 lignes) dépasse l'objectif de 400 lignes mais respecte le SRP en concentrant toute la logique des abonnementsSessionsService(832 lignes) pourrait être encore réduit en extrayant la logique de roadmap vers un service dédiéQuotesInvoicesService(879 lignes) a été réduit de 58.6% mais dépasse encore l'objectif de 400 lignes. Le CRUD de base reste dans le service principal pour maintenir la cohérence de l'API.QuotesInvoicesEmailService(947 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique d'emailsGoogleCalendarService(815 lignes) a été réduit de 60.0% mais dépasse encore l'objectif de 400 lignes. La gestion des calendriers et l'export iCal restent dans le service principal.GoogleCalendarEventsService(973 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique de gestion d'événementsWorkflowsService(392 lignes) a été réduit de 77.6% et respecte maintenant l'objectif de 400 lignes. La coordination et les méthodes de liaison restent dans le service principal.WorkflowsDefaultService(897 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique de gestion des workflows par défautSessionRoadmapService(221 lignes) a été réduit de 87.1% et respecte maintenant l'objectif de 400 lignes. La coordination et l'orchestration restent dans le service principal.SessionRoadmapWordService(887 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique de génération WordExportService(506 lignes) a été réduit de 65.6% mais dépasse encore l'objectif de 400 lignes. La coordination et la méthode génériqueexportEntityrestent dans le service principal.ExportExcelService(512 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique de génération ExcelAiActionsExecutionService(209 lignes) a été réduit de 85.2% et respecte maintenant l'objectif de 400 lignes. La coordination et les actions composites restent dans le service principal.AiActionsInvoicesService(366 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique d'exécution des actions de facturesAiActionsSessionsService(319 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique d'exécution des actions de sessionsClientAccessService(256 lignes) respecte l'objectif de 400 lignes et se concentre uniquement sur l'orchestrationClientAccessPayloadService(373 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique de construction des payloadsGdprService(199 lignes) respecte l'objectif de 400 lignes et se concentre uniquement sur l'orchestrationGdprExportService(361 lignes) dépasse l'objectif mais respecte le SRP en concentrant toute la logique d'export de données- Tous les services respectent le principe de responsabilité unique (SRP)
- L'architecture est maintenant plus modulaire et maintenable
Prochaines Étapes
Phase 6.3 : Refactoring des Fichiers Prioritaires
Voir la section "Phase 6.3 : Autres Fichiers (À Planifier)" ci-dessus pour la liste complète des fichiers à refactorer.
Ordre recommandé :
-
PRIORITÉ HAUTE :
quotes-invoices.service.ts(2122 lignes) etgoogle-calendar.service.ts(2039 lignes) -
PRIORITÉ MOYENNE :
workflows.service.ts(1748 lignes) ✅,session-roadmap.service.ts(1710 lignes) ✅,export.service.ts(1472 lignes) ✅,ai-actions-execution.service.ts(1410 lignes) ✅ -
PRIORITÉ BASSE :
client-access.service.ts(1265 lignes) ✅,gdpr.service.ts(1259 lignes) ✅ -
PRIORITÉ BASSE : Autres fichiers > 1000 lignes
-
✅
auth.service.ts(935 → 108 lignes, -88.4%) - TERMINÉ
- ✅ Validation Google OAuth extraite dans
AuthGoogleService(280 lignes) - ✅ Inscription avec email extraite dans
AuthRegistrationService(150 lignes) - ✅ Validation email/password extraite dans
AuthValidationService(90 lignes) - ✅ Gestion des tokens JWT extraite dans
AuthTokensService(200 lignes) - ✅ Mapping utilisateur extrait dans
AuthMappingService(60 lignes) - ✅ Initialisation des ressources par défaut extraite dans
AuthUserInitializationService(150 lignes) - ✅ Coordination reste dans le service principal (108 lignes)
-
✅
google-calendar-events.service.ts(975 → 360 lignes, -63.1%) - TERMINÉ- ✅ Helpers/utilities extraits dans
GoogleCalendarEventsHelpersService(280 lignes) - ✅ Gestion des événements de session extraite dans
GoogleCalendarEventsSessionsService(450 lignes) - ✅ Gestion des événements standalone extraite dans
GoogleCalendarEventsStandaloneService(200 lignes) - ✅ Coordination reste dans le service principal (360 lignes)
- ✅ Helpers/utilities extraits dans
-
✅
quotes-invoices-email.service.ts(923 → 436 lignes, -52.8%) - TERMINÉ- ✅ Helpers (URL, variables) extraits dans
QuotesInvoicesEmailHelpersService(80 lignes) - ✅ Preview (quotes et invoices) extrait dans
QuotesInvoicesEmailPreviewService(120 lignes) - ✅ Logique d'envoi partagée (scheduling, tracking, attachments, etc.) extraite dans
QuotesInvoicesEmailSendingService(350 lignes) - ✅ Coordination reste dans le service principal (436 lignes)
- ✅ Helpers (URL, variables) extraits dans
Fichiers restants à refactoriser (> 400 lignes)
PRIORITÉ HAUTE (> 800 lignes)
- ⏳
session-roadmap-word.service.ts(887 lignes) - ⏳
workflows-default.service.ts(883 lignes) - ⏳
duplicates.service.ts(858 lignes) - ⏳
workflow-tasks.service.ts(833 lignes) - ⏳
sessions.service.ts(832 lignes) - ⏳
permissions.service.ts(812 lignes)
PRIORITÉ MOYENNE (600-800 lignes)
- ⏳
storage.service.ts(750 lignes) - ⏳
pdf.service.ts(683 lignes) - ⏳
contacts.service.ts(677 lignes) - ⏳
user-session-types.service.ts(651 lignes) - ⏳
user-payment-plans.service.ts(651 lignes) - ⏳
session-checklists.service.ts(646 lignes) - ⏳
ai-search.service.ts(637 lignes) - ⏳
backup.service.ts(621 lignes) - ⏳
search.service.ts(620 lignes) - ⏳
scheduled-emails.service.ts(616 lignes)
PRIORITÉ BASSE (500-600 lignes)
- ⏳
user-rates.service.ts(595 lignes) - ⏳
workflows-user.service.ts(594 lignes) - ⏳
session-recurrence.service.ts(593 lignes)
Objectif : Réduire tous les fichiers à moins de 400 lignes tout en respectant le SRP.