Feat: Ajout du système de purge automatique de la base de données

Implémente un système complet de purge automatique pour maintenir
la base de données propre et performante.

Fonctionnalités ajoutées :
- Migration pour ajouter les champs de tracking (archived_at, completed_at)
- Triggers PostgreSQL pour mise à jour automatique des dates
- Script de purge manuel avec mode simulation (dry-run)
- Scheduler automatique configurable (défaut: 24h)
- Routes API admin pour contrôle et monitoring
- Documentation complète

Éléments purgés :
- Flux RSS désactivés (tous)
- Tâches complétées > 3 mois (configurable)
- Notes archivées > 6 mois (configurable)
- Rendez-vous passés > 6 mois (configurable)

Scripts npm ajoutés :
- npm run db:migrate - Exécuter la migration
- npm run db:cleanup - Purge manuelle
- npm run db:cleanup:dry-run - Simulation de purge

Routes API ajoutées :
- POST /api/admin/cleanup - Déclencher la purge
- GET /api/admin/cleanup/preview - Prévisualiser la purge
- GET /api/admin/cleanup/status - Statut du scheduler
- GET /api/admin/stats - Statistiques DB

Configuration via variables d'environnement :
- CLEANUP_ENABLED (défaut: true)
- CLEANUP_INTERVAL_HOURS (défaut: 24)
- CLEANUP_COMPLETED_TASKS_DAYS (défaut: 90)
- CLEANUP_ARCHIVED_NOTES_DAYS (défaut: 180)
- CLEANUP_PAST_EVENTS_DAYS (défaut: 180)
This commit is contained in:
Claude committed 2025-11-19 06:49:27 +00:00
1 parent 0359ebe22a
commit 86e825b9d1
8 files changed
+1532 -2

No files matched your search

+6
View File
@@ -94,6 +94,7 @@ app.use('/api/rss', require('./routes/rss.routes'));
app.use('/api/calendar', require('./routes/calendar.routes'));
app.use('/api/openrouter', require('./routes/openrouter.routes'));
app.use('/api/timezone-logs', require('./routes/timezone-logs.routes'));
app.use('/api/admin', require('./routes/admin.routes'));
// Route de recherche
app.get('/api/search', require('./routes/notes.routes').searchNotes);
@@ -138,6 +139,11 @@ async function startServer() {
rssScheduler.startScheduler();
logger.info('✓ Scheduler RSS démarré');
// Démarrer le scheduler de purge automatique
const cleanupScheduler = require('./services/cleanup-scheduler');
cleanupScheduler.startScheduler();
logger.info('✓ Scheduler de purge automatique démarré');
// Démarrer le serveur
app.listen(PORT, '0.0.0.0', () => {
logger.info('═════════════════════════════════════════════');