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.
89 lines
2.4 KiB
Bash
Executable File
89 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
||
set -e
|
||
|
||
echo "🚀 Démarrage de NoteFlow avec PostgreSQL"
|
||
echo "========================================"
|
||
|
||
# Créer les dossiers nécessaires
|
||
mkdir -p /app/data
|
||
mkdir -p /app/public/uploads
|
||
chmod -R 777 /app/data
|
||
chmod -R 777 /app/public/uploads
|
||
|
||
# Attendre que PostgreSQL soit prêt
|
||
echo ""
|
||
echo "⏳ Attente de PostgreSQL..."
|
||
until node -e "
|
||
const { Pool } = require('pg');
|
||
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
||
pool.connect()
|
||
.then(client => { client.release(); pool.end(); process.exit(0); })
|
||
.catch(() => process.exit(1));
|
||
" 2>/dev/null; do
|
||
echo " PostgreSQL n'est pas encore prêt, nouvelle tentative dans 2s..."
|
||
sleep 2
|
||
done
|
||
|
||
echo "✅ PostgreSQL est prêt"
|
||
echo ""
|
||
|
||
# Vérifier si la migration est nécessaire
|
||
echo "🔍 Vérification des données..."
|
||
|
||
# Vérifier si PostgreSQL contient des données
|
||
HAS_DATA=$(node -e "
|
||
const { Pool } = require('pg');
|
||
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
||
pool.query('SELECT COUNT(*) as count FROM users')
|
||
.then(result => {
|
||
pool.end();
|
||
console.log(result.rows[0].count);
|
||
process.exit(0);
|
||
})
|
||
.catch(() => {
|
||
pool.end();
|
||
console.log('0');
|
||
process.exit(0);
|
||
});
|
||
" 2>/dev/null)
|
||
|
||
if [ "$HAS_DATA" = "0" ]; then
|
||
echo "⚠️ PostgreSQL est vide"
|
||
|
||
# Vérifier si SQLite existe
|
||
if [ -f "/app/data-sqlite/notes.db" ]; then
|
||
echo ""
|
||
echo "📦 Base SQLite détectée: /app/data-sqlite/notes.db"
|
||
echo "🔄 Lancement de la migration automatique..."
|
||
echo ""
|
||
|
||
SQLITE_PATH=/app/data-sqlite/notes.db node scripts/migrate-sqlite-to-postgres.js
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo ""
|
||
echo "✅ Migration réussie!"
|
||
else
|
||
echo ""
|
||
echo "❌ Erreur lors de la migration"
|
||
echo "⚠️ L'application démarrera avec une base vide"
|
||
fi
|
||
else
|
||
echo "ℹ️ Aucune base SQLite à migrer"
|
||
echo "📝 Première installation - une base vide sera créée"
|
||
fi
|
||
else
|
||
echo "✅ PostgreSQL contient déjà des données ($HAS_DATA utilisateurs)"
|
||
fi
|
||
|
||
echo ""
|
||
echo "🔄 Migration des timezones du calendrier..."
|
||
node scripts/migrate-calendar-timezone.js 2>/dev/null || echo " ℹ️ Migration timezone déjà effectuée ou non nécessaire"
|
||
|
||
echo ""
|
||
echo "========================================"
|
||
echo "🚀 Démarrage du serveur NoteFlow..."
|
||
echo ""
|
||
|
||
# Démarrer le serveur Node.js
|
||
exec node server.js
|