From 2bbb75766cf4d3cf9a1b3c79b193ad2d9b8c7747 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 12 Nov 2025 21:26:32 +0000 Subject: [PATCH] Feature: Flux RSS avec 14 articles et pagination MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections et améliorations du système RSS et de l'assistant IA: RSS: - Correction de la route backend /api/rss/articles pour respecter le paramètre limit - Changement de LIMIT 5 fixe à LIMIT ? avec paramètre dynamique - Support de 14 articles avec pagination de 7 par page - Amélioration du cache pour supporter différentes limites Assistant IA: - Suppression de la vérification settings.openrouter_api_key côté frontend - Les modèles se chargent maintenant automatiquement via le backend - Retrait de la section "Modèle IA" dans l'administration OpenRouter - Amélioration de la gestion des erreurs lors du chargement des modèles Les utilisateurs peuvent maintenant voir tous les modèles OpenRouter disponibles dans le sélecteur du chatbox, sans configuration manuelle dans l'admin. --- routes/rss.routes.js | 10 +++--- src/pages/Index.tsx | 83 +++++--------------------------------------- 2 files changed, 15 insertions(+), 78 deletions(-) diff --git a/routes/rss.routes.js b/routes/rss.routes.js index 92865f2..a953271 100644 --- a/routes/rss.routes.js +++ b/routes/rss.routes.js @@ -157,15 +157,17 @@ const ARTICLES_CACHE_DURATION = 30000; // 30 secondes /** * GET /api/rss/articles - * Récupérer les 5 derniers articles (avec cache) + * Récupérer les articles RSS (avec cache et paramètre limit) */ router.get('/articles', async (req, res) => { try { + const limit = parseInt(req.query.limit) || 5; + // Utiliser le cache si disponible et récent const now = Date.now(); if (articlesCache && (now - articlesCacheTime) < ARTICLES_CACHE_DURATION) { logger.debug('Articles RSS servis depuis le cache'); - return res.json(articlesCache); + return res.json(articlesCache.slice(0, limit)); } const articles = await getAll(` @@ -176,8 +178,8 @@ router.get('/articles', async (req, res) => { LEFT JOIN rss_feeds f ON a.feed_id = f.id WHERE a.pub_date IS NOT NULL ORDER BY a.pub_date DESC - LIMIT 5 - `); + LIMIT ? + `, [limit]); // Mettre en cache articlesCache = articles || []; diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 8980b93..47fd352 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -223,16 +223,15 @@ const Index = () => { }; const loadOpenRouterModels = async () => { - if (settings.openrouter_api_key) { - setLoadingModels(true); - try { - const models = await OpenRouterService.getModels(); - setOpenRouterModels(models); - } catch (error) { - console.error("Erreur lors du chargement des modèles:", error); - } finally { - setLoadingModels(false); - } + setLoadingModels(true); + try { + const models = await OpenRouterService.getModels(); + setOpenRouterModels(models); + } catch (error) { + console.error("Erreur lors du chargement des modèles:", error); + setOpenRouterModels([]); // Vider en cas d'erreur + } finally { + setLoadingModels(false); } }; @@ -1934,70 +1933,6 @@ const Index = () => {

-
-
- - {settings.openrouter_api_key && ( - - )} -
- {settings.openrouter_api_key && openRouterModels.length > 0 ? ( - - ) : ( - setSettings({ ...settings, ai_model: e.target.value })} - /> - )} -

- {settings.openrouter_api_key - ? `${openRouterModels.length} modèles disponibles. Cliquez sur "Actualiser" pour charger la liste.` - : "Ajoutez d'abord une clé API pour voir les modèles disponibles."} -

-
-