ca79b8f8e6
Boite a outils de migration des tiers (clients / fournisseurs / prestataires) depuis l'ancien CRM Mixgraine vers Starseed : - extract_mixgraine.py : extraction + normalisation via l'API Mixgraine (cache disque reprenable, debit ~1 req/s, backoff 429/5xx) -> JSON format Starseed - build_tiers_xlsx.py : Excel de relecture (1 onglet par type + Synthese, colonne 'Site manquant' filtrable) - run.sh : enchaine extraction + Excel - README.md : prerequis, recuperation du token, lancement - mixgraine-migration-analysis.md : analyse + mapping des champs Mixgraine -> Starseed WIP : les commandes d'import Symfony cote Starseed (seed referentiels/sites, import Client/Supplier/Provider, 2e passe distributeur/courtier) restent a faire. Le dossier de sortie mixgraine-export/ (IBAN/BIC + PII reelles) est volontairement .gitignore : reproductible localement via MIXGRAINE_JWT.
Migration Mixgraine → Starseed — Outils
Boîte à outils pour migrer les tiers (clients / fournisseurs / prestataires) depuis le CRM Mixgraine vers Starseed. Tout est autonome : 2 scripts Python + ce README.
| Fichier | Rôle |
|---|---|
mixgraine-migration-analysis.md |
Rapport d'analyse + mapping des champs (à lire en premier) |
extract_mixgraine.py |
Récupère les tiers depuis l'API Mixgraine et les normalise en JSON |
build_tiers_xlsx.py |
Produit un Excel avec un onglet par type + filtre « Site manquant » |
run.sh |
Enchaîne les deux scripts |
Prérequis
- Python 3 (déjà présent sur un poste Linux/Mac) — vérifier :
python3 --version - openpyxl (pour les Excel) :
pip install openpyxl(oupip install --break-system-packages openpyxl) - Un token Mixgraine (JWT) valide — voir ci-dessous.
Récupérer le token Mixgraine
- Ouvrir
https://liot.mixsuite.frdans Chrome, connecté. - Ouvrir les outils dev (F12) → onglet Network.
- Cliquer sur n'importe quelle liste (clients…) pour déclencher un appel
api/customer. - Cliquer sur la requête → Headers → copier la valeur après
authorization: Bearer(la longue chaîneeyJ0eXAi...).
Le token expire au bout de quelques jours. S'il est expiré, en récupérer un nouveau de la même façon. Ne jamais le committer dans git.
Lancement
Méthode simple (script tout-en-un)
cd docs/migration
export MIXGRAINE_JWT="eyJ0eXAi...colle-ton-token-ici..."
./run.sh
Ou étape par étape
cd docs/migration
export MIXGRAINE_JWT="eyJ0eXAi..."
# 1) Extraction + normalisation (lent : ~1 requête/seconde, soyez patient)
python3 extract_mixgraine.py
# -> écrit dans ./mixgraine-export/ : clients.json, suppliers.json,
# providers.json, referentials.json, extraction-report.txt
# Test rapide sur 20 tiers : python3 extract_mixgraine.py --limit-ids 20
# 2) Génération de l'Excel de relecture (un onglet par type)
python3 build_tiers_xlsx.py --in mixgraine-export
# -> mixgraine-export/mixgraine-tiers.xlsx
# onglets Clients / Fournisseurs / Prestataires + Synthèse,
# colonne « Site manquant » filtrable, lignes à problème surlignées
Ce que tu obtiens
Tout est écrit dans docs/migration/mixgraine-export/ :
*.json— données normalisées au format Starseed (utilisées plus tard par les commandes d'import).mixgraine-tiers.xlsx— un onglet par type (Clients / Fournisseurs / Prestataires) + un onglet Synthèse. Chaque onglet liste toutes les données (une ligne par adresse), avec une colonne Site manquant (OUI/vide) et une colonne Problèmes. Le filtre automatique est activé : clique l'entonnoir de la colonne « Site manquant » → cocheOUIpour isoler les adresses sans site.extraction-report.txt— compteurs + avertissements.cache/— réponses brutes par tiers (permet de relancer sans tout refetch).
Workflow conseillé : ouvrir mixgraine-tiers.xlsx, filtrer « Site manquant = OUI » dans chaque onglet, corriger la donnée à la source dans Mixgraine (re-cocher les organisations/sites, compléter les emails de facturation), puis relancer (le cache accélère).
Notes
- L'extraction est reprenable : si elle s'interrompt, relance-la, elle repart du cache.
- Le débit est volontairement lent (
--delay 1.0par défaut) pour ne pas saturer le serveur. Pour aller plus vite (à tes risques) :--delay 0.3. - Le dossier
mixgraine-export/n'a pas vocation à être committé (données + token-sensible). Pense à l'ajouter au.gitignoresi besoin.