---
name: project-domiciliation-iso
description: Migration du champ domiciliation des plateformes vers codes ISO 3166-1 alpha-2 avec sélecteur pays à drapeaux
metadata: 
  node_type: memory
  type: project
  originSessionId: 62e4d5e0-01c1-41c5-a24b-23f6ec59b5fb
---

Migration complète du champ `domiciliation` (plateformes + référentiel) de valeurs texte vers codes ISO 3166-1 alpha-2.

**Ce qui a été fait :**

1. **Zod backend** — `z.enum(['france','zone_europeenne','hors_zone_europeenne'])` remplacé par `z.string().min(1).max(100)` dans `plateformes.js` et `referentiel.js`

2. **Migration DB** (`db/index.js`) — trois blocs ajoutés en fin de fichier :
   - `'france'` → `'FR'`, `'zone_europeenne'`/`'hors_zone_europeenne'` → `'EU'` provisoire sur les deux tables
   - `pays_siege` (nom français) → `domiciliation` (ISO) sur `plateformes_referentiel` via mapping NAME_TO_ISO complet

3. **Sentinel** — tous les `=== 'france'` / `!= 'france'` remplacés par `=== 'FR'` / `!= 'FR'` dans : `taxreport.js`, `plateformes.js`, `Settings.jsx`, `AdminPlateformes.jsx`, `TaxReport.jsx`, `Cerfa2561Preview.jsx`, `CerfaRecapTable.jsx`, `Cerfa2042Preview.jsx`

4. **UI** — `CountrySelect` (composant existant, codes ISO, drapeaux) intégré dans :
   - `Settings.jsx` : formulaire création + formulaire édition plateforme
   - `AdminPlateformes.jsx` : RefModal
   - `PlatformeProfile.jsx` : section Géographie (lecture + édition), remplace `pays_siege`

5. **DOMICILIATION_LABELS** supprimé dans les 3 fichiers, remplacé par `countryLabel(code)` via `COUNTRIES` de `CountrySelect.jsx`

6. **Filtre référentiel** rendu dynamique (valeurs distinctes en base) dans `AdminPlateformes.jsx`

7. **Badges "hérité"** ajoutés aux 4 champs manquants dans la modale édition Settings : `fiscalite`, `type_produit_fiscal`, `taux_fiscalite_locale`, `logo_filename`

8. **Réinitialiser au référentiel** — ajout ConfirmModal avant exécution + message de succès vert dans le formulaire après reset

**État DB :**
- `plateformes.domiciliation` : valeurs ISO (`'FR'`, `'EU'` provisoire pour ex zone_europeenne)
- `plateformes_referentiel.domiciliation` : valeurs ISO, dont 3 migrées depuis `pays_siege`
- `pays_siege` : champ conservé en DB mais retiré de l'UI (PlatformeProfile)

**Why:** Prépare l'affichage avec drapeaux et ouvre la porte à une granularité pays plutôt que zone géographique, utile pour la fiscalité (crédit d'impôt 2047 par pays).

**How to apply:** Le sentinel clé est `=== 'FR'` (pas `=== 'france'`). Les plateformes encore en `'EU'` sont à corriger manuellement via le sélecteur pays.
