mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
Fix: Correction du décalage horaire de 1h pour les événements Google Calendar
Problème identifié: - Google Calendar envoie '2025-11-17T10:20:00+01:00' (10h20 Paris = 09h20 UTC) - PostgreSQL TIMESTAMP enlève le fuseau horaire et stocke '2025-11-17 10:20:00' (heure locale) - Le parser 1114 traite cette valeur comme UTC → '2025-11-17T10:20:00.000Z' - Frontend affiche 11h20 en heure de Paris (10:20 UTC + 1h) au lieu de 10h20 Solution: - Convertir tous les timestamps en UTC (ISO format) avant insertion dans PostgreSQL - Appliquer la conversion dans toutes les routes: POST /sync, POST /events, PUT /events/:id - Le parser 1114 traite maintenant correctement les valeurs UTC stockées Changements: - routes/calendar.routes.js: Conversion UTC avant insertion (3 routes corrigées) - routes/calendar.routes.js: Correction syntaxe PostgreSQL (INSERT ... ON CONFLICT) - scripts/cleanup-calendar-events.js: Script pour nettoyer les événements existants Pour appliquer la correction sur les données existantes: 1. Exécuter: docker exec notes-todo-app node scripts/cleanup-calendar-events.js 2. Redémarrer: docker-compose restart notes-app 3. Resynchroniser Google Calendar depuis l'interface web
This commit is contained in:
3 files changed
+118
-17
No files matched your search
+8
-1
@@ -33,9 +33,16 @@ types.setTypeParser(1184, function(stringValue) {
|
||||
return result;
|
||||
});
|
||||
|
||||
// Parser pour TIMESTAMP WITHOUT TIME ZONE (1114) - au cas où
|
||||
// Parser pour TIMESTAMP WITHOUT TIME ZONE (1114)
|
||||
// IMPORTANT: Les valeurs TIMESTAMP sont stockées en heure locale (Europe/Paris)
|
||||
// mais PostgreSQL les retourne sans fuseau horaire.
|
||||
// Exemple: Google envoie "2025-11-17T10:20:00+01:00" → PG stocke "2025-11-17 10:20:00"
|
||||
// On doit interpréter cette heure comme UTC (car PG a converti lors de l'insertion)
|
||||
types.setTypeParser(1114, function(stringValue) {
|
||||
if (!stringValue) return null;
|
||||
|
||||
// PostgreSQL retourne "YYYY-MM-DD HH:MM:SS" sans fuseau horaire
|
||||
// Cette valeur doit être traitée comme UTC car PostgreSQL stocke en UTC en interne
|
||||
const isoString = stringValue.replace(' ', 'T') + 'Z';
|
||||
const result = new Date(isoString).toISOString();
|
||||
timezoneLogger.log('PARSER', `[1114 TIMESTAMP] Input: "${stringValue}" → Output: "${result}"`);
|
||||
|
||||
Reference in new issue
Block a user