Commit Graph

61 Commits

Author SHA1 Message Date
caty21 cc1c4caf5e fix: move timestamp + Analyse button inline with article title 2026-06-27 22:46:48 +02:00
caty21 1e1b95fdc0 fix: TvMiniChart utilise embed-widget-mini-symbol-overview.js (pas tv.js)
MiniSymbolOverview n'existe pas dans tv.js → try/catch avalait l'erreur silencieusement
→ graphiques vides. Correction : embed script dédié avec config inline (script.text).
Structure DOM correcte : .tradingview-widget-container__widget + script sibling.
TvAdvancedChart (tv.js + TradingView.widget) inchangé.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 22:36:27 +02:00
caty21 c82dbb397b fix: OIS toujours visible + Résumé IA blanc + news séparées
- CurrencyCard: OIS toujours dans sigTabs (plus conditionnel à ratePath)
  → affiche état 'indisponible' quand données absentes, au lieu de disparaître
- NarrativeButton: couleur 'Résumé IA' blanc (#ffffff) au lieu d'amber
- NewsTab: Inflation/Géopolitique/Emploi/Énergie toujours visibles comme filtres
  → séparation TOP NEWS (articles avec étiquette macro) vs 'Autres actualités'
     (articles boursiers sans tag FX) dans section repliable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 22:28:39 +02:00
caty21 5b313a7e3e feat: news filters multi-select + sort by recency→priority→category
- filterCat (single) → selectedCats: Set<string> (multi-select OR logic)
- toggleCat() bascule une catégorie sans désélectionner les autres
- Tri client : score = timestamp + boost haute-priorité (+3h) + boost catégorisé (+1h)
  → les news macro/forex remontent naturellement, le bruit boursier Yahoo descend
- Filtre actif : seuls les articles matchant ≥1 cat sélectionnée sont affichés
- "Toutes" remet la sélection à zéro (Set vide)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 22:22:14 +02:00
caty21 cf70e30db6 feat: onglet Marchés + TvMiniChart sans popup + cache RP 48h + OIS default
- page.tsx: onglet '🌍 Marchés' — S&P 500, VIX, DXY, Or (TvMiniChart 2x2)
- TvChart: prop dateRange configurable sur TvMiniChart (défaut 1M)
- ReportTab: TvAdvancedChart → TvMiniChart (plus de popup TV), Or remplace US10Y
  S&P 500/VIX dateRange=12M (daily), DXY/Or dateRange=60M (weekly)
- rateprobability: cache TTL 4h → 48h (OIS revient même sans GitHub Actions hourly)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 22:02:53 +02:00
caty21 dc801638d8 fix: tooltips OIS blanc (#ffffff) — Rate Curve + Implied Pts 2026-06-27 20:29:08 +02:00
caty21 df731732c5 fix: convergence bloc neutre visible — bg-slate-700/40 border-slate-500/50 text-slate-300 2026-06-27 20:22:40 +02:00
caty21 25a802e6eb fix: Résumé IA → amber #f59e0b (diagnostic cache navigateur) 2026-06-27 20:16:22 +02:00
caty21 ec248744b1 fix: Résumé IA inline color, tooltip Implied Pts custom renderer, tryUrl cancel
- NarrativeButton: style inline pour forcer #94a3b8 (imbattable vs bundle CDN caché)
- CurrencyCard: Tooltip Implied Pts remplacé par custom content renderer (text visible)
- investinglive.ts: res.body.cancel() en fire-and-forget (ne masque plus le succès)
  + console.log article courant/précédent pour diagnostic dans logs Vercel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 20:12:21 +02:00
caty21 a978f19088 fix: Sem. préc. HEAD→GET, prevMeetings cache, remove footer
- investinglive: tryUrl HEAD→GET + res.body?.cancel() (WordPress bloque HEAD)
  fenêtre recherche article préc. élargie 21→28 jours
- rateprobability: CBRatePath + prevMeetings/prevWeekDate, loadPrevWeekCachedBody()
  fetchAllCBPaths enrichit prevMeetings depuis snapshot GitHub Actions
- fetch-rate-data.mjs: rotation current→previousWeek (5–9 jours) pour Rate Curve
- CurrencyCard: rateCurveData préfère prevMeetings (exact/meeting) > ilDelta (approx)
  légende hasPrevCurve pilote affichage ligne bleue et label date
- page.tsx: suppression footer Sources/LLM, remplacement par pb-12

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 19:40:48 +02:00
caty21 1a7468d718 fix: bloc convergence toujours visible pour EUR/AUD (état Neutre)
État neutre (dir=neutral ET mispricDir=neutral) : fond bg-slate-800/40
border-slate-700/30 était quasi-invisible sur bg-slate-900.
Fix : fond bg-slate-800/60 border-slate-600/40 + labels Fond./Marché
en text-slate-400 (au lieu de 500) + flèches "—" en text-slate-500.
Refacto en IIFE pour clarifier la logique de couleur.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 19:27:19 +02:00
caty21 52b0167d28 fix: tooltip OIS charts — labelStyle + itemStyle pour texte lisible
contentStyle.color n'affecte pas les textes internes de Recharts.
Ajout de labelStyle (date, gris) et itemStyle (valeur, blanc) sur les
deux Tooltip (Rate Curve + Implied Pts).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 19:11:51 +02:00
caty21 a5870901d0 fix: convergence bloc toujours visible, ESI pill, suppression spread bps
- Bloc convergence : toujours affiché (plus conditionnel à "non-neutre")
- Suppression du score numérique +8/-7 (non-objectif)
- Texte "Neutre" quand les deux côtés sont neutres
- Réorganisation : Fond. ↑ [verdict centré] ↑ Marché (labels à l'extérieur)
- ESI : barre → pill colorée compacte (vert/rouge/gris + valeur signée)
- 10Y Yield : suppression de l'affichage (-177bps) spread vs USD

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 19:09:50 +02:00
caty21 623b1fa2a0 fix: compact convergence block, cache icon tooltip, Résumé IA dark theme
- Bloc FOND./MARCHÉ/Signaux seuls : 3 colonnes larges → 1 ligne compacte
- cache 2h : retiré de l'affichage inline → icône Database tooltip (hover)
- Résumé IA : text-indigo-600 → text-slate-400/hover:slate-200 (harmonisé)
- Modal Résumé IA : bg-white → dark (bg-slate-900, textes slate-200/300)
- Dot "Réel" → abbr "Tx.R" + tooltip explicatif (Taux Réel = CT − CPI YoY)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 19:05:23 +02:00
caty21 c7ec82d82a fix: sync — goToSignauxSlide force mispricing tab, goToMacroSlide force overview tab
Quand sync est actif, cliquer un slide Signaux (OIS/COT/Sent) switchait le slide
en interne sur les autres cartes mais ces cartes restaient sur l'onglet Aperçu —
la synchro était invisible. Fix : propager aussi onCardTabChange("mispricing")
depuis goToSignauxSlide et onCardTabChange("overview") depuis goToMacroSlide.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 18:58:40 +02:00
caty21 6ad3e440d9 fix: visibilité textes — labels indicatifs text-slate-300, tabs text-slate-400, rename Sentiment
- MacroBlock titles (Politique Monétaire, Inflation...) : slate-500 → slate-300
- COT CFTC header + "vs date" : slate-600 → slate-300 / slate-400
- Mouvement HF · semaine, Δ Longs/Shorts, xxx acc. : slate-600 → slate-300/400
- Δ AM/HF deltas : slate-600 → slate-400
- Sentiment Long/Short labels, Long/Short barre : slate-600 → slate-400
- Sentiment titre : slate-600 → slate-300, rename → "Sentiment Retail (DXM)"
- Tous les boutons tabs non-sélectionnés : slate-500 → slate-400 (hover → white)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 18:55:16 +02:00
caty21 82d7775e60 fix: OIS charts — tooltip lisible, légende visuelle, détection article précédent
- Tooltip: ajout color:#e2e8f0 sur les deux charts (texte invisible sur fond sombre)
- Rate Curve: légende visuelle inline (Actuel blanc / Sem. préc. bleu pointillé)
- Implied Pts: légende couleurs barres (vert Hausse / rose Baisse)
- investinglive.ts tryUrl: cache no-store au lieu de revalidate:21600
  (les 404 cachées empêchaient de trouver l'article de la semaine précédente)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 18:47:01 +02:00
caty21 7e97a079fc feat: news — compact filters bar, remove currency bias cards, live 1min
- Supprime le bloc "BIAIS ACTUALITÉS PAR DEVISE" (cartes devise)
- Supprime le bouton Prioritaires standalone
- Intègre Live/Actualiser dans la barre de filtres
- Live passe à 1min (au lieu de 5min)
- Labels Direction/Catégorie en amber/or
- Filtre Prioritaire intégré dans la ligne direction
- Filtres sur 2 lignes compactes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 17:17:44 +02:00
caty21 bcc30ed5ba feat: sync button now syncs all tabs — macro slide, main tab, signaux slide
When sync is active, clicking any tab/indicator on any card propagates
to all other cards (overview/mispricing/focus + ois/cot/sent + mon/infl/cro/empl).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 16:40:35 +02:00
caty21 aa3f20ee8f fix: time + Analyse button inline with impact badges in NewsCard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 16:14:38 +02:00
caty21 9da463a424 feat: OISEnhancedBlock — rate curve, implied pts, scénarios charts per CB
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 14:12:05 +02:00
Capucine Gest a3d847ce59 feat: calendar prev week, fullscreen mode, AI weekly highlights
Calendar — "Semaine dernière" tab:
- API now fetches from last Monday (instead of today) and tags events as "prev"
- New tab in CalendarTab with last week's published events (actual values visible)
- fromDate filter bypassed for prev tab; week banner styled in slate

Dashboard — fullscreen:
- Maximize2/Minimize2 button in header using Fullscreen API
- Listens to fullscreenchange to sync icon state

Report — AI "Faits marquants":
- New report_highlights mode in /api/narrative: reads published events from
  prev+current week + drivers, generates 3 structured highlights via Groq
- AiHighlightsButton next to "Faits marquants de la semaine" label
- Parses AI response (-- delimited) into title+body Theme objects

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 20:39:52 +02:00
Capucine Gest ce53f97b5b feat: redesign OIS block — SOFR live data primary, analyst (IL) secondary
Section 1 (SOFR/OIS live, prominent):
- Large current rate → year-end implied + Δbps in bold colored type
- Probability chart across all meetings
- Per-meeting table: date, HOLD/HIKE?/HIKE, prob%, implied rate
- Peak meeting highlighted in amber

Section 2 (G. Dellamotta / InvestingLive, below):
- Analyst year-end bps + next-meeting direction (from IL article)
- Article date shown
- Weekly delta arrows (vs previous article) — lowered bps threshold to 5bps

Add ILCurrent type to CBRatePath to carry analyst absolute values server-side.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 20:12:18 +02:00
Capucine Gest f82afe9d5b feat: retail sales MoM (TE scraping), smart cache, IL weekly delta arrows, OIS phase labels
- Retail Sales: switch from FRED OECD series (4-6w lag) to Trading Economics real-time scraping
  for all 8 currencies; label changed to "Retail Sales MoM"
- Cache TTL: 24h → 1h base + 15min hot when ForexFactory detects recent high-impact event
- Rate probability trend arrows: server-side IL weekly delta (current vs previous Dellamotta article)
  with per-metric thresholds (prob ≥3%/10%, bps ≥10/25) and colour coding (sky=dovish, amber=hawkish)
- Cycle phase: replaced FRED trend heuristic with OIS-based logic using peakMeeting.probMovePct,
  probIsCut, and yearEndBps; dynamic descriptions include real market numbers
- investinglive.ts: find both current + previous article to compute week-over-week delta server-side

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 19:41:50 +02:00
Capucine Gest 1a2ea02b22 feat: dashboard v8 — COT, FX Weekly, Report, TvChart, Sentiment, News
Ajout des onglets COT, Weekly Report, TvChart. Refonte Sentiment, News,
Calendar, Drivers. Nouvelles API cot-history et fx-weekly. Intégration FinancialJuice.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:33:23 +02:00
Capucine Gest e11d61eb4d auto: sync 2026-06-03 01:04 2026-06-03 01:04:07 +02:00
Capucine Gest 34cd885497 auto: sync 2026-06-03 00:59 2026-06-03 00:59:04 +02:00
Capucine Gest d075ed484a auto: sync 2026-06-03 00:44 2026-06-03 00:44:00 +02:00
Capucine Gest 842198c64e auto: sync 2026-06-03 00:33 2026-06-03 00:33:58 +02:00
Capucine Gest cdb76871be auto: sync 2026-06-03 00:28 2026-06-03 00:28:56 +02:00
Capucine Gest fa7f24715c auto: sync 2026-06-03 00:02 2026-06-03 00:02:09 +02:00
Capucine Gest d665943bdb auto: sync 2026-06-02 23:47 2026-06-02 23:47:03 +02:00
Capucine Gest 415be8337e auto: sync 2026-06-02 23:42 2026-06-02 23:42:01 +02:00
Capucine Gest a157a94a23 auto: sync 2026-06-02 23:01 2026-06-02 23:01:51 +02:00
Capucine Gest 25e3774c3f auto: sync 2026-06-02 22:16 2026-06-02 22:16:41 +02:00
Capucine Gest 87970473c2 auto: sync 2026-06-02 22:11 2026-06-02 22:11:39 +02:00
Capucine Gest 2b5eda58c2 auto: sync 2026-06-02 20:51 2026-06-02 20:51:20 +02:00
Capucine Gest 4b2568a157 auto: sync 2026-06-02 19:38 2026-06-02 19:38:34 +02:00
Capucine Gest 05d99e895b auto: sync 2026-06-02 17:52 2026-06-02 17:52:36 +02:00
Capucine Gest e51f7630df auto: sync 2026-06-02 17:37 2026-06-02 17:37:34 +02:00
Capucine Gest 09f7d49052 auto: sync 2026-06-02 17:27 2026-06-02 17:27:32 +02:00
Capucine Gest 3365b0bfbe auto: sync 2026-06-02 17:07 2026-06-02 17:07:27 +02:00
Capucine Gest 866052f288 auto: sync 2026-06-02 17:02 2026-06-02 17:02:25 +02:00
Capucine Gest 22c44db2bf auto: sync 2026-06-02 16:57 2026-06-02 16:57:22 +02:00
Capucine Gest 6758e425d5 auto: sync 2026-06-02 16:51 2026-06-02 16:51:36 +02:00
Capucine Gest e80f5cb681 auto: sync 2026-06-02 16:41 2026-06-02 16:41:34 +02:00
Capucine Gest 1a334fd2c8 auto: sync 2026-06-02 16:21 2026-06-02 16:21:27 +02:00
Capucine Gest 28eaa699dc auto: sync 2026-06-02 15:35 2026-06-02 15:35:58 +02:00
Capucine Gest a8cf04e7b1 auto: sync 2026-06-02 15:25 2026-06-02 15:25:54 +02:00
Capucine Gest 720ea89c90 auto: sync 2026-06-02 15:20 2026-06-02 15:20:52 +02:00