ADR-002 — CSV-first, Nordigen repoussé en V2
Date : 2026-04-16 · Statut : Accepté · Décideurs : Clement Molotkoff
Contexte
Le cahier des charges initial (EB.md) prévoyait GoCardless / Nordigen (Open Banking) comme mécanisme principal d'ingestion bancaire en V1, avec le CSV en fallback. Après analyse, cette priorité s'inverse.
Problèmes identifiés avec Nordigen en V1
- Fenêtre glissante de 90 jours — L'API limite l'accès aux transactions à 90 jours, avec renouvellement manuel du consentement. Inadapté à un suivi patrimonial long terme.
- Compte business requis — GoCardless exige un compte business même pour un usage personnel. Démarche administrative non triviale pour un projet privé.
- OAuth bancaire complexe — Surface d'erreur élevée (sessions à renouveler, erreurs d'API bancaires externes, consentements révoqués).
- Valeur métier équivalente — L'import CSV couvre le même périmètre (transactions, soldes) avec une complexité bien moindre.
- Schéma sans code mort — Ajouter
nordigenId,nordigenAccountId,lastSyncedAtau schéma Prisma en V1 = colonnes inutilisées. Elles seront introduites via migration lors du passage en V2.
Options considérées
Option A — CSV-first en V1, Nordigen V2 (retenu)
- Pour : livraison rapide de la valeur métier, schéma propre, zéro dépendance externe
- Contre : import manuel (export CSV depuis chaque banque), pas de sync automatique
Option B — Nordigen dès V1, CSV en fallback
- Pour : sync automatique
- Contre : les 5 problèmes ci-dessus, retarde la V1 de plusieurs semaines
Option C — Scraping headless des interfaces bancaires
- Pour : pas de dépendance à un service externe
- Contre : fragile, probablement contre les CGU, maintenance élevée
Décision
CSV-first en V1 pour trois banques cibles : BoursoBank, Revolut, Trade Republic.
Nordigen = V2. La migration Prisma correspondante sera créée au moment de l'implémentation, pas avant.
Conséquences
Positives
- Schéma Prisma propre, sans champs inutilisés
- Livraison V1 accélérée
- Aucune dépendance externe payante ou OAuth en V1
Risques acceptés
- Import manuel périodique (acceptable pour un usage perso)
- Parseurs CSV à maintenir si les banques changent de format (rare, signalé par un import qui échoue)
- Dédoublonnage critique : SHA256 hash sur les champs signifiants pour des imports successifs sans doublons
Règles dérivées
- Interdit (CLAUDE.md) : champs Nordigen dans le schéma Prisma avant V2
- UX d'import à soigner : prévisualisation, correction manuelle, feedback d'import
- Parseurs dans
src/lib/parsers/avec signature commune (voir CSV parsers)
Révision
Cette décision serait à remettre en question si :
- GoCardless assouplit la fenêtre 90 jours ou supprime l'exigence business
- L'utilisateur demande une sync temps réel multi-banques (cas d'usage différent)
- Un autre agrégateur (Tink, Plaid EU) propose des conditions adaptées