Import des centrales (CSV/XLSX)
Vue d’ensemble
Section intitulée « Vue d’ensemble »Les administrateurs peuvent importer en masse des centrales photovoltaïques à partir de fichiers CSV ou XLSX. L’import utilise un processus AJAX en 3 phases avec traitement par lots pour gérer de grands jeux de données sans problème de délai d’expiration.
Flux d’import
Section intitulée « Flux d’import »Admin Browser WordPress AJAX Database │ │ │ ├── Upload file ──────────────> │ │ │ AJAX: irisolaris_import_init │ │ │ ├── Validate file type │ │ │ ├── Move to temp dir │ │ │ ├── Count rows │ │ │ └── Store transient (1h) │ │ │<── {import_id, total_rows} ── │ │ │ │ │ ├── Loop: AJAX import_process ──> │ │ │ ├── Read batch (200 rows) │ │ │ ├── For each row: │ │ │ │ ├── Validate required │ │ │ │ ├── Check upsert (Work ID) │ ── SELECT by work_id ─> │ │ │ ├── wp_insert/update_post │ ── INSERT/UPDATE ──────> │ │ │ ├── update_post_meta (17) │ ── INSERT/UPDATE ──────> │ │ │ └── wp_set_object_terms │ ── INSERT ─────────────> │ │ └── Update progress transient │ │ │<── {progress %, counts} ───── │ │ │ (repeats until complete) │ │ │ │ │ ├── AJAX: import_finalize ──────> │ │ │ ├── Log to import_logs table │ ── INSERT ─────────────> │ │ ├── Delete temp file │ │ │ └── Delete transient │ │ │<── {final counts, errors} ─── │ │Processus en trois phases
Section intitulée « Processus en trois phases »Phase 1 : Initialisation (irisolaris_import_init)
Section intitulée « Phase 1 : Initialisation (irisolaris_import_init) »- Valide le type du fichier téléversé (CSV, XLSX, XLS)
- Déplace le fichier dans un répertoire temporaire
- Ouvre le fichier avec PhpSpreadsheet et compte les lignes
- Stocke l’état de l’import dans un transient (TTL de 1 heure)
- Retourne l’
import_idet letotal_rowsau client
Phase 2 : Traitement par lots (irisolaris_import_process)
Section intitulée « Phase 2 : Traitement par lots (irisolaris_import_process) »Traite 200 lignes par requête :
- Lit le lot suivant depuis le tableur
- Pour chaque ligne :
- Valide les champs obligatoires
- Vérifie l’existence d’une centrale par
work_id(logique d’upsert) - Crée ou met à jour l’article WordPress (
wp_insert_post/wp_update_post) - Met à jour les 17 champs post meta
- Affecte les termes de taxonomie (statut, région)
- Met à jour le transient de progression
- Retourne le pourcentage de progression et les compteurs en cours
Optimisations de performance durant l’import :
wp_suspend_cache_invalidation()— désactive l’invalidation du cache pendant le lotwp_defer_term_counting()— diffère le comptage des termes de taxonomieupdate_meta_cache()— pré-charge le cache meta en masseupdate_object_term_cache()— pré-charge le cache des termes en masse
Phase 3 : Finalisation (irisolaris_import_finalize)
Section intitulée « Phase 3 : Finalisation (irisolaris_import_finalize) »- Journalise les résultats de l’import dans la table
irisolaris_import_logs - Supprime le fichier temporaire
- Supprime le transient d’état de l’import
- Retourne les compteurs finaux de succès/erreurs et le détail des erreurs
Logique d’upsert
Section intitulée « Logique d’upsert »Pour permettre la réimportation sûre de jeux de données mis à jour, l’import utilise le champ work_id comme clé unique :
- Si une centrale avec le même
_irisolaris_plant_work_idexiste → mise à jour de l’article existant et de ses métadonnées - Si aucune correspondance → insertion d’un nouvel article
Cela permet des imports répétés du même jeu de données pour mettre à jour les enregistrements existants plutôt que de créer des doublons.
Correspondance des champs meta
Section intitulée « Correspondance des champs meta »Chaque ligne du tableur est mappée aux 17 champs meta de centrale listés ci-dessous.
| Clé meta | Description |
|---|---|
_irisolaris_plant_name | Nom de la centrale |
_irisolaris_plant_lat | Latitude |
_irisolaris_plant_lng | Longitude |
_irisolaris_plant_address | Adresse postale |
_irisolaris_plant_city | Ville |
_irisolaris_plant_postcode | Code postal |
_irisolaris_plant_region | Région |
_irisolaris_plant_power | Puissance de sortie (kW) |
_irisolaris_plant_status | Statut de la centrale |
_irisolaris_plant_active | Indicateur de visibilité (1/0) |
_irisolaris_plant_work_id | Identifiant de travail unique (clé d’import) |
_irisolaris_plant_project_name | Nom du projet |
_irisolaris_plant_spv | SPV (Special Purpose Vehicle) |
_irisolaris_plant_department | Département |
_irisolaris_plant_perimeter | Périmètre (km) |
_irisolaris_plant_tariff | Tarif |
_irisolaris_plant_prm | PRM (référence compteur) |
Formats supportés
Section intitulée « Formats supportés »La lecture de tous les tableurs est assurée par PhpSpreadsheet (v1.29.11), qui supporte les formats suivants :
| Format | Extension | Support |
|---|---|---|
| CSV | .csv | Complet |
| Excel (XLSX) | .xlsx | Complet |
| Excel (XLS) | .xls | Complet |
Gestion des erreurs
Section intitulée « Gestion des erreurs »- Les erreurs par ligne sont collectées et stockées (non bloquantes)
- Le détail des erreurs est sérialisé et journalisé dans la table
irisolaris_import_logs - L’interface d’import affiche une barre de progression avec les compteurs de succès/erreurs
- Le rapport final inclut le total d’éléments, les succès, les erreurs et le détail des erreurs
Interface d’administration
Section intitulée « Interface d’administration »Accès via : Centrales PV → Importer dans le menu d’administration WordPress.
Nécessite la capacité manage_options (administrateurs uniquement).
Actions supplémentaires d’administration :
- Effacer l’historique d’import — vide la table
irisolaris_import_logs - Vider le cache — supprime manuellement le cache transient GeoJSON