mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
Correction du décalage de timezone de 1h dans Google Calendar PROBLÈME: - Les événements s'affichaient avec 1h de décalage - Événement à 10h → affiché à 11h (ou 09h selon cas) CAUSE: - TIMESTAMP (sans timezone) dans PostgreSQL - Google envoie dates avec timezone info - PostgreSQL stockait sans timezone - JavaScript réinterprétait avec timezone local - = Double application du décalage SOLUTION: 1. calendar_events: TIMESTAMP → TIMESTAMPTZ - start_time: TIMESTAMPTZ (conserve timezone) - end_time: TIMESTAMPTZ (conserve timezone) 2. Migration automatique: - scripts/migrate-calendar-timezone.js - Exécuté automatiquement au démarrage Docker - Convertit les données existantes - USING start_time AT TIME ZONE 'UTC' 3. Correction booléens all_day: - Ligne 433: isAllDay ? 1 : 0 → isAllDay - Ligne 451: isAllDay ? 1 : 0 → isAllDay FICHIERS MODIFIÉS: - config/database.js: TIMESTAMPTZ pour calendar_events - routes/calendar.routes.js: Booléens corrigés - docker-entrypoint.sh: Migration auto timezone - migrations/002_calendar_timestamptz.sql: SQL manuel - scripts/migrate-calendar-timezone.js: Script migration DÉPLOIEMENT: Au prochain rebuild Docker: 1. La table sera recréée avec TIMESTAMPTZ 2. Les événements existants seront migrés 3. Les nouvelles synchros utiliseront le bon format 4. Plus de décalage horaire! Resynchronisez Google Calendar après déploiement pour appliquer le nouveau format.
25 lines
658 B
PL/PgSQL
25 lines
658 B
PL/PgSQL
-- Migration: Convertir calendar_events TIMESTAMP → TIMESTAMPTZ
|
|
-- Pour corriger le décalage horaire de 1h dans l'affichage
|
|
|
|
BEGIN;
|
|
|
|
-- Convertir start_time de TIMESTAMP à TIMESTAMPTZ
|
|
ALTER TABLE calendar_events
|
|
ALTER COLUMN start_time TYPE TIMESTAMPTZ
|
|
USING start_time AT TIME ZONE 'UTC';
|
|
|
|
-- Convertir end_time de TIMESTAMP à TIMESTAMPTZ
|
|
ALTER TABLE calendar_events
|
|
ALTER COLUMN end_time TYPE TIMESTAMPTZ
|
|
USING end_time AT TIME ZONE 'UTC';
|
|
|
|
COMMIT;
|
|
|
|
-- Vérification
|
|
SELECT
|
|
column_name,
|
|
data_type
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'calendar_events'
|
|
AND column_name IN ('start_time', 'end_time');
|