Commit Graph

56 Commits

Author SHA1 Message Date
Capucine Gest 52d531182d auto: sync 2026-06-02 00:03 2026-06-02 00:03:37 +02:00
Capucine Gest c1b3e54c28 auto: sync 2026-06-01 23:24 2026-06-01 23:24:32 +02:00
Capucine Gest 3a39904ce5 fix: CPI/taux/expectations — corrections sources données mai 2026
Indicateurs :
- JPY CPI : null → IMF/IFS DBnomics MoM% (override 0.1% mai 2026)
- AUD CPI : mauvais ID FRED (AUSCPIALLMINMEI→AUSCPIALLQINMEI) + override 1.4% T1 2026
- NZD CPI : mauvais ID FRED (NZLCPIALLMINMEI→NZLCPIALLQINMEI) + override 0.9% T1 2026
- Nouveau data/cpi_overrides.json — surcharge manuelle quand FRED/DBnomics en retard
- Override date-comparé : source auto reprend quand elle dépasse l'override

Taux directeurs :
- GBP : BoE API IUDBEDR primary + IR3TIB01GBM156N fallback FRED (IRSTCB01 inexistant)
- USD/EUR/CAD/NZD : sources déduplicées (DFEDTARU, ECBDFR, BoC Valet, IRSTCB01)

Zone Euro :
- EUR CPI fallback : prc_hicp_mmr (404) → prc_hicp_midx + toIndicatorPct
- EUR chômage : geo=EA21 (2026) + fallback EA20

Expectations :
- data/rate_expectations.json : données correctes 29/05/2026
  (Fed 68bps, ECB 49bps, BoE 53bps, BoJ +32bps, etc.)

UI :
- Tooltip bps : explication "1 bp = 0,01% de taux"
- NarrativeButton : affiche le vrai message d'erreur (était "Erreur Bytez")
- Groq API key manquante : message descriptif avec chemin Vercel

Types :
- IndicatorResult type explicite → corrige erreurs tsc pre-existantes (prev/lastUpdated)
- toPmiIndicator retourne IndicatorResult

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 12:13:05 +02:00
Capucine Gest b833baf495 fix: EUR/GBP data, PMI ForexFactory + TE, localStorage PMI persistence
macro/route.ts :
  - Eurostat EUR CPI : ajout unit=RCH_MOM, freq=M pour que chaque dimension
    ait une seule valeur → position value[]=timeIndex correcte (bug de mapping
    multi-dimensionnel corrigé)
  - Eurostat EUR GDP : passage de CLV10_MEUR (niveaux) à CLV_PCH_PRE (QoQ%
    directement) + toIndicator au lieu de toIndicatorPct
  - Eurostat EUR chômage : ajout freq=M pour unicité de dimension
  - eurostatSorted : fallback automatique EA20 → EA19 si données vides
  - BoE (GBP taux) : ajout User-Agent + Accept → évite la redirection HTML
  - PMI : ForexFactory JSON (semaine courante, données structurées) en source
    primaire + TE scraping enrichi (Accept, Sec-Fetch-*, Pragma) en fallback
  - toPmiIndicator : extrait en fonction globale réutilisable

CurrencyCard.tsx :
  - Préservation des valeurs PMI précédentes du cache localStorage si le
    serveur renvoie null (PMI publié le mois dernier, pas cette semaine)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 23:13:40 +02:00
Capucine Gest 3c6e3bb52a feat: persistance localStorage + stale-if-error serveur
Client — lib/localCache.ts (nouveau) :
  - saveCache / loadCache : wrapper localStorage préfixé "forex_v1_"
  - formatCacheDate : affiche l'âge du cache (< 1h, 2h, 3j…)

Client — CurrencyCard.tsx :
  - Sauvegarde chaque réponse macro réussie dans localStorage (clé macro_{currency})
  - Si l'API échoue → charge la dernière valeur connue depuis localStorage
  - Badge 🗄 "cache Xh" visible dans le header de la carte quand données stale

Client — page.tsx :
  - Même logique pour drivers, expectations, yields
  - Badge cache affiché dans le header à côté de l'heure
  - Footer : Bytez → Groq

Serveur — macro/route.ts :
  - stale-if-error : si tous les indicateurs reviennent null (panne API)
    et qu'un cache serveur précédent existe → le renvoie avec stale:true

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 22:58:27 +02:00
Capucine Gest 236afa3087 Forex Dashboard v8.0 2026-05-27 13:18:45 +02:00