Complete French→English translation across all frontend pages and backend
services — every label, button, header, empty state, toast, and nav item
is now in English. Build verified clean (tsc + vite). No i18n library
added; direct string replacement throughout.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- portfolio_risk.py: add _infer_asset_class() with ticker→asset_class map
covering energy/metals/agri/indices/forex/rates futures, ETFs, forex pairs,
exchange prefixes (NSE:). Fallback applied when JOIN finds no match (orphaned
pattern_id after re-seed). Fixes "unknown 100%" shown in screenshot.
- RiskDashboard.tsx: add Portefeuille Réel / Simulé toggle at top.
New SimRiskPanel component with KPI row + concentration bars + conflict cards
+ AI recommendations — all visible inline in Risk Dashboard.
Red badge on Simulé tab when danger alerts exist.
- JournalDeBord.tsx: remove standalone Risque Sim. tab (moved to Risk Dashboard).
Replace with a red banner in summary cards when conflicts are detected,
pointing user to Risk Dashboard → Simulé.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>