mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
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
This commit is contained in:
8 files changed
+1562
-278
No files matched your search
@@ -0,0 +1,62 @@
|
||||
// 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);
|
||||
@@ -0,0 +1,42 @@
|
||||
// Script pour réinitialiser complètement le système RSS
|
||||
const { runQuery, initDatabase } = require('../config/database');
|
||||
|
||||
async function resetRSS() {
|
||||
console.log('\n==================== RESET SYSTÈME RSS ====================\n');
|
||||
|
||||
try {
|
||||
await initDatabase();
|
||||
|
||||
// Supprimer tous les articles
|
||||
console.log('🗑️ Suppression de tous les articles RSS...');
|
||||
await runQuery('DELETE FROM rss_articles');
|
||||
console.log('✓ Articles supprimés\n');
|
||||
|
||||
// Supprimer tous les flux
|
||||
console.log('🗑️ Suppression de tous les flux RSS...');
|
||||
await runQuery('DELETE FROM rss_feeds');
|
||||
console.log('✓ Flux supprimés\n');
|
||||
|
||||
// Supprimer tous les résumés
|
||||
console.log('🗑️ Suppression de tous les résumés...');
|
||||
await runQuery('DELETE FROM rss_summaries');
|
||||
console.log('✓ Résumés supprimés\n');
|
||||
|
||||
// Réinitialiser les séquences
|
||||
console.log('🔄 Réinitialisation des compteurs...');
|
||||
await runQuery('DELETE FROM sqlite_sequence WHERE name IN ("rss_articles", "rss_feeds", "rss_summaries")');
|
||||
console.log('✓ Compteurs réinitialisés\n');
|
||||
|
||||
console.log('========================================================');
|
||||
console.log('✅ Système RSS complètement réinitialisé!');
|
||||
console.log('Vous pouvez maintenant ajouter de nouveaux flux.');
|
||||
console.log('========================================================\n');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Erreur:', error);
|
||||
}
|
||||
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
resetRSS();
|
||||
Reference in new issue
Block a user