ROOT CAUSE: During phases 1-5, subtask support was added which requires
parent_id and level columns in note_todos and global_todos tables.
However, the auto-migrate script did not include this migration,
causing 500 errors when the API tried to SELECT these non-existent columns.
Changes:
- scripts/auto-migrate.js: Added Migration 4 to create parent_id and
level columns if they don't exist
- config/database.js: Updated CREATE TABLE statements to include
parent_id and level columns in the initial schema
This fixes the 500 error on GET /api/notes that occurred because the
code was trying to SELECT columns that didn't exist in production.
The migration will run automatically on next Docker startup and add
the missing columns without data loss.
Fixes: "je n ai plus aucune note qui s affichent" - notes not displaying
Implémente un système de migrations automatiques qui s'exécute à chaque
démarrage de l'application Docker/Node.
Problème résolu :
- Les utilisateurs n'ont plus besoin d'exécuter manuellement les migrations
- Les nouveaux champs SQL sont ajoutés automatiquement
- Évite les erreurs "column does not exist"
- Garantit la cohérence entre le code et le schéma DB
Fonctionnement :
1. Au démarrage : initDatabase() → autoMigrate() → startSchedulers()
2. autoMigrate() vérifie chaque colonne via information_schema
3. Si la colonne n'existe pas, elle est ajoutée automatiquement
4. Les triggers et index sont également créés/mis à jour
Migrations incluses :
- Migration 1 : Champs de tracking (archived_at, completed_at)
* notes.archived_at
* global_todos.completed_at
* note_todos.completed_at + created_at
* Triggers automatiques
- Migration 2 : Champ priority pour tâches
* global_todos.priority
* note_todos.priority
* Index de performance
Caractéristiques :
- ✅ Idempotent : Peut s'exécuter plusieurs fois sans problème
- ✅ Transactionnel : Utilise BEGIN/COMMIT/ROLLBACK
- ✅ Non-bloquant : L'application démarre même en cas d'erreur
- ✅ Intelligent : Vérifie avant de créer
- ✅ Sécurisé : Double protection avec rétrocompatibilité API
- ✅ Documenté : Guide complet dans docs/MIGRATIONS.md
Fichiers créés :
- scripts/auto-migrate.js - Script de migrations automatiques
- docs/MIGRATIONS.md - Documentation complète
Fichiers modifiés :
- server.js - Appel de autoMigrate() au démarrage
Logs au démarrage :
✓ Base de données initialisée avec succès
🔄 Vérification des migrations...
→ Ajout du champ priority à global_todos (si nécessaire)
✅ Migrations automatiques terminées avec succès
✓ Migrations automatiques appliquées
Impact :
Les utilisateurs peuvent maintenant simplement démarrer l'application avec
docker-compose up et tous les champs SQL seront automatiquement créés.
Plus besoin de lancer des scripts de migration manuellement !