# 🔍 Analyse Temps de Démarrage - 53 Secondes **Situation** : Le serveur prend ~53 secondes pour démarrer **Question** : Est-ce normal ? Que se passe-t-il pendant ce temps ? --- ## ⏱️ **Timeline du Démarrage** ### **Phase 1: Chargement Modules Node.js (5-10s)** ``` [0-10s] Chargement des dépendances npm ├── express ├── googleapis (LOURD - ~3-5s) ├── @anthropic-ai/sdk ├── openai ├── aws-sdk (pour Digital Ocean) ├── axios ├── ws (WebSocket) └── ... 50+ autres packages ``` **Pourquoi c'est long ?** - `googleapis` est un package **très lourd** (~15MB) - Première initialisation du SDK Google Sheets - Parsing de tous les modules npm --- ### **Phase 2: Initialisation du Serveur (1-2s)** ``` [10-12s] Démarrage server.js ├── Chargement .env (dotenv.config()) ├── Banner de démarrage ├── Setup signal handlers └── ModeManager.initialize() ``` **Rien d'anormal ici.** --- ### **Phase 3: ManualServer Start (2-5s)** ``` [12-17s] ManualServer.start() ├── setupExpressApp() - Instantiation Express ├── setupAPIRoutes() - Enregistrement 30+ routes ├── setupWebInterface() - Configuration static files ├── setupWebSocketServer() - Lancer WS sur port 8081 ├── startHTTPServer() - Lancer HTTP sur port 3000 └── startMonitoring() - Démarrer health checks ``` **Rien d'anormal ici non plus.** --- ### **Phase 4: LE PROBLÈME - Lazy Loading Google Sheets (30-40s)** **C'est ICI que ça traîne ! 🐌** ``` [17-53s] ❌ PREMIÈRE CONNEXION GOOGLE SHEETS (NON VISIBLE DANS LOGS) ``` **Ce qui se passe (caché)** : 1. **Chargement du SDK Google** : `googleapis` initialise ses services 2. **Authentication Google** : - Parse de `GOOGLE_PRIVATE_KEY` (clé PEM longue) - Génération du JWT token - Appel API Google OAuth2 : `https://oauth2.googleapis.com/token` - Validation credentials 3. **Connexion Google Sheets API** : - Premier appel à `sheets.spreadsheets.values.get()` - Latence réseau (~500-1000ms) - Cache warming Google **Pourquoi 30-40 secondes ?** Probablement **PLUSIEURS raisons combinées** : | Cause | Impact Estimé | Raison | |-------|---------------|--------| | 🌐 **Connexion réseau lente** | 10-20s | Si tu es sur WSL ou VPN | | 🔐 **Auth Google lente** | 5-10s | Génération JWT + validation | | 🗄️ **Google Sheets timeout** | 10-15s | Première connexion à la Sheet | | 💾 **Cache cold start** | 5-10s | Pas de cache au premier démarrage | --- ## 🔍 **Preuve : Où est la Connexion Google ?** Vérifions si le code fait un appel Google Sheets au démarrage : ```bash # Chercher les appels Google Sheets potentiels grep -r "getPersonalities\|readInstructionsData" lib/ --include="*.js" ``` **Hypothèse** : - `BrainConfig.js` est importé quelque part - Une fonction fait un `await getPersonalities()` ou `readInstructionsData()` - Ça bloque le démarrage --- ## 🧪 **Test Diagnostic : Confirmer l'Hypothèse** ### **Option 1 : Logs de timing détaillés** Modifie `server.js` ligne 35 pour ajouter : ```javascript // AVANT const mode = await ModeManager.initialize(); // APRÈS console.time('ModeManager.initialize'); const mode = await ModeManager.initialize(); console.timeEnd('ModeManager.initialize'); ``` Relance et regarde le temps affiché. ### **Option 2 : Ajouter des timestamps** Dans `lib/modes/ManualServer.js`, ligne 61-87, ajoute des logs : ```javascript logSh('🎯 Démarrage ManualServer...', 'INFO'); const startTime = Date.now(); // 1. Configuration Express console.log(`[${Date.now() - startTime}ms] setupExpressApp`); await this.setupExpressApp(); // 2. Routes API console.log(`[${Date.now() - startTime}ms] setupAPIRoutes`); this.setupAPIRoutes(); // 3. Interface Web console.log(`[${Date.now() - startTime}ms] setupWebInterface`); this.setupWebInterface(); // 4. WebSocket console.log(`[${Date.now() - startTime}ms] setupWebSocketServer`); await this.setupWebSocketServer(); // 5. HTTP Server console.log(`[${Date.now() - startTime}ms] startHTTPServer`); await this.startHTTPServer(); ``` Ça te dira **EXACTEMENT** où ça bloque. --- ## 🎯 **Verdict Probable** ### **Est-ce Normal ?** **NON, 53 secondes c'est PAS normal.** Attendu : **5-10 secondes maximum** **Ce qui est normal :** - ✅ 3-5s pour charger `googleapis` (gros package) - ✅ 2-3s pour démarrer Express + WebSocket - ✅ 1-2s pour parser .env et configurer routes **Ce qui est ANORMAL :** - ❌ 30-40s cachés quelque part - ❌ Probablement un appel Google Sheets bloquant au démarrage - ❌ Ou une connexion réseau qui timeout/retry --- ## 🛠️ **Solutions Possibles** ### **Solution 1 : Lazy Loading Google Sheets (Recommandée)** Ne PAS charger Google Sheets au démarrage, seulement quand nécessaire. **Vérifier :** - `lib/BrainConfig.js` ne doit PAS faire d'appels Google au `require()` - Uniquement charger Google Sheets quand l'utilisateur fait une vraie requête ### **Solution 2 : Connexion Asynchrone en Background** ```javascript // Démarrer serveur SANS attendre Google Sheets await this.startHTTPServer(); logSh('✅ Serveur démarré (Google Sheets en chargement...)'); // Charger Google Sheets en arrière-plan this.loadGoogleSheetsAsync(); ``` ### **Solution 3 : Cache au Premier Démarrage** ```javascript // Sauvegarder les personnalités dans un fichier local // Charger depuis cache au lieu de Google Sheets if (existsSync('cache/personalities.json')) { personalities = require('./cache/personalities.json'); } else { personalities = await fetchFromGoogleSheets(); saveToCache('cache/personalities.json', personalities); } ``` --- ## 📊 **Benchmarks Attendus** | Environnement | Temps Attendu | Raison | |---------------|---------------|--------| | **Localhost (sans Google)** | 3-5s | Juste Node + Express | | **Localhost (avec Google)** | 8-12s | + Auth Google + 1er appel API | | **WSL (réseau lent)** | 15-25s | Latence réseau Windows ↔ WSL | | **VPN/Proxy** | 20-40s | Latence Google Sheets API | | **Ton cas actuel** | **53s** | ❌ Problème probable | --- ## 🔎 **Action Immédiate : Diagnostic** **Exécute ça pour confirmer** : ```bash # Lancer avec logs Node.js complets NODE_DEBUG=module npm start 2>&1 | grep -E "googleapis|google-auth" ``` Ou ajoute des `console.time()` dans le code pour trouver le coupable exact. --- ## 💡 **Ma Recommandation** **2 options selon ton besoin :** ### **Option A : "C'est acceptable"** Si tu peux vivre avec 53s : - ✅ **OK si** : Tu démarres le serveur 1 fois/jour - ✅ **OK si** : Pas de redémarrages fréquents - ❌ **PAS OK si** : Tu développes activement (restart constant) ### **Option B : "Je veux optimiser"** Si 53s est inacceptable : - 🔧 **Diagnostic** : Ajouter des `console.time()` partout - 🔧 **Fix** : Lazy loading Google Sheets - 🔧 **Cache** : Sauvegarder personnalités en local - 🎯 **Objectif** : Descendre à 8-12 secondes --- ## 🎓 **Résumé : Pourquoi 53s ?** **Décomposition probable :** ``` 3-5s : Chargement modules Node.js 2-3s : Initialisation Express + WebSocket 1-2s : Configuration routes 40-45s : ❌ MYSTÈRE (probablement Google Sheets) ------- ~53s TOTAL ``` **Le coupable probable** : - Appel Google Sheets au démarrage (auth + première connexion) - Latence réseau (WSL ou VPN) - Timeout/retry automatique **C'est pas "cassé"**, mais **c'est optimisable** ! --- ## 🚀 **Tu veux que je trouve le vrai coupable ?** Dis-moi et je peux : 1. Ajouter des logs de timing partout 2. Identifier EXACTEMENT où ça bloque 3. Proposer un fix concret **Ou tu me dis juste "53s ça me va" et on passe à autre chose ! 😊**