Files
noteflow/VOIR-LOGS-TIMEZONE.md
Claude 27840c342f 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 !
2025-11-16 17:37:30 +00:00

4.7 KiB

🔍 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

docker-compose down
docker-compose build --no-cache notes-app
docker-compose up -d

ÉTAPE 2 : Supprimer les anciens événements

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 !