- Add comprehensive documentation (IMPLEMENTATION_COMPLETE, ProductionReady, QUICK_START, STARTUP_ANALYSIS) - Add startup scripts (start-server.sh, start-server.bat, check-setup.sh) - Add configs directory structure with README - Add ValidationGuards and Main.js backup - Add LLM monitoring HTML interface - Add cache templates and XML files - Add technical report (rapport_technique.md) - Add bundled code.js 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.5 KiB
🔍 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 ?
googleapisest 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é) :
- Chargement du SDK Google :
googleapisinitialise ses services - 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
- Parse de
- Connexion Google Sheets API :
- Premier appel à
sheets.spreadsheets.values.get() - Latence réseau (~500-1000ms)
- Cache warming Google
- Premier appel à
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 :
# Chercher les appels Google Sheets potentiels
grep -r "getPersonalities\|readInstructionsData" lib/ --include="*.js"
Hypothèse :
BrainConfig.jsest importé quelque part- Une fonction fait un
await getPersonalities()oureadInstructionsData() - Ç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 :
// 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 :
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.jsne doit PAS faire d'appels Google aurequire()- Uniquement charger Google Sheets quand l'utilisateur fait une vraie requête
Solution 2 : Connexion Asynchrone en Background
// 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
// 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 :
# 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 :
- Ajouter des logs de timing partout
- Identifier EXACTEMENT où ça bloque
- Proposer un fix concret
Ou tu me dis juste "53s ça me va" et on passe à autre chose ! 😊