| Pos. | Libellé | Format | Couleur |
|---|
Génération de synthèse
Historique des générations
| Lot | Fiche | Type | Lignes | Demandeur | Statut | Durée | Date | Actions |
|---|
Aucune génération.
Fiches CEE
| Numéro | Libellé | Code prestation | Modèle PP | Modèle PM | Auto | Actions |
|---|
Aucune fiche configurée.
Configuration analyse PDF
PDF modèle
Uploadez un PDF type pour cette fiche. Il servira de référence pour tester les patterns d'extraction.
Patterns d'extraction
Définissez les textes à rechercher dans le PDF et le label associé pour le mapping ($PDF.label).
| Texte à chercher | Label (mapping) | Position valeur | Actions |
|---|
Aucun pattern configuré.
Résultats du test
| Label | Valeur extraite |
|---|
Codes Prestation
| Code | Libellé | Formulaires Kizeo | Actions |
|---|
Aucun code prestation.
Formulaires Kizeo
| Type | Form ID | Date début | Date fin | Champ ref mission | Champ ref lot | Champ prise RDV | Champ réalisable / concl. | Champ relecture | Actions |
|---|
Paramétrage des valeurs de champs Kizeo Liste & Choix
| Champ Kizeo | Correspondances | Actions |
|---|
Aucune correspondance configurée.
Modèles
| Nom | Type | Colonnes | Fiches | Actions |
|---|
Aucun modèle.
▼ Format de sortie
▼ Mapping
| Pos. | Libellé | Source | Valeur source | Si # = Oui | Valid. |
|---|
▼ Compteurs synthèse
| Compteur | Colonne | Opérateur | Valeur | Conditions OR |
|---|
Tokens API publique
Gérez les tokens d'accès à l'API publique. La documentation Swagger est disponible à /public-api/docs.
| Nom | Préfixe | Créé par | Créé le | Expire le | Dernière utilisation | Statut | Actions |
|---|
Aucun token créé.
KPI
Lancer une analyse
Historique des analyses KPI
| Nom | Clients | Fiches | Période | Missions | Statut | Date | Actions |
|---|
Aucune analyse KPI.
Mappings KPI
| Nom | Modèle | Type | Actions |
|---|
Mapping KPI
Seuls les modèles non rattachés à un autre mapping (principal ou secondaire) peuvent être ajoutés.
Paramètres globaux
Le système cherche d'abord {ref_lot}.json.gz (format produit par l'app Intégrations) puis, à défaut, {ref_lot}.xlsx. Les deux formats sont équivalents pour la génération.
Sert à récupérer les taux réglementaires depuis l'outil Intégrations (source unique). La valeur est masquée après enregistrement. Voir l'onglet Taux régl.
Guide de l'outil
Utilisation
Lancer une synthèse
Mode standard (par lot)
- Accéder à l'onglet Génération.
- Saisir la référence du lot dans le champ prévu (minimum 12 caractères, commençant par une date au format
YYYYMMDD, ex :20260303-07-DIVERS-INS-EDF). - Cliquer sur Générer.
Le type PP/PM est déterminé automatiquement depuis les informations du lot sur SharePoint. La fiche CEE est également identifiée automatiquement (depuis SharePoint ou par parsing de la référence du lot).
Le traitement se lance en arrière-plan. Une barre de progression indique l'avancement en temps réel. La durée affichée correspond au temps de traitement effectif (hors éventuelle validation manuelle).
Mode 100% (par missions)
- Activer le toggle Mode 100%.
- Saisir la liste des références de mission (une par ligne).
- Sélectionner la fiche CEE concernée (seules les fiches éligibles 100% sont proposées).
- Choisir le type PP/PM (en mode 100%, ce choix est manuel).
- Optionnellement, renseigner un nom de fichier de sortie personnalisé.
- Cliquer sur Générer.
En mode 100%, les missions sont recherchées directement par leur référence dans Kizeo, avec fallback sur les formulaires archivés si nécessaire. Seules les missions relues, avec RDV validé, non bloquées et réalisables sont retenues.
Multi-formulaires Kizeo
Le toggle Multi-formulaires Kizeo permet de rechercher les missions dans tous les formulaires Kizeo configurés pour le code prestation, et pas uniquement dans le formulaire en vigueur selon la date d'intégration du lot. Cela inclut les formulaires d'inspection et CPC.
Cette option est utile dans de rares cas où des missions ont été saisies dans un ancien formulaire. Elle est désactivée par défaut car elle augmente le temps de traitement. Elle n'est pas disponible en mode 100% (qui recherche déjà dans tous les formulaires) ni via l'API publique (VBA).
Découpage P5/P6
Le toggle Découpage P5/P6 produit deux synthèses distinctes pour un même lot, séparées par la date d'engagement des opérations : P5 pour les opérations engagées avant le 1er janvier 2026, P6 pour celles engagées le 1er janvier 2026 ou après.
Au lancement, une fenêtre demande de choisir la colonne du fichier commande contenant la date d'engagement (seules les colonnes dont le libellé contient « Date » sont proposées). Deux jobs indépendants sont alors créés (un P5, un P6), chacun avec ses propres étapes de validation, sa page KPI et son upload SharePoint.
Les fichiers générés portent le même nom que d'habitude avec le suffixe -P5 ou -P6 avant l'extension (ex. Synthèse-… BAR-TH-171-P5.pdf). Si toutes les opérations tombent du même côté, seule la synthèse correspondante est produite (un message le signale). Si une opération n'a pas de date d'engagement exploitable dans la colonne choisie, le découpage est bloqué avec la liste des opérations concernées. Option désactivée par défaut, disponible uniquement dans l'interface (pas en mode 100% ni via l'API VBA).
Synthèse Excel partielle
Le toggle Synthèse Excel partielle produit un fichier Excel ne contenant que les missions au statut « Terminé » sur SharePoint. Aucun PDF n'est généré.
- Les missions qui ne sont pas « Terminé » sur SharePoint sont exclues ; elles ne bloquent donc pas la génération (pas de contrôle « mission non réalisée / non relue » sur ces missions).
- La validation Kizeo est non bloquante (avertissements seulement) : on obtient toujours l'Excel des missions Terminé.
- Pour une fiche en mode analyse PDF, les colonnes issues du rapport PDF sont remplies (extraction faite pour les missions Terminé), mais aucun fichier PDF n'est produit et il n'y a pas de validation PDF ni de page KPI.
- Le fichier porte le suffixe
-partielavant l'extension (ex.Synthèse-… BAR-TH-171-partiel.xlsx). - Si aucune mission n'est « Terminé », la génération échoue avec un message explicite.
Option désactivée par défaut, disponible uniquement dans l'interface (pas en mode 100% ni via l'API VBA), et incompatible avec le découpage P5/P6 (les deux cases s'excluent).
TotalEnergies (cumul multi-lots)
Le toggle TotalEnergies produit des synthèses cumulant plusieurs lots d'un même client. On choisit un type puis on saisit les références des lots à intégrer :
- Murs : jusqu'à 4 lots (BAR-EN-102 PP/PM, BAT-EN-102 PP/PM).
- Combles et planchers : jusqu'à 8 lots (BAR/BAT-EN-101 et 103, PP/PM) — les CP/PL/CO sont cumulables ensemble.
- Autres (1 seule fiche : PAC, chaudière biomasse, etc.) : jusqu'à 2 lots (PP, PM).
Résultat : 2 fichiers Excel (un PP, un PM) cumulant les opérations des lots correspondants (côté vide ignoré). Tous les lots doivent être du même client (sinon erreur). Au lancement, une fenêtre demande le numéro de lot client (utilisé pour nommer les fichiers : <n° lot client> PP.xlsx / PM.xlsx). Les fiches concernées sont en mode automatique sans analyse PDF (pas de pause de validation). Le PDF de synthèse combiné arrivera dans une prochaine version. Interface uniquement, incompatible avec les autres modes.
Upload SharePoint automatique
Le toggle Upload SharePoint auto permet d'envoyer automatiquement les fichiers Excel et PDF générés sur SharePoint à la fin du traitement. Ce choix est mémorisé entre les sessions. Lorsque la synthèse est lancée via l'API (VBA), l'upload SharePoint est toujours activé.
Annulation
Un bouton d'annulation est disponible tant que le job est en cours (running) ou en attente de validation (pending_review, pending_pdf_review). Seul le créateur du job ou un administrateur peut annuler.
Étapes du pipeline
| % | Étape |
|---|---|
| 2% | Appel webhook Power Automate (mise à jour compteurs) |
| 5% | Lecture des infos du lot sur SharePoint + détermination PP/PM |
| 10% | Identification de la fiche CEE et résolution de version |
| 20% | Téléchargement du fichier commande (SharePoint) — .json.gz prioritaire, sinon .xlsx |
| 30% | Récupération données Kizeo (inspection + CPC en parallèle) |
| 35% | Validation des données (doublons, missions non relues, RdV KO) |
| 40% | Extraction des rapports PDF (si activée sur la fiche) |
| 55% | Application du mapping (valeurs brutes + formules itératives) |
| 60% | Validation des champs PDF → pause pending_pdf_review si erreurs |
| 65% | Calcul des compteurs statistiques |
| 70% | Génération du fichier Excel |
| 80% | Validation compteurs → pause pending_review si mode manuel |
| 85% | Génération du PDF de synthèse |
| 95% | Finalisation + upload SharePoint (si activé) |
| 100% | Terminé |
Comprendre les statuts
| Statut | Signification |
|---|---|
pending | En file d'attente, pas encore démarré. |
running | En cours de traitement. La barre de progression se met à jour automatiquement. |
pending_pdf_review | En attente de validation manuelle des données extraites du PDF. Un bouton Valider apparaît dans l'historique. |
pending_review | En attente de validation manuelle des compteurs statistiques. Un bouton Valider apparaît dans l'historique. |
completed | Terminé avec succès. Les boutons de téléchargement (Excel, PDF) et d'upload SharePoint sont disponibles. |
error | Échec. Cliquer sur l'icône ❌ pour afficher le détail de l'erreur (texte sélectionnable). |
cancelled | Annulé manuellement par l'utilisateur. |
Les icônes ❌ (erreur) et ⚠️ (warning) sont cliquables : elles ouvrent une modale avec le message complet, dans laquelle le texte est sélectionnable pour faciliter le copier-coller.
La durée affichée correspond au temps de traitement réel. Si le job passe en validation manuelle, le chronomètre se fige et ne reprend pas après la validation.
Validation manuelle
Validation des compteurs (pending_review)
Ce cas survient lorsque la fiche est en mode manuel (champ "automatique" décoché sur la fiche CEE). L'outil calcule les compteurs mais attend votre confirmation avant de générer le PDF.
- Cliquer sur le bouton Valider dans l'historique.
- Une modale s'ouvre avec les compteurs pré-remplis. Vérifier et corriger si nécessaire.
- Les éventuels warnings (différence entre compteurs SharePoint et synthèse) sont affichés en haut de la modale.
- Cliquer sur Confirmer et générer le PDF.
Validation des données PDF (pending_pdf_review)
Ce cas survient lorsque l'extraction automatique des rapports PDF a détecté des anomalies. Voici les différents cas qui déclenchent une validation manuelle :
Cas déclencheurs
- PDF absent : le rapport PDF d'une mission terminée n'a pas été trouvé sur SharePoint. Tous les champs PDF de cette mission sont à renseigner manuellement.
- Valeur vide : un champ PDF est vide après extraction (pattern non trouvé dans le PDF, ou cellule vide). Si la colonne est conditionnelle (ex : "Si #A = Oui") et que la condition n'est pas remplie, le vide est considéré normal et ne déclenche pas d'erreur.
- Validation entier échouée : la valeur extraite n'est pas un entier valide. Si le texte contient exactement un nombre entier, il est extrait automatiquement. Sinon (0 ou 2+ nombres trouvés) → validation manuelle.
- Validation décimal échouée : même logique que pour les entiers, avec support des virgules et points décimaux.
- Liste de valeurs non respectée : la valeur extraite ne correspond à aucune des valeurs autorisées. Cela arrive notamment après un smart cleaning ambigu (2+ valeurs trouvées dans le texte extrait, voir section Validation de données).
Interface de correction
- Cliquer sur le bouton Valider dans l'historique.
- Une modale en vue partagée s'ouvre : formulaire à gauche, PDF à droite.
- Pour chaque erreur, la ligne concernée est identifiée (lettre A, B, C...), avec le nom de la colonne (coloré selon l'en-tête) et la valeur actuelle.
- Selon le type de validation :
- Liste de valeurs : sélectionner la bonne valeur dans la liste déroulante.
- Entier / Décimal : saisir la valeur correcte.
- Sans validation (champ vide) : saisir librement la valeur.
- Utiliser les boutons Précédent / Suivant pour naviguer entre les erreurs.
- Le PDF est automatiquement positionné sur le terme de recherche correspondant pour faciliter la vérification.
- Une fois toutes les corrections effectuées, cliquer sur Valider les corrections.
Après validation, le mapping est recalculé avec les valeurs corrigées (les formules référençant $PDF. sont réévaluées), puis l'Excel et le PDF sont générés.
Forcer la saisie
Si la colonne du mapping a l'option Saisie libre auth. cochée (voir Éditeur de modèles), une coche Forcer la saisie apparaît sous le champ de correction. Quand elle est activée, un champ libre (bordure orange) remplace le champ normal et permet de saisir n'importe quelle valeur, même si elle ne respecte pas la contrainte configurée (hors liste déroulante, texte non numérique pour un entier/décimal...). La valeur forcée ne peut pas être vide. Cette valeur finit telle quelle dans la case correspondante du fichier Excel. À utiliser avec précaution car elle court-circuite la validation de données configurée sur le modèle.
Par défaut, aucun mapping n'a cette option activée : l'administrateur doit explicitement l'autoriser par colonne dans l'éditeur de modèles.
Téléchargement et SharePoint
Téléchargement
Une fois le job terminé (completed), plusieurs boutons apparaissent dans l'historique :
- Excel (icône verte) : télécharge le fichier de synthèse Excel.
- PDF (icône rouge) : télécharge le PDF de synthèse.
- Excel source PDF (icône PDF rouge +
Xnoir) : télécharge le template Excel rempli qui a servi à générer le PDF, avant conversion. Utile pour debug si une cellule du PDF est cassée — on ouvre la source pour voir la valeur exacte sans rejouer la génération.
Recherche
Le champ de recherche au-dessus de la liste filtre par référence de lot, fiche CEE, ou demandeur (texte partiel, insensible à la casse).
Upload SharePoint
- Automatique : si le toggle "Upload SharePoint auto" est activé (ou lancement via API), les fichiers sont envoyés automatiquement à la fin du traitement.
- Manuel : un bouton SharePoint (icône bleue-verte) apparaît dans l'historique pour les jobs non encore uploadés. Cliquer dessus pour envoyer les fichiers.
Les fichiers sont déposés dans le dossier Synthèses/Synthèses du site SharePoint configuré.
Utilisation via VBA (Excel)
Configuration dans le fichier VBA
Cinq constantes à renseigner en haut du module SynthesesAPI :
BASE_URL: URL de l'outil (ex :https://syntheses.spekty.fr).API_TOKEN: token API généré dans l'onglet Tokens API de l'outil.API_USER: identifiant affiché dans l'historique (email de l'utilisateur).TIMEOUT_MS: timeout en millisecondes (défaut 360000 = 6 min).POLL_SEC: intervalle de polling en secondes (défaut 3).
Lancement (asynchrone, multi-jobs)
- Appeler la macro
GenererEtSauver("20260303-07-DIVERS-INS-EDF")avec la référence du lot. - La requête est envoyée à l'API en mode asynchrone. Plusieurs générations peuvent tourner en même temps.
- Un polling automatique (toutes les 3 secondes) vérifie l'état de chaque requête. La barre de statut Excel affiche le nombre de synthèses en cours.
- À la fin de chaque requête :
- Succès (
completed) : une MsgBox confirme la génération et l'enregistrement SharePoint. Les éventuels warnings sont affichés. - Autre statut (erreur, validation requise...) : une MsgBox affiche le message d'erreur et propose d'ouvrir l'outil dans le navigateur.
- Succès (
L'upload SharePoint est toujours activé lors d'un lancement via l'API (endpoint with-sharepoint).
Propriété du job
Le champ API_USER est envoyé comme créateur du job. L'utilisateur peut ensuite annuler ses propres jobs et accéder aux validations depuis l'interface web.
Règles de validation
Lors de chaque génération, les données Kizeo sont validées automatiquement. Tous les blocages sont détectés en une seule passe et listés dans le message d'erreur.
Missions annulées
Les missions dont le statut SharePoint est Annulé sont automatiquement exclues de la synthèse. Un warning non bloquant indique le nombre de missions exclues et leurs références.
Inspection (non-CPC)
Doublons Kizeo
- 1 seule avec
mission_realisable = "O"→ retenue - 2+ avec
mission_realisable = "O"→ doublon bloquant - 0 realisable mais au moins 1 avec
prise_de_rdv = "RDV"→ la plus récente avec RDV (create_time) - Sinon → la plus récente (
create_time)
Mission non relue
mission_realisable = "O" ET relecture = "Non"
→ bloquant
RdV KO
prise_de_rdv = "RDV" ET mission_realisable vide
→ vérification statut SharePoint :
RdV KO→ code déduit automatiquement :- Contient "refus" →
RI(Refus d'intervention) - Contient "non disponible" →
BND(Bénéficiaire non disponible) - Contient "faux num" →
FN(Faux numéro) - Autre →
BI(Bénéficiaire injoignable)
- Contient "refus" →
En cours/Echantillonné/Non prise en compte/ non trouvé dans SharePoint →PI(Planification impossible)- Autre statut → bloquant
CPC
Doublons Kizeo
- 1 seule avec
prise_de_rdv = "RDV"→ retenue - 2+ avec
prise_de_rdv = "RDV"et toutesconclusion = "Satisfaisant"→ 1ere retenue automatiquement - 2+ avec
prise_de_rdv = "RDV"sinon → doublon bloquant - Sinon → 1ere entree
Mission non relue
prise_de_rdv = "RDV" ET conclusion = "Non satisfaisant"
ET relecture = "Non"
→ bloquant
Compteurs et Power Automate
Avant la génération, un webhook Power Automate est appelé pour mettre à jour les compteurs du lot sur SharePoint. Si le nombre de contrôles sur la synthèse diffère du compteur SharePoint, un warning est affiché. Exception : si la différence s'explique par des missions modifiées sur Kizeo dans les 2 dernières minutes (données récentes pas encore prises en compte par Power Automate), le warning est supprimé.
Cas particulier : RES-EC-104
La fiche RES-EC-104 (Rénovation d'éclairage) bénéficie d'un traitement spécifique lors de la génération Excel.
Éclatement multi-cadres A
Lorsque la cellule Ref Emmy (position 3) contient N séparateurs | , la ligne est automatiquement éclatée en N+1 lignes (une par cadre A).
- Les cellules contenant exactement
Nséparateurs|sont découpées : chaque partie va dans sa ligne. - Les autres cellules (aucun séparateur, ou nombre différent) sont dupliquées telles quelles sur chaque ligne.
Cas particulier "Nombre de luminaires"
Si le modèle contient une ou plusieurs colonnes dont l'en-tête commence par Nombre de luminaires :
- Les valeurs numériques sans séparateur sont préfixées
"Total sur l'opération : X"sur chaque ligne éclatée. - Les lignes éclatées sont colorées en alternance (jaune, violet, vert) pour distinguer visuellement les opérations multi-cadres.
- Les cellules "Nombre de luminaires" sur les lignes éclatées sont mises en surbrillance pour signaler qu'elles doivent être complétées.
- Warning : "Certaines opérations ont été éclatées en plusieurs cadres A. Veuillez vérifier et compléter manuellement le nombre de luminaires installés."
Modèle sans colonne "Nombre de luminaires"
Si aucune colonne d'en-tête ne commence par Nombre de luminaires :
- Pas de coloration des lignes éclatées.
- Pas de préfixe
"Total sur l'opération : X". - Warning simplifié : "Certaines opérations ont été éclatées en plusieurs cadres A".
Configuration
La colonne déclencheuse est la position 3 (Ref Emmy). Aucune autre configuration : les colonnes à éclater et les colonnes "Nombre de luminaires" sont auto-détectées.
Règles spécifiques par client
Client EDF
Pour les lots dont le client SharePoint est EDF (toutes déclinaisons — la parenthèse est ignorée : EDF (Marché des Particuliers), EDF (Marché des Professionnels), etc.), deux adaptations sont appliquées automatiquement au fichier Excel :
- Ligne de tirets : une ligne contenant un tiret (
-) dans chaque colonne ayant un en-tête est ajoutée avant la ligne d'en-tête. - Pourcentages en valeur brute : les colonnes au format "Pourcentage" sortent en nombre brut (ex :
75, affiché75,00) au lieu du format pourcentage classique (75%).
Clients « Engie DGP »
Pour les lots dont le nom du client SharePoint commence par Engie DGP (avec ou sans parenthèse ensuite, ex : Engie DGP (…) ; insensible à la casse), l'adaptation suivante est appliquée :
- Ligne de tirets : une ligne contenant un tiret (
-) dans chaque colonne ayant un en-tête est ajoutée avant la ligne d'en-tête.
Ces règles s'appliquent à toutes les fiches, y compris après une étape de validation manuelle (PDF ou compteurs). Elles n'impactent pas le calcul des compteurs statistiques.
Administration
Fiches CEE
Les fiches CEE sont gérées dans l'onglet Fiches. Chaque fiche représente un type d'opération CEE (ex : BAR-TH-171, RES-EC-104).
Champs principaux
- Numéro : identifiant unique de la fiche (ex :
BAR-TH-171). - Libellé : description lisible.
- Code prestation : associe la fiche à un code prestation pour la résolution automatique depuis la référence de lot.
- Modèle PP / PM : modèle de synthèse à utiliser pour chaque type (particuliers / professionnels).
- Modèle PP 100% / PM 100% : modèles dédiés aux synthèses 100% (si éligible).
- Automatique : si coché, les compteurs sont validés automatiquement sans intervention. Si décoché, le job passe en
pending_reviewpour validation manuelle. - Analyse PDF : si coché, les rapports PDF des missions sont téléchargés depuis SharePoint et analysés pour en extraire des données (voir section Extraction PDF).
- Éligible 100% : si coché, la fiche est disponible pour les synthèses en mode 100%.
- ⚠ Configuration non terminée : à cocher tant que la fiche n'est pas pleinement configurée (mapping incomplet, fiche en cours de mise au point, modèle en test...). La fiche apparaît alors en surbrillance jaune avec un picto ⚠ dans la liste, et toute synthèse générée sur cette fiche ajoute un avertissement (visible dans l'historique et dans le champ
warningsde la réponse API publique) : « La configuration de la synthèse pour cette fiche n'est pas terminée. Vérifier le contenu des fichiers générés. » À décocher quand la fiche est validée.
Versions de fiches
Chaque fiche peut avoir plusieurs versions avec des dates de début et fin. Le système sélectionne automatiquement la bonne version en fonction de la date d'engagement ou d'intégration du lot. Chaque version peut pointer vers un modèle de synthèse différent.
Résolution automatique
Lors de la génération, la fiche est identifiée automatiquement depuis les informations SharePoint du lot (champ fiche_cee), ou à défaut par parsing du code prestation dans la référence de lot.
Clients (donneurs d'ordre)
L'onglet Clients permet de gérer une liste de clients (donneurs d'ordre).
Saisie
Le nom d'un client doit correspondre exactement au champ Client de la liste SharePoint « Liste des commandes », tel qu'il est dans SharePoint, parenthèse comprise (ex : EDF (Marché des Particuliers)). Sensible à la casse, espaces inclus.
Synthèse avec KPI
Si la coche Synthèse avec KPI est activée, toute synthèse PDF générée pour un lot dont le client correspond à ce nom recevra une 2e page « KPI », à condition que le modèle de synthèse de la fiche ait un mapping KPI configuré (page Mappings KPI). La 2e page contient :
- Le nombre de contrôles réalisés dans le lot
- Un camembert avec la répartition des conclusions (Satisfaisant / Non satisfaisant / Non vérifiable)
- Un camembert avec les points Non satisfaisants observés sur les missions du lot
Si le client n'est pas dans la liste OU n'est pas marqué « Synthèse avec KPI » OU si le modèle n'a pas de mapping KPI rattaché (principal ou secondaire) → pas de 2e page (synthèse PDF inchangée).
Modèles secondaires d'un Mapping KPI
Un mapping KPI est rattaché à un modèle principal (celui qui définit la structure des références de colonnes utilisées dans les points KPI). Mais on peut aussi déclarer des modèles secondaires dans l'éditeur de mapping (page Mappings KPI) — typiquement le modèle PM jumeau du PP.
Cas d'usage : les champs Kizeo sont identiques entre PP et PM, donc le paramétrage KPI est strictement le même. Plutôt que de dupliquer le mapping pour le PM, on liste simplement le modèle PM comme secondaire. Au moment de générer la synthèse d'un lot PM : si le modèle PM est listé comme secondaire d'un KpiMapping, le pipeline relance une 2e passe d'évaluation interne avec le modèle principal (PP) pour produire les compteurs KPI compatibles. Coût : ~1-2 s de calcul supplémentaire, invisible pour l'utilisateur.
Sur la page Fiches CEE, un petit picto histogramme à côté du numéro indique la couverture KPI :
- Vert : tous les modèles rattachés à la fiche (principaux PP/PM + 100% + versions) sont rattachés à un mapping KPI.
- Jaune : certains modèles seulement ont une couverture KPI.
- Pas de picto : aucun mapping KPI ne couvre les modèles de cette fiche.
Modèles de synthèse
Les modèles définissent la structure du fichier Excel de synthèse. Ils sont gérés dans l'onglet Modèles.
Colonnes de sortie
Chaque modèle contient une liste ordonnée de colonnes. Pour chaque colonne :
- Position : numéro de la colonne dans l'Excel (A=0, B=1...). Laisser vide pour une colonne intermédiaire (calcul interne, non affichée).
- Label : en-tête de la colonne dans l'Excel.
- Format :
texte(défaut),nombre,entier, etc. Détermine le formatage dans l'Excel. - Couleur en-tête : couleur de fond de l'en-tête (format
#RRGGBB).
Colonnes intermédiaires
Les colonnes intermédiaires n'ont pas de position Excel : elles servent uniquement aux calculs internes. Elles sont référencées dans les formules via @{Label}. Utile pour stocker des résultats intermédiaires réutilisés par d'autres formules.
Source de données (mapping)
Chaque colonne est associée à une source de données qui détermine d'où vient la valeur :
| Source | Description | Valeur source |
|---|---|---|
command_file | Fichier commande (Excel SharePoint) | Nom exact de la colonne |
kizeo | Formulaire Kizeo inspection | Nom du champ Kizeo |
kizeo_cpc | Formulaire Kizeo CPC | Nom du champ CPC |
sharepoint_list | Liste SharePoint du lot | Nom du champ SharePoint |
rapport_pdf | Données extraites du PDF | Clé normalisée du pattern ($PDF.cle) |
formula | Formule calculée | Expression (voir section Formules) |
Colonne conditionnelle
Une colonne peut être conditionnelle : sa valeur n'est affichée que si la colonne référencée dans condition_col_label vaut "Oui". Sinon, la cellule reste vide.
Bouton Tester
Le bouton Tester le mapping dans l'éditeur de modèle permet de tester une référence de mission. Il applique le même pipeline de mapping et de validation que la génération réelle, et affiche le résultat colonne par colonne avec un code couleur (valeur trouvée, vide, erreur).
Formules
Les formules permettent de calculer des valeurs à partir des données sources et d'autres colonnes. Elles sont saisies dans le champ "Valeur source" lorsque le type de source est formula.
Références aux données sources
| Référence | Source | Exemple |
|---|---|---|
$CMD.champ | Fichier commande | $CMD.Code postal |
$KIZ.champ | Kizeo inspection | $KIZ.mission_realisable |
$KIZ_CPC.champ ou $CPC.champ | Kizeo CPC | $KIZ_CPC.conclusion_generale |
$SP.champ | Liste SharePoint | $SP.Statut |
$PDF.champ | Rapport PDF extrait | $PDF.Zone_climatique |
$KIZL.champ | Kizeo (label du champ) | $KIZL.type_isolant |
#A, #B, #C... | Colonne de sortie par lettre | #A = 1re colonne non-intermédiaire |
@{Label} | Colonne intermédiaire par label | @{Surface totale} |
Fonctions disponibles
| Fonction | Description |
|---|---|
IF(cond; vrai; faux) | Condition simple |
IFS(c1; v1; c2; v2; ...) | Conditions multiples (1re vraie retenue) |
AND(a; b) / OR(a; b) / NOT(a) | Opérateurs logiques |
UPPER / LOWER / TRIM | Manipulation de texte |
LEFT(t; n) / RIGHT(t; n) / MID(t; d; l) | Extraction de sous-chaîne |
LEN(texte) | Longueur du texte |
SEARCH(cherche; dans) | Position de cherche dans dans (1-based), insensible à la casse ; 0 si non trouvé. Aligné sur Excel. |
FIND(cherche; dans) | Position de cherche dans dans (1-based), sensible à la casse ; 0 si non trouvé. Aligné sur Excel. |
REPLACE(t; ancien; nouveau) | Remplace dans le texte |
CONCAT(a; b; ...) | Concaténation |
COALESCE(a; b; ...) | 1re valeur non-vide |
ABS / INT / MOD / ROUND | Fonctions numériques |
MIN(a; b) / MAX(a; b) | Minimum / maximum |
TEXT(nombre; format) | Formatage numérique |
ISNUMBER(val) / ISBLANK(val) | Tests de type |
ZONE_CLIMATIQUE(cp) | Déduit H1/H2/H3 depuis un code postal |
CHAR(code) | Caractère ASCII |
DATE_EST_POSTERIEURE_A(date; date_ref) | Vrai si date ≥ date_ref (inclusif). Gère texte, serial Excel et dates réelles ; faux si une date est vide/illisible. |
Opérateurs de comparaison
=, != (ou <>), <, >, <=, >=
Le séparateur d'arguments peut être le point-virgule ; ou la virgule ,.
Évaluation itérative
Les formules sont évaluées en 2 phases :
- Phase 1 : toutes les valeurs brutes (non-formules) sont renseignées.
- Phase 2 : les formules sont évaluées en boucle (jusqu'à 10 itérations) jusqu'à stabilisation. Cela permet à une formule de référencer le résultat d'une autre formule, même si celle-ci est définie plus bas dans le modèle.
Validation de données et extraction PDF
Types de validation
Chaque colonne du modèle peut avoir un type de validation optionnel :
- Entier : la valeur doit être un nombre entier.
- Décimal : la valeur doit être un nombre décimal.
- Liste de valeurs : la valeur doit faire partie d'une liste prédéfinie (saisie ligne par ligne dans le paramètre de validation).
Saisie libre auth. — sous le sélecteur de type de validation, un toggle permet d'autoriser l'utilisateur à forcer une valeur hors contrainte lors de la validation PDF manuelle (coche Forcer la saisie dans la modale). Désactivé par défaut sur tous les mappings existants. À activer uniquement sur les colonnes où l'utilisateur doit pouvoir écrire une valeur libre (ex : mention spéciale, cas non prévu).
Source « Saisie manuelle »
Dans le mapping, la source Saisie manuelle signifie que la colonne n'a aucune source automatique : elle est toujours demandée à l'utilisateur lors de l'étape de validation manuelle (comme un champ PDF non trouvé).
- Pas de valeur source à renseigner dans le mapping.
- Validation de données (Entier / Décimal / Liste de valeurs) paramétrable normalement, ainsi que Saisie libre auth..
- Condition Si # = Oui respectée : si la condition n'est pas remplie, la valeur reste vide et aucune saisie n'est demandée.
- Déclenche l'étape de validation manuelle même sur une fiche sans Analyse PDF. Dans ce cas, la modale ne montre pas le panneau PDF à droite.
- Sur une fiche avec Analyse PDF, le rapport PDF reste affiché à côté (sans surlignage pour les colonnes Saisie manuelle).
Extraction PDF
Lorsque Analyse PDF est activée sur la fiche, les rapports PDF de chaque mission sont téléchargés depuis SharePoint et analysés automatiquement.
La configuration des patterns d'extraction se fait dans l'onglet PDF Templates. Pour chaque pattern :
- Texte du pattern : le texte à rechercher dans le PDF (en-tête de colonne, label...).
- Label : clé de stockage pour la valeur extraite. Utilisée pour la référence
$PDF.cledans les formules (normalisée automatiquement : espaces →_, caractères spéciaux supprimés). - Position :
right: 1re cellule non-vide à droite du pattern.below: cellule en dessous du pattern.checkboxes: collecte les cases cochées à droite du pattern (gère les cellules fusionnées et les lignes de continuation multi-lignes). Symboles reconnus : ☑ ☒ ✓ ✗ [x].
Smart cleaning (nettoyage intelligent)
Lorsqu'une colonne a une validation liste de valeurs, le système cherche automatiquement les valeurs autorisées dans le texte extrait du PDF :
- Si 1 seule valeur trouvée → retenue automatiquement.
- Si 2+ valeurs trouvées (ambiguïté) → la valeur brute est conservée et une validation manuelle est demandée.
- Les sous-chaînes sont éliminées intelligemment : si "Non vérifiable" est trouvé, "Non" seul n'est pas compté comme une correspondance indépendante.
Endpoint de debug PDF
L'endpoint GET /api/generation/debug-pdf/{ref_mission} permet de visualiser les tables brutes et le texte extrait par pdfplumber pour une mission donnée. Utile pour diagnostiquer les problèmes d'extraction (structure des tables, caractères spéciaux, colonnes vides).
Compteurs statistiques
Définition globale
Les compteurs sont définis globalement dans l'onglet Compteurs. Chaque compteur a :
- Clé : identifiant unique utilisé comme balise dans le PDF (ex :
nb_operations,nb_cpc). - Label : libellé affiché dans la modale de validation et dans le PDF.
- Ordre : position d'affichage.
Association aux modèles
Dans l'éditeur de modèle, chaque compteur peut être associé à une condition de comptage :
- Référence colonne : colonne de sortie à évaluer (ex :
#A). - Opérateur :
eq(égal),ne(différent),gt(supérieur),lt(inférieur)... - Valeur : valeur de comparaison.
- Conditions alternatives (OU) : liste JSON de conditions supplémentaires. Une ligne est comptée si au moins une condition est remplie.
Un compteur sans condition compte toutes les lignes (utilisé pour nb_operations qui remplace l'ancien nb_total).
API publique
Authentification
Toutes les requêtes API nécessitent un token Bearer dans le header Authorization :
Authorization: Bearer votre-token-api
Les tokens sont créés et gérés dans l'onglet Tokens API. Chaque token a un nom, une date d'expiration optionnelle, et peut être révoqué à tout moment.
Endpoints disponibles
| Méthode | Endpoint | Description |
|---|---|---|
POST | /public-api/generation | Génération synchrone (sans upload SP) |
POST | /public-api/generation/with-sharepoint | Génération + upload SharePoint auto |
POST | /public-api/generation/100pct | Génération 100% par missions |
POST | /public-api/generation/100pct/with-sharepoint | Génération 100% + upload SP |
POST | /public-api/generation/{id}/save-sharepoint | Upload SP manuel d'un job existant |
GET | /public-api/generation/{id}/download/excel | Télécharger le fichier Excel |
GET | /public-api/generation/{id}/download/pdf | Télécharger le fichier PDF |
Corps de requête (génération standard)
{
"lot_reference": "20260303-07-DIVERS-INS-EDF",
"user": "prenom.nom@spekty.fr",
"output_filename": "REF-CLIENT-1234"
}
output_filename (optionnel) : si renseigné, les fichiers produits sont nommés Synthèse-<output_filename>.pdf et Synthèse-<output_filename>.xlsx au lieu du format par défaut Synthèse-<lot_reference> <fiche_numero>.<ext>. Le nom uploadé sur SharePoint suit le nom local. Sans effet sur le contenu des fichiers. S'applique aux endpoints /generation et /generation/with-sharepoint. Cette option n'est pas disponible via l'interface web. Les caractères interdits dans les noms de fichiers Windows/SharePoint (\ / : * ? " < > |) sont automatiquement remplacés par _.
Corps de requête (génération 100%)
{
"mission_references": ["REF-001", "REF-002"],
"fiche_numero": "BAR-TH-171",
"type_pp_pm": "PP",
"output_filename": "Ma synthese",
"user": "prenom.nom@spekty.fr"
}
Réponse type
{
"status": "completed",
"job_id": 123,
"warnings": [],
"excel_download_url": "/public-api/generation/123/download/excel",
"pdf_download_url": "/public-api/generation/123/download/pdf",
"sharepoint_excel_url": "https://...",
"sharepoint_pdf_url": "https://..."
}
Timeout et erreurs
Le timeout des requêtes API est de 5 minutes (300 secondes). En cas de timeout serveur Kizeo (erreur 504), le message d'erreur indique s'il s'agit du formulaire d'inspection ou CPC, et recommande de réessayer dans quelques minutes.
KPI (admin)
L'outil KPI est une fonctionnalité annexe à la génération de synthèses. Il permet d'extraire un fichier Excel décomptant les opérations Non satisfaisantes par point KPI configuré, sur un périmètre filtré (clients, fiches CEE, période).
Pré-requis
- Un Mapping KPI doit être configuré sur le modèle de synthèse de chaque fiche concernée (page Mappings KPI).
- Les configurations existantes (clients, fiches, modèles, formulaires Kizeo, mappings de synthèse) sont réutilisées telles quelles. Aucune modification n'est nécessaire dans les paramétrages existants.
Lancer une analyse
- Aller dans l'onglet KPI.
- Saisir un ou plusieurs clients (un par ligne, ou séparés par
,/;). Doit correspondre exactement au champClientde la liste SharePoint Liste des contrôles. - Sélectionner une ou plusieurs fiches CEE.
- Renseigner les dates de début et de fin. Les missions retenues seront celles dont la
DateSharePoint est dans cet intervalle. - Cliquer sur Lancer l'analyse KPI. Le job s'exécute en arrière-plan, l'historique se met à jour automatiquement.
Filtrage des missions
Les missions sont identifiées sur la liste SharePoint Liste des contrôles selon les critères :
Statut= TerminéClient∈ liste saisieFiche_CEE∈ fiches sélectionnéesDate∈ intervalle [date_debut, date_fin]
Choix du modèle et du mapping par lot
La résolution se fait par lot, à la date d'intégration du lot (les 8 premiers caractères AAAAMMJJ de la référence). Pour chaque lot :
- on prend le modèle de la FicheVersion active à cette date (PP en priorité, sinon PM) ;
- on cherche le mapping KPI où ce modèle est principal ; sinon où il est secondaire (dans ce cas l'évaluation se fait avec le modèle principal du mapping, comme pour la 2e page de synthèse) ;
- si ce modèle n'est rattaché à aucun mapping, on remonte vers les versions plus récentes jusqu'à en trouver un ;
- si aucun modèle (sur toutes les versions) n'a de mapping, les données du lot sont ignorées avec un avertissement.
Ainsi, sur une période à cheval sur un changement de modèle (frontière par date d'intégration), chaque lot est compté avec le bon mapping. Les comptages sont ensuite agrégés par libellé de point KPI au niveau de la fiche (même libellé entre deux modèles → additionné). Les modèles 100% sont exclus.
Limitation : seules les frontières par date d'intégration sont gérées. Pour une fiche dont les versions basculent par date d'engagement, l'outil en lot ne dispose pas de cette date (il ne lit pas les fichiers commande) et utilise la date d'intégration comme approximation.
Récupération des données
- Seules les données Kizeo inspection sont récupérées (pas de CPC, pas de fichier commande, pas de PDF).
- Multi-formulaires implicite : tous les formulaires Kizeo inspection du code prestation sont interrogés (sans filtre date), comme en mode "Multi-formulaires Kizeo".
- En cas de doublons Kizeo : même logique que pour la synthèse, mais lorsqu'un blocage serait déclenché, on prend la donnée la plus récente (
create_time). - Les colonnes du modèle dont la source est Fichier commande, Liste SharePoint, Rapport PDF, Saisie manuelle ou Kizeo CPC sont évaluées comme vides (non utilisées par l'outil KPI).
Mappings KPI
Onglet Mappings KPI. Un mapping est rattaché à un modèle principal (qui définit la structure des références de colonnes utilisées dans les points), et éventuellement à un ou plusieurs modèles secondaires.
Chaque mapping contient une liste ordonnée de points Non satisfaisant. Pour chaque point :
- Libellé : nom du point (ex: "RDV non honoré").
- Catégorie : à choisir parmi Documentaire, Eligibilité, Paramètre de la prime, Non qualité manifeste.
- Condition principale : colonne du modèle + opérateur + valeur.
- Conditions OU : 0 à N conditions supplémentaires. Si la principale OU une condition OU matche, l'opération est comptée.
Opérateurs disponibles : égal, différent, contient, commence par, vide, non vide.
Modèles secondaires (rattachements multiples)
Un mapping KPI peut être appliqué à plusieurs modèles de synthèse via la liste de modèles secondaires. Cas d'usage typique : un modèle ... PP et son jumeau ... PM partagent les mêmes champs Kizeo, donc le paramétrage KPI est identique. Plutôt que de dupliquer le mapping, on rattache le modèle PM en secondaire du mapping principal PP.
Dans l'éditeur, sous le nom du mapping, la zone Modèles secondaires liste les rattachements actuels sous forme de chips. Pour en ajouter un, cliquer sur + Rattacher un modèle secondaire : une modale propose le sous-ensemble des modèles disponibles. Pour en retirer un, cliquer sur le × du chip correspondant.
Règle d'unicité : un modèle ne peut être rattaché qu'à un seul mapping à la fois, en principal ou en secondaire. Conséquences :
- Les modèles déjà rattachés ailleurs ne sont pas proposés dans la modale + Rattacher.
- À la création d'un mapping, si le modèle principal choisi est actuellement secondaire d'un autre mapping, une confirmation est demandée. Si elle est acceptée, le modèle est automatiquement détaché de l'ancien mapping puis devient le principal du nouveau.
- Si le modèle principal choisi est déjà principal d'un autre mapping, la création est refusée (il faut d'abord supprimer ou renommer l'ancien).
À l'exécution sur un lot dont le modèle de synthèse est un secondaire : le pipeline relance une 2e passe d'évaluation en interne avec le modèle principal, afin que les références de colonnes du mapping (qui suivent la structure du principal) trouvent leurs valeurs. Coût ~1-2 s, invisible pour l'utilisateur.
Format du fichier Excel de sortie
| Col | Contenu |
|---|---|
| A | Fiche CEE |
| B | Catégorie |
| C | Libellé du point Non satisfaisant |
| D | Nombre d'opérations Non satisfaisantes |
Une ligne par couple (fiche CEE × point KPI), y compris les compteurs à 0. À droite des données, un tableau cumul par catégorie + un camembert de répartition.
Non interférence avec la synthèse
Cette fonctionnalité n'a aucun impact sur la génération de synthèses : pas de modification du pipeline existant, pas de modification des mappings de colonnes, des modèles, des fiches ou des formulaires Kizeo.
Paramètres globaux
Les paramètres globaux sont configurés en haut de cette page :
- Token API Kizeo : token d'authentification pour l'API Kizeo Forms. Utilisé pour récupérer les données des formulaires d'inspection et CPC.
- URL site SharePoint : URL du site SharePoint contenant les fichiers de commande, les rapports PDF et les listes de contrôles.
- Chemin fichier commande : chemin relatif dans SharePoint vers le dossier contenant les fichiers de commande (ex :
Documents partagés/Commandes). - ID liste des contrôles : identifiant de la liste SharePoint utilisée pour lire les infos du lot et des missions.
- Client ID SharePoint (Azure) : identifiant de l'application Azure AD utilisée pour l'authentification SharePoint.
- Client Secret SharePoint : secret de l'application Azure AD.
Le webhook Power Automate est configuré via une variable d'environnement serveur (POWER_AUTOMATE_WEBHOOK_URL), non modifiable depuis l'interface.
Nettoyage automatique
Les jobs de plus de 7 jours sont automatiquement supprimés (fichiers Excel/PDF et entrées en base), ainsi que les tokens API révoqués.
Aide
Compteurs de synthèse
Ces compteurs servent de balises dans la synthèse PDF. Ils sont partagés par tous les modèles.
| # | Cle (balise) | Label | Actions |
|---|
Aucun compteur configuré.
Taux réglementaires
Taux de contrôle réglementaires par fiche CEE et période. Le Type de lot d'un lot SharePoint est comparé au Libellé pour déterminer les taux cibles.
Comment les taux sont sélectionnés à la génération
1. Match par libellé (cas nominal) — Le Type_de_lot du lot SharePoint est comparé (insensible à la casse) à Libellé (mode standard) ou aux Libellé PP / Libellé PM (mode distinct PP/PM) de toutes les lignes de la fiche. Le premier match détermine les taux à appliquer.
2. Fallback par date d'engagement — Si aucun libellé ne matche, on cherche la ligne dont la période [date_debut ; date_fin] inclut la date d'engagement max des opérations du lot. Si plusieurs lignes matchent, on prend celle avec date_debut le plus récent. Sur une ligne distincte PP/PM, la paire PP ou PM est choisie selon le type_pp_pm du lot.
3. Aucun match — Le taux_cible SharePoint est conservé tel quel et taux_cpc_cible reste vide.
Distincts PP/PM : une ligne peut porter des libellés + taux distincts pour PP et PM. À l'affichage, elle est découpée en 2 lignes (badge PP / PM) partageant fiche et dates. La configuration se fait dans l'outil Intégrations.
| Fiche | Date début | Date fin | Libellé | Taux site | Taux CPC |
|---|
Aucun taux disponible (vérifiez le token API Intégrations dans Paramètres).
Clients
Liste des clients (donneurs d'ordre). Le flag Synthèse avec KPI active une 2e page « KPI » dans le PDF de synthèse, à condition que le modèle de synthèse de la fiche ait un mapping KPI rattaché.
Le nom doit correspondre exactement au champ Client SharePoint du lot, parenthèse comprise (ex : EDF (Marché des Particuliers)). Sensible à la casse.
| Nom | Synthèse avec KPI | Actions |
|---|
Aucun client configuré.
Templates PDF
Configurez les templates Excel utilisés pour générer les PDF de synthèse.
Placez des balises {{tag}} dans les cellules Excel.
Les pourcentages peuvent être des formules Excel natives (ex: =IFERROR(E26/E21,0)).
Templates disponibles
| Template | Description | Règles de sélection | Fichier | Actions |
|---|
Balises disponibles
Cliquez sur une balise pour la copier. Collez-la dans les cellules de vos fichiers Excel.
| Balise | Description | Source |
|---|
Gestion des utilisateurs
| Nom | Rôle | Accès KPI | Dernière connexion | Créé le | Actions |
|---|
Aucun utilisateur.