Add: Système de logs visibles dans le navigateur (sans accès Docker)

NOUVEAU SYSTÈME DE LOGGING:

Au lieu d'utiliser les logs Docker (inaccessibles depuis Portainer),
création d'un système de logs accessible directement dans le navigateur.

FICHIERS AJOUTÉS:

1. services/timezone-logger.js:
   - Service singleton qui stocke les logs en mémoire
   - Limite à 500 logs max (pour éviter les fuites mémoire)
   - Méthodes: log(), getLogs(), clearLogs(), getLogsByCategory()

2. routes/timezone-logs.routes.js:
   - GET /api/timezone-logs - Logs en JSON
   - GET /api/timezone-logs/html - Interface web avec design moderne
   - GET /api/timezone-logs/category/:cat - Filtrer par catégorie
   - POST /api/timezone-logs/clear - Vider les logs

3. VOIR-LOGS-TIMEZONE.md:
   - Documentation complète du système
   - Procédure pas à pas
   - Explications des logs attendus

FICHIERS MODIFIÉS:

1. config/database.js:
   - Utilise timezoneLogger au lieu de logger.debug
   - Catégorie: PARSER

2. routes/calendar.routes.js:
   - Logs avec timezoneLogger lors de la synchronisation
   - Catégorie: SYNC (synchronisation Google Calendar)
   - Catégorie: GET (envoi au frontend)

3. server.js:
   - Ajout de la route /api/timezone-logs

INTERFACE WEB DE LOGS:

Accessible sur: http://localhost:2222/api/timezone-logs/html

Fonctionnalités:
- ✅ Design moderne avec dégradés et animations
- ✅ Statistiques en temps réel (total, par catégorie)
- ✅ Filtrage par catégorie (SYNC, PARSER, GET)
- ✅ Auto-refresh toutes les 3 secondes
- ✅ Code couleur par catégorie
- ✅ Affichage des données JSON formatées
- ✅ Bouton pour vider les logs
- ✅ Responsive, fonctionne sur mobile

UTILISATION:

1. Rebuild: docker-compose build --no-cache notes-app
2. Ouvrir: http://localhost:2222/api/timezone-logs/html
3. Synchroniser Google Calendar
4. Observer les logs en temps réel dans le navigateur

Plus besoin d'accès aux logs Docker/Portainer !
This commit is contained in:
Claude committed 2025-11-16 17:37:30 +00:00
1 parent 972dcacc50
commit 27840c342f
6 files changed
+594 -12

No files matched your search

+190
View File
@@ -0,0 +1,190 @@
# 🔍 VOIR LES LOGS DE TIMEZONE DIRECTEMENT DANS VOTRE NAVIGATEUR
Ce système vous permet de voir en temps réel ce qui se passe avec les dates, **sans avoir besoin d'accès aux logs Docker**.
---
## 🚀 COMMENT UTILISER
### **ÉTAPE 1 : Rebuild et redémarrage**
```bash
docker-compose down
docker-compose build --no-cache notes-app
docker-compose up -d
```
### **ÉTAPE 2 : Supprimer les anciens événements**
```bash
docker exec noteflow-postgres psql -U noteflow -d noteflow -p 5499 \
-c "DELETE FROM calendar_events"
```
### **ÉTAPE 3 : Ouvrir la page de logs**
Ouvrez votre navigateur et allez sur :
```
http://localhost:2222/api/timezone-logs/html
```
**Laissez cette page ouverte** dans un onglet.
### **ÉTAPE 4 : Synchroniser avec Google Calendar**
1. Dans un autre onglet, ouvrez http://localhost:2222
2. Allez dans **Admin** → **Google Calendar**
3. Cliquez sur **🔄 Synchroniser**
### **ÉTAPE 5 : Regarder les logs apparaître**
Retournez sur l'onglet des logs (`/api/timezone-logs/html`) et vous verrez :
- 🟣 **SYNC** : Ce que Google Calendar renvoie
- 🟠 **PARSER** : Comment PostgreSQL parse les dates
- 🟢 **GET** : Ce qui est envoyé au frontend
---
## 📊 FONCTIONNALITÉS DE LA PAGE DE LOGS
### **Boutons en haut** :
- **🔄 Rafraîchir** : Recharger la page pour voir les nouveaux logs
- **🗑️ Vider les logs** : Supprimer tous les logs
- **⏱️ Auto-refresh** : Activer le rafraîchissement automatique toutes les 3 secondes
- **Filtres** : Afficher seulement les logs d'une catégorie (Tous, Sync, Parser, Get)
### **Statistiques affichées** :
- Total de logs
- Nombre de logs par catégorie
### **Chaque log affiche** :
- ⏰ Timestamp (date et heure exacte)
- 🏷️ Catégorie (SYNC, PARSER, GET)
- 📝 Message descriptif
- 📦 Données JSON (si disponibles)
---
## 🔍 EXEMPLE DE LOGS ATTENDUS
### **Lors de la synchronisation** :
```
[SYNC] 📅 Événement: "Dr Julian Wlodarczak"
{
"googleStartBrut": {
"dateTime": "2024-11-17T10:20:00+01:00"
},
"startTimeExtrait": "2024-11-17T10:20:00+01:00",
"type": "string",
"isAllDay": false
}
[SYNC] → Conversion: new Date("2024-11-17T10:20:00+01:00") = 2024-11-17T09:20:00.000Z
{
"affichageParis": "17/11/2024 10:20:00",
"heureParisSeule": "10:20"
}
```
### **Lors du parsing PostgreSQL** :
```
[PARSER] Input sans TZ: "2024-11-17 09:20:00" → ISO+Z: "2024-11-17T09:20:00Z" → Output: "2024-11-17T09:20:00.000Z"
```
### **Lors de l'envoi au frontend** :
```
[GET] 📤 Envoi au frontend: "Dr Julian Wlodarczak"
{
"start_time_DB": "2024-11-17T09:20:00.000Z",
"type": "string"
}
[GET] → Frontend recevra: 2024-11-17T09:20:00.000Z
{
"apresNewDate": "2024-11-17T09:20:00.000Z",
"affichageParisAttendu": "10:20"
}
```
---
## ✅ CE QU'IL FAUT VÉRIFIER
Dans les logs, vérifiez que :
1. ✅ **Google renvoie** : `"2024-11-17T10:20:00+01:00"` (10:20 heure de Paris)
2. ✅ **Conversion UTC** : `2024-11-17T09:20:00.000Z` (09:20 UTC = 10:20 Paris)
3. ✅ **PostgreSQL stocke** : `"2024-11-17 09:20:00"` (09:20 UTC)
4. ✅ **Parser normalise** : `"2024-11-17T09:20:00.000Z"`
5. ✅ **Frontend reçoit** : `"2024-11-17T09:20:00.000Z"`
6. ✅ **Affichage attendu** : `"10:20"`
---
## 🎨 COULEURS DANS L'INTERFACE
- 🟣 **Violet** : Logs de synchronisation (SYNC)
- 🟠 **Orange** : Logs du parser PostgreSQL (PARSER)
- 🟢 **Vert** : Logs d'envoi au frontend (GET)
---
## 📱 ACCESSIBLE DEPUIS PORTAINER
Si vous utilisez Portainer :
1. Ouvrez Portainer
2. Cliquez sur votre container `notes-app`
3. Dans le navigateur, allez sur : `http://localhost:2222/api/timezone-logs/html`
Vous pouvez aussi accéder à la page depuis **n'importe quel appareil** sur le même réseau :
```
http://VOTRE_IP:2222/api/timezone-logs/html
```
---
## 🆘 SI VOUS VOYEZ UN DÉCALAGE
Prenez une **capture d'écran de la page de logs** et cherchez :
- ❌ Où l'heure change de 10:20 à 11:20
- ❌ Quelle étape cause le décalage (SYNC, PARSER, ou GET)
Envoyez-moi la capture et je pourrai corriger le problème exact.
---
## 🔄 AUTRES ENDPOINTS DISPONIBLES
### **Logs en JSON** :
```
GET http://localhost:2222/api/timezone-logs
```
### **Vider les logs** :
```
POST http://localhost:2222/api/timezone-logs/clear
```
### **Logs d'une catégorie** :
```
GET http://localhost:2222/api/timezone-logs/category/SYNC
GET http://localhost:2222/api/timezone-logs/category/PARSER
GET http://localhost:2222/api/timezone-logs/category/GET
```
---
## 💡 ASTUCE
Activez l'**Auto-refresh** pour voir les logs apparaître en temps réel pendant que vous synchronisez !