Commit Graph

72 Commits

Author SHA1 Message Date
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 b82c680f83 fix: GitHub Actions cache fallback + diagnostic logging for rate-probabilities
- data/rate-probabilities.json: initial seed (6 CBs fresh from rateprobability.com)
- lib/rateprobability.ts: fallback to cache file when live fetch fails (Vercel block)
  parseCBBody() reuses same parsing logic; cache valid 4h max
- .github/scripts/fetch-rate-data.mjs: fetch script (run manually or via Actions)
- HTTP status now logged for diagnostics

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 16:33:38 +02:00
caty21 67c1811c8f fix: rate-probabilities → European region + stronger browser headers
- preferredRegion: fra1/lhr1/cdg1 to bypass US cloud IP blocks on rateprobability.com
- Better sec-* headers to pass bot detection (same-origin cors mode)
- cache: no-store on fetch to avoid stale null caching
- Log CB count on each invocation for diagnostics

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 16:27:20 +02:00
caty21 5cf5d76601 fix: sort news by recency first, priority items get +3h boost (not fully separated)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 16:20:09 +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 886a5b426f fix: force-dynamic on all API routes + PWA manifest & service worker
- Add export const dynamic = "force-dynamic" to routes previously
  pre-rendered as static (rate-probabilities, news, fx, yields, calendar)
  → fixes empty data on Vercel where static pre-render got HTTP 403
- Add PWA: manifest.json, sw.js, icons, layout meta + apple-touch-icon

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 15:19:35 +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 764070a63a fix: yearEndImplied now uses last meeting of current year (not 380d window)
Two bugs fixed in fetchAllCBPaths / fetchCBPath:
- yearEndImplied was taking the last meeting within 380 days (~mid-2027) instead
  of the last meeting of the current calendar year (Dec 2026) — caused bps to be
  significantly overstated (e.g. USD showed +40 instead of +29.6)
- IL article bpsYearEnd was overriding rateprobability.com yearEndImplied for all
  currencies; now IL only overrides CHF (no RP coverage); other 7 CBs use live OIS

Dashboard yearEndBps now matches rateprobability.com raw API exactly for all CBs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 19:51:57 +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 7874ff16ff auto: sync 2026-06-02 23:52 2026-06-02 23:52:05 +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 f4f85c519f auto: sync 2026-06-02 23:16 2026-06-02 23:16:55 +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 57e38490b8 auto: sync 2026-06-02 20:46 2026-06-02 20:46:18 +02:00
Capucine Gest 1adb4b9c17 auto: sync 2026-06-02 20:41 2026-06-02 20:41:10 +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 8401b8f16d auto: sync 2026-06-02 17:12 2026-06-02 17:12:29 +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 db8e086294 auto: sync 2026-06-02 16:31 2026-06-02 16:31:31 +02:00
Capucine Gest 2c522e7bda auto: sync 2026-06-02 16:26 2026-06-02 16:26:29 +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 15fde8f783 auto: sync 2026-06-02 15:30 2026-06-02 15:30:56 +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
Capucine Gest 2347d02ae4 auto: sync 2026-06-02 13:46 2026-06-02 13:46:08 +02:00
Capucine Gest c4d8876dc6 auto: sync 2026-06-02 13:32 2026-06-02 13:32:52 +02:00
Capucine Gest 9f8defc487 auto: sync 2026-06-02 09:40 2026-06-02 09:40:10 +02:00
Capucine Gest 7db6ee531e auto: sync 2026-06-02 00:53 2026-06-02 00:53:39 +02:00