---
name: project_tableau_interets_plateforme
description: "Tableau mensuel intérêts par plateforme dans le Dashboard, synchronisé avec InteretsChartContext"
metadata: 
  node_type: memory
  type: project
  originSessionId: e5c19875-c3d7-42c1-ab67-bf3ba23dbda3
---

Composant `TableauInteretsPlateforme.jsx` ajouté dans le Dashboard, juste après les graphiques, à l'intérieur du `InteretsChartProvider`.

**Fichiers modifiés :**
- `frontend/src/components/TableauInteretsPlateforme.jsx` — composant créé
- `frontend/src/pages/Dashboard.jsx` — import + intégration
- `backend/src/routes/dashboard.js` — endpoint `GET /api/dashboard/interets-par-plateforme`
- `frontend/src/styles.css` — classes `tip-*`

**Endpoint backend :** `GET /api/dashboard/interets-par-plateforme?annee=&scope=all`
- Retourne : `{ plateformes: [{ id, nom, rembourses: { 'YYYY-MM': { interets_bruts, interets_nets, cashback, capital } }, projections: { 'YYYY-MM': { interets_prevus, capital_prevu } } }], capitalMensuel: [{ mois, capital }] }`
- Capital mensuel calculé via itération JS sur les investissements (date_souscription / date_cible / statut)

**Logique frontend :**
- Synchronisé avec `InteretsChartContext` : année, netMode, inclureInterets/Capital/Cashback, showActual/showProjected, modeGlobal
- `buildValue(plat, mIdx, { withCapital })` : fonction centrale — withCapital=true pour l'affichage, false pour la performance
- Mois passés = données réelles (si showActual) ; mois courant = réel + projeté ; mois futurs = projections (si showProjected)
- Valeurs projetées affichées en italique/muted

**Lignes du tableau :**
- Une ligne par plateforme (avec Total + Moy. mensuelle)
- "Toutes les plateformes" : somme mensuelle incluant capital si toggle actif
- "Capital investi" : snapshot mensuel, colonne Total = dernier mois non nul
- "Performance nette/brute mensuelle" : perfMonthTotals[i] / capitalValues[i] ; Total = perfAnnTotale/12
- "Performance nette/brute annualisée" : perf_mensuelle × 12 ; Total = perfGrandTotal / lastCapital

**Why:** Les 3 dernières lignes (capital investi + 2 perfs) utilisent `perfMonthTotals` (sans capital) même quand le toggle capital est actif — le capital gonfle les montants mais ne doit pas biaiser la performance.

**Visuel :**
- Couleur thème : violet/indigo (`#7c3aed → #4f46e5`) alignée sur le YearSelectorKpi
- Colonne mois courant : barre indigo en haut du header + fond légèrement teinté
- Header "PLATEFORME" et "TOTAL" : même gradient indigo
- Cellules vides fin de ligne (avg pour les 3 dernières lignes) : `tip-td-void` avec `border: 1px hidden transparent` pour effacer les lignes en border-collapse
- Sélecteur Reçu/Projeté en bas du tableau (même style pill que bar chart)
- En mode global ("Depuis le début") : tableau masqué (retourne null)
