Files
noteflow/scripts/migrate-to-rss-v2.js
T
Claude 95e263dd3f REFONTE: Système RSS V2 - Réécriture complète
Problèmes résolus:
- Articles non mis à jour (toujours 12 nov au lieu de 14 nov)
- Détection de doublons défaillante
- Cache trop agressif bloquant les nouveaux articles
- Logique complexe et difficile à déboguer

Architecture V2 (simple et robuste):

**services/rss-scheduler-v2.js**
- Détection doublons SIMPLE: uniquement par lien
- Pas de double vérification titre+date (trop complexe)
- Nettoyage automatique (garde les 100 derniers)
- Logs clairs pour chaque étape
- Fetch séquentiel pour éviter les races
- Timeout robuste (15s par flux)

**routes/rss.routes-v2.js**
- Suppression du cache de 30s
- Requêtes SQL directes simples
- Pas de logique de filtre temporel compliquée
- Endpoint /refresh déclenche un fetch immédiat
- Logs cohérents

**Scripts utilitaires**
- reset-rss.js: Nettoie complètement la DB RSS
- migrate-to-rss-v2.js: Migre de V1 à V2
- Plus tous les scripts de debug existants

Backups:
- rss-scheduler.js.backup (ancien système)
- rss.routes.js.backup (ancien système)

Migration:
1. node scripts/reset-rss.js (optionnel, nettoie la DB)
2. Redémarrer le serveur
3. Ajouter les flux RSS via l'interface
4. Les articles seront récupérés toutes les 2 minutes

Résultat attendu:
- Les nouveaux articles apparaissent dans les 2 minutes
- Pas de doublons même avec liens changeants
- Affichage du plus récent au plus ancien
- Système simple, maintenable et debuggable
2025-11-14 07:08:13 +00:00

63 lines
2.0 KiB
JavaScript

// Script de migration vers le nouveau système RSS V2
const fs = require('fs');
const path = require('path');
console.log('\n==================== MIGRATION RSS V2 ====================\n');
try {
// 1. Backup de l'ancien système
console.log('Backup de l\'ancien systeme...');
const oldScheduler = path.join(__dirname, '../services/rss-scheduler.js');
const oldRoutes = path.join(__dirname, '../routes/rss.routes.js');
if (fs.existsSync(oldScheduler)) {
fs.copyFileSync(oldScheduler, oldScheduler + '.backup');
console.log(' OK rss-scheduler.js -> rss-scheduler.js.backup');
}
if (fs.existsSync(oldRoutes)) {
fs.copyFileSync(oldRoutes, oldRoutes + '.backup');
console.log(' OK rss.routes.js -> rss.routes.js.backup');
}
console.log('');
// 2. Remplacer par les nouvelles versions
console.log('Installation du nouveau systeme...');
const newScheduler = path.join(__dirname, '../services/rss-scheduler-v2.js');
const newRoutes = path.join(__dirname, '../routes/rss.routes-v2.js');
if (fs.existsSync(newScheduler)) {
fs.copyFileSync(newScheduler, oldScheduler);
console.log(' OK rss-scheduler-v2.js -> rss-scheduler.js');
}
if (fs.existsSync(newRoutes)) {
fs.copyFileSync(newRoutes, oldRoutes);
console.log(' OK rss.routes-v2.js -> rss.routes.js');
}
console.log('');
console.log('Pour nettoyer la base de donnees RSS:');
console.log(' node scripts/reset-rss.js');
console.log('');
console.log('========================================================');
console.log('Migration terminee!');
console.log('');
console.log('Prochaines etapes:');
console.log('1. Redemarrez le serveur');
console.log('2. (Optionnel) Nettoyez la DB: node scripts/reset-rss.js');
console.log('3. Ajoutez vos flux RSS via l\'interface');
console.log('========================================================\n');
} catch (error) {
console.error('Erreur migration:', error);
process.exit(1);
}
process.exit(0);