From afd0026f255ea9f1de327d6f38e630dace7f9c93 Mon Sep 17 00:00:00 2001 From: caty21 Date: Sun, 28 Jun 2026 15:16:05 +0200 Subject: [PATCH] fix: Discours BC faux positif titre-only + bouton Analyse en fin de titre MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - newsfeed.ts: les catégories Discours BC / Chef d'État ne sont retenues que si le nom propre apparaît dans le TITRE de l'article (pas dans le body) → un article UK social avec 'Bailey' dans le body ne sera plus taggué BC - NewsTab: bouton Analyse déplacé après le titre de l'article (en fin de ligne) Layout final : [il y a Xh] [Source] [Catégorie] puis Titre... [▼ Analyse] Co-Authored-By: Claude Sonnet 4.6 --- components/NewsTab.tsx | 14 +++++++------- lib/newsfeed.ts | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/components/NewsTab.tsx b/components/NewsTab.tsx index 453ff7a..5ae2ac5 100644 --- a/components/NewsTab.tsx +++ b/components/NewsTab.tsx @@ -350,14 +350,8 @@ function NewsCard({ item, secondary = false }: { item: NewsItem; secondary?: boo )} - {/* Analyse + Titre */} + {/* Titre + Analyse (bouton en fin de ligne) */}
- {!secondary && ( - - )} @@ -365,6 +359,12 @@ function NewsCard({ item, secondary = false }: { item: NewsItem; secondary?: boo + {!secondary && ( + + )}
{item.summary && !secondary && ( diff --git a/lib/newsfeed.ts b/lib/newsfeed.ts index 6353f42..4e36e13 100644 --- a/lib/newsfeed.ts +++ b/lib/newsfeed.ts @@ -788,14 +788,17 @@ async function fetchZeroHedgeNews(): Promise { const summary = plainText.slice(0, 300); const analysisText = plainText.slice(0, 800); - // Pré-filtre macro : ZeroHedge couvre de nombreux sujets non-financiers. - // On exige qu'un mot-clé macro explicite soit présent AVANT d'appliquer les - // règles de noms de gouverneurs (évite "Bailey" dans un article social UK). - const MACRO_CONTEXT = /\b(rate|rates|dollar|euro|pound|yen|franc|currency|currencies|forex|fx\b|economy|economic|gdp|inflation|recession|central bank|fed\b|ecb\b|boe\b|boj\b|boc\b|rba\b|rbnz\b|snb\b|fomc|treasury|bond|yield|fiscal|monetary|tariff|trade war|deficit|debt|interest rate|rate cut|rate hike|basis point)\b/i; - if (!MACRO_CONTEXT.test(`${title} ${analysisText}`)) continue; - - // Filtre de pertinence forex : garder seulement si une règle matche - const { impacts, categories } = applyRules(`${title} ${analysisText}`); + // Filtre de pertinence forex : garder seulement si une règle matche. + // IMPORTANT : "Discours BC" et "Chef d'État" (déclenchées par des noms propres) + // ne sont valides que si le nom apparaît dans le TITRE — évite "Bailey" dans + // un article social UK dont le body parle aussi de la "pound" ou de l'"economy". + const bodyResult = applyRules(`${title} ${analysisText}`); + const titleResult = applyRules(title); + const PERSON_CATS = new Set(["Discours BC", "Chef d'État"]); + const categories = bodyResult.categories.filter( + c => !PERSON_CATS.has(c) || titleResult.categories.includes(c) + ); + const impacts = bodyResult.impacts; if (impacts.length === 0 && categories.length === 0) continue; const dateStr = dateM?.[1]?.trim() ?? "";