@open3cl/engine 1.3.24 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import enums from './enums.js';
2
2
  import { mois_liste, tv } from './utils.js';
3
3
  import tvs from './tv.js';
4
+ import { COEFF_EP_1_9, COEFF_EP_2_3 } from './conso.js';
4
5
 
5
6
  export class ProductionENR {
6
7
  #taplpi = {
@@ -19,7 +20,7 @@ export class ProductionENR {
19
20
  * @param productionElecEnr
20
21
  * @param Sh {string}
21
22
  */
22
- calculateEnr(productionElecEnr, conso, Sh, th, zc_id) {
23
+ calculateEnr(productionElecEnr, conso, Sh, th, zc_id, use_coeff_ch_elec_2_3) {
23
24
  const productionElectricite = {
24
25
  conso_elec_ac: 0,
25
26
  production_pv: 0,
@@ -40,8 +41,11 @@ export class ProductionENR {
40
41
  // Calcul de l'électricité auto-consommée pour chaque enveloppe
41
42
  this.calculateConsoElecAc(productionElectricite, productionElecEnr, conso, zc_id, th, Sh);
42
43
 
43
- // Mise à jour des consommations ef en minorant l'énergie consommée par l'énergie autoconsommée par le poste
44
+ // Mise à jour des consommations d'énergie finale en minorant l'énergie consommée par l'énergie autoconsommée par le poste
44
45
  this.updateEfConso(productionElectricite, conso, Sh);
46
+
47
+ // Mise à jour des consommations d'énergie primaire en minorant l'énergie consommée par l'énergie autoconsommée par le poste
48
+ this.updateEPConso(productionElectricite, conso, Sh, use_coeff_ch_elec_2_3);
45
49
  }
46
50
 
47
51
  return {
@@ -150,7 +154,7 @@ export class ProductionENR {
150
154
  }
151
155
 
152
156
  /**
153
- * Mise à jour des consommations ef en minorant l'énergie consommée par l'énergie autoconsommée par chaque enveloppe
157
+ * Mise à jour des consommations ef en minorant l'énergie finale consommée par l'énergie autoconsommée par chaque enveloppe
154
158
  * @param productionElectricite
155
159
  * @param conso
156
160
  * @param Sh
@@ -172,6 +176,55 @@ export class ProductionENR {
172
176
  conso.ef_conso.conso_5_usages_m2 = Math.floor(conso.ef_conso.conso_5_usages / Sh);
173
177
  }
174
178
 
179
+ /**
180
+ * Mise à jour des consommations ef en minorant l'énergie primaire consommée par l'énergie autoconsommée par chaque enveloppe
181
+ * @param productionElectricite
182
+ * @param conso {{ep_conso: Ep_conso}}
183
+ * @param Sh {number}
184
+ * @param use_coeff_ch_elec_2_3 {boolean} "true" pour ne pas utiliser le dernier coeff de chauffage électrique
185
+ */
186
+ updateEPConso(productionElectricite, conso, Sh, use_coeff_ch_elec_2_3) {
187
+ if (use_coeff_ch_elec_2_3) {
188
+ conso.ep_conso.ep_conso_ecs -= COEFF_EP_2_3 * productionElectricite.conso_elec_ac_ecs;
189
+ conso.ep_conso.ep_conso_ch -= COEFF_EP_2_3 * productionElectricite.conso_elec_ac_ch;
190
+ conso.ep_conso.ep_conso_fr -= COEFF_EP_2_3 * productionElectricite.conso_elec_ac_fr;
191
+ conso.ep_conso.ep_conso_eclairage -=
192
+ COEFF_EP_2_3 * productionElectricite.conso_elec_ac_eclairage;
193
+ conso.ep_conso.ep_conso_totale_auxiliaire -=
194
+ COEFF_EP_2_3 * productionElectricite.conso_elec_ac_auxiliaire;
195
+
196
+ const conso_elec =
197
+ productionElectricite.conso_elec_ac_ecs +
198
+ productionElectricite.conso_elec_ac_ch +
199
+ productionElectricite.conso_elec_ac_fr +
200
+ productionElectricite.conso_elec_ac_eclairage +
201
+ productionElectricite.conso_elec_ac_auxiliaire;
202
+
203
+ conso.ep_conso.ep_conso_5_usages -= COEFF_EP_2_3 * conso_elec;
204
+
205
+ conso.ep_conso.ep_conso_5_usages_m2 = Math.floor(conso.ep_conso.ep_conso_5_usages / Sh);
206
+ } else {
207
+ conso.ep_conso.ep_conso_ecs -= COEFF_EP_1_9 * productionElectricite.conso_elec_ac_ecs;
208
+ conso.ep_conso.ep_conso_ch -= COEFF_EP_1_9 * productionElectricite.conso_elec_ac_ch;
209
+ conso.ep_conso.ep_conso_fr -= COEFF_EP_1_9 * productionElectricite.conso_elec_ac_fr;
210
+ conso.ep_conso.ep_conso_eclairage -=
211
+ COEFF_EP_1_9 * productionElectricite.conso_elec_ac_eclairage;
212
+ conso.ep_conso.ep_conso_totale_auxiliaire -=
213
+ COEFF_EP_1_9 * productionElectricite.conso_elec_ac_auxiliaire;
214
+
215
+ const conso_elec =
216
+ productionElectricite.conso_elec_ac_ecs +
217
+ productionElectricite.conso_elec_ac_ch +
218
+ productionElectricite.conso_elec_ac_fr +
219
+ productionElectricite.conso_elec_ac_eclairage +
220
+ productionElectricite.conso_elec_ac_auxiliaire;
221
+
222
+ conso.ep_conso.ep_conso_5_usages -= COEFF_EP_1_9 * conso_elec;
223
+
224
+ conso.ep_conso.ep_conso_5_usages_m2 = Math.floor(conso.ep_conso.ep_conso_5_usages / Sh);
225
+ }
226
+ }
227
+
175
228
  /**
176
229
  * Calcul des taux d'autoproduction consommés pour chaque enveloppe
177
230
  * @param efConso {Ef_conso}
package/README.md CHANGED
@@ -71,11 +71,14 @@ Vous devez d'abord installer [NodeJS](https://nodejs.org/en) en version 20 ou su
71
71
  npm install @open3cl/engine
72
72
  ```
73
73
 
74
- ### Documentation
74
+ ## Démonstration
75
75
 
76
- Lien à faire vers les wiki
76
+ Il est possible d'analyser un dpe pour tester la lib
77
+ Open3CL: [https://open3cl.github.io/engine](https://open3cl.github.io/engine/build/).
78
+ Un dpe au format XML peut être chargé, il sera envoyé à la lib Open3CL. Un visuel permet de voir les informations
79
+ du dpe d'origine ainsi que du dpe en sortie de la lib ainsi qu'un différentiel.
77
80
 
78
- <p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
81
+ C'est un bon moyen de détecter un éventuel problème dans le dpe ou la librairie.
79
82
 
80
83
  ## Utilisation
81
84
 
@@ -180,6 +183,8 @@ Il existe actuellement 8 corpus (avec 10000 dpe analysés dans chaque corpus) :
180
183
  Par défaut, le corpus utilisé est présent ici : [test/corpus/corpus_dpe.csv](test/corpus/files/corpus_dpe.csv)
181
184
  - `npm run test:corpus -- dpes-folder-path=/home/user/dpes`. Chemin vers le dossier ou les DPE seront téléchargés. Si un
182
185
  fichier DPE est déjà présent dans ce dossier, il ne sera pas retéléchargé.
186
+ - `npm run test:corpus -- dpes-code=2592E1233185X`. Execution du corpus sur le dpe spécifié.
187
+ - Si le dpe n'est pas présent en local, il sera téléchargé sur le site de l'ADEME.
183
188
 
184
189
  ### Résultats corpus
185
190
 
@@ -188,78 +193,86 @@ Résultats des tests de corpus avec le mode de compatibilité activé.
188
193
  <details>
189
194
  <summary>Voir les versions précédents</summary>
190
195
 
191
- | Version librairie | corpus | Nb en dessous du taux d'erreur | Taux de réussite | Description | Détail des valeurs |
192
- | :------------------- | ------------------------------------- | ------------------------------ | ----------------------- | ------------------------------------------------- | ------------------ |
193
- | <ins>**1.2.3**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4489**<ins> | <ins>**45%**<ins> | | |
194
- | 1.2.3 | dpe_immeuble_chauffage_individuel.csv | 3257 | 32% | | |
195
- | 1.2.3 | dpe_immeuble_chauffage_collectif.csv | 5279 | 53% | | |
196
- | 1.2.3 | dpe_immeuble_chauffage_mixte.csv | 2728 | 27% | | |
197
- | <ins>**1.2.8**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**489**<ins> | <ins>**45%**<ins> | | |
198
- | 1.2.8 | dpe_immeuble_chauffage_individuel.csv | 5275 (+2018) | 53% (+21%) | | |
199
- | 1.2.8 | dpe_immeuble_chauffage_collectif.csv | 5747 (+468) | 57% (+4%) | | |
200
- | 1.2.8 | dpe_immeuble_chauffage_mixte.csv | 3142 (+414) | 31% (+4%) | | |
201
- | <ins>**1.3.1**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4508 (+19)**<ins> | <ins>**45%**<ins> | | |
202
- | 1.3.1 | dpe_immeuble_chauffage_individuel.csv | 5459 (+184) | 55% (+2%) | | |
203
- | 1.3.1 | dpe_immeuble_chauffage_collectif.csv | 5848 (+101) | 58% (+1%) | | |
204
- | 1.3.1 | dpe_immeuble_chauffage_mixte.csv | 4018 (+876) | 40% (+9%) | | |
205
- | <ins>**1.3.2**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4519 (+11)**<ins> | <ins>**45%**<ins> | | |
206
- | 1.3.2 | dpe_immeuble_chauffage_individuel.csv | 5476 (+17) | 55% | | |
207
- | 1.3.2 | dpe_immeuble_chauffage_collectif.csv | 5869 (+21) | 58% | | |
208
- | 1.3.2 | dpe_immeuble_chauffage_mixte.csv | 4040 (+22) | 40% | | |
209
- | <ins>**1.3.5**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522 (+3)**<ins> | <ins>**45%**<ins> | | |
210
- | 1.3.5 | dpe_immeuble_chauffage_individuel.csv | 5488 (+12) | 55% | |
211
- | 1.3.5 | dpe_immeuble_chauffage_collectif.csv | 5869 | 58% | | |
212
- | 1.3.5 | dpe_immeuble_chauffage_mixte.csv | 4082 (+42) | 40% | | |
213
- | <ins>**1.3.6**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522**<ins> | <ins>**45%**<ins> | | |
214
- | 1.3.6 | dpe_immeuble_chauffage_individuel.csv | 5650 (+162) | 56% | | |
215
- | 1.3.6 | dpe_immeuble_chauffage_collectif.csv | 5894 (+25) | 59% (+1%) | | |
216
- | 1.3.6 | dpe_immeuble_chauffage_mixte.csv | 4141 (+59) | 41% (+1%) | | |
217
- | <ins>**1.3.7**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522**<ins> | <ins>**45%**<ins> | | |
218
- | 1.3.7 | dpe_immeuble_chauffage_individuel.csv | 6960 (+1310) | 69% (+13%) | | |
219
- | 1.3.7 | dpe_immeuble_chauffage_collectif.csv | 6106 (+212) | 61% (+2%) | | |
220
- | 1.3.7 | dpe_immeuble_chauffage_mixte.csv | 4730 (+589) | 47% (+6%) | | |
221
- | <ins>**1.3.8**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522**<ins> | <ins>**45%**<ins> | | |
222
- | 1.3.8 | dpe_immeuble_chauffage_individuel.csv | 6965 (+5) | 69% | | |
223
- | 1.3.8 | dpe_immeuble_chauffage_collectif.csv | 6110 (+4) | 61% | | |
224
- | 1.3.8 | dpe_immeuble_chauffage_mixte.csv | 4735 (+5) | 47% | | |
225
- | <ins>**1.3.9**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4460**<ins> (-62) | <ins>**44% (-1%)**<ins> | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
226
- | 1.3.9 | dpe_immeuble_chauffage_individuel.csv | 6901 (-64) | 69% | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
227
- | 1.3.9 | dpe_immeuble_chauffage_collectif.csv | 6058 (-58) | 60% (-1%) | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
228
- | 1.3.9 | dpe_immeuble_chauffage_mixte.csv | 4728 (-7) | 47% | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
229
- | <ins>**1.3.11**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4468**<ins> (+8) | <ins>**44%**<ins> | | |
230
- | 1.3.11 | dpe_immeuble_chauffage_individuel.csv | 6901 | 69% | | |
231
- | 1.3.11 | dpe_immeuble_chauffage_collectif.csv | 6058 | 60% | | |
232
- | 1.3.11 | dpe_immeuble_chauffage_mixte.csv | 4727 (-1) | 47% | Dpes erronés sur le calcul volume ballon ecs | |
233
- | <ins>**1.3.12**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4467**<ins> (-1) | <ins>**44%**<ins> | Dpe erroné avec surface chauffée invalide | |
234
- | 1.3.12 | dpe_logement_individuel_2025.csv | 8429 | 84% | | |
235
- | 1.3.12 | dpe_immeuble_chauffage_individuel.csv | 6900 (-1) | 69% | Dpe erroné avec surface chauffée invalide | |
236
- | 1.3.12 | dpe_immeuble_chauffage_collectif.csv | 6058 | 60% | | |
237
- | 1.3.12 | dpe_immeuble_chauffage_mixte.csv | 4725 (-2) | 47% | Dpe erroné avec surface chauffée invalide | |
238
- | <ins>**1.3.15**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4481**<ins> (+14) | <ins>**45 (+1%)**<ins> | | |
239
- | 1.3.15 | dpe_logement_individuel_2025.csv | 8453 | 84% | | |
240
- | 1.3.15 | dpe_immeuble_chauffage_individuel.csv | 7106 (+205) | 71% (+2%) | | |
241
- | 1.3.15 | dpe_immeuble_chauffage_collectif.csv | 6083 (+25) | 61% (+1%) | | |
242
- | 1.3.15 | dpe_immeuble_chauffage_mixte.csv | 4751 (+24) | 47% | | |
196
+ | Version librairie | corpus | Nb en dessous du taux d'erreur | Taux de réussite | Description |
197
+ | :------------------- | -------------------------------------------------------- | ------------------------------ | ----------------------- | ------------------------------------------------- |
198
+ | <ins>**1.2.3**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4489**<ins> | <ins>**45%**<ins> | |
199
+ | 1.2.3 | dpe_immeuble_chauffage_individuel.csv | 3257 | 32% | |
200
+ | 1.2.3 | dpe_immeuble_chauffage_collectif.csv | 5279 | 53% | |
201
+ | 1.2.3 | dpe_immeuble_chauffage_mixte.csv | 2728 | 27% | |
202
+ | <ins>**1.2.8**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**489**<ins> | <ins>**45%**<ins> | |
203
+ | 1.2.8 | dpe_immeuble_chauffage_individuel.csv | 5275 (+2018) | 53% (+21%) | |
204
+ | 1.2.8 | dpe_immeuble_chauffage_collectif.csv | 5747 (+468) | 57% (+4%) | |
205
+ | 1.2.8 | dpe_immeuble_chauffage_mixte.csv | 3142 (+414) | 31% (+4%) | |
206
+ | <ins>**1.3.1**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4508 (+19)**<ins> | <ins>**45%**<ins> | |
207
+ | 1.3.1 | dpe_immeuble_chauffage_individuel.csv | 5459 (+184) | 55% (+2%) | |
208
+ | 1.3.1 | dpe_immeuble_chauffage_collectif.csv | 5848 (+101) | 58% (+1%) | |
209
+ | 1.3.1 | dpe_immeuble_chauffage_mixte.csv | 4018 (+876) | 40% (+9%) | |
210
+ | <ins>**1.3.2**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4519 (+11)**<ins> | <ins>**45%**<ins> | |
211
+ | 1.3.2 | dpe_immeuble_chauffage_individuel.csv | 5476 (+17) | 55% | |
212
+ | 1.3.2 | dpe_immeuble_chauffage_collectif.csv | 5869 (+21) | 58% | |
213
+ | 1.3.2 | dpe_immeuble_chauffage_mixte.csv | 4040 (+22) | 40% | |
214
+ | <ins>**1.3.5**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522 (+3)**<ins> | <ins>**45%**<ins> | |
215
+ | 1.3.5 | dpe_immeuble_chauffage_individuel.csv | 5488 (+12) | 55% | |
216
+ | 1.3.5 | dpe_immeuble_chauffage_collectif.csv | 5869 | 58% | |
217
+ | 1.3.5 | dpe_immeuble_chauffage_mixte.csv | 4082 (+42) | 40% | |
218
+ | <ins>**1.3.6**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522**<ins> | <ins>**45%**<ins> | |
219
+ | 1.3.6 | dpe_immeuble_chauffage_individuel.csv | 5650 (+162) | 56% | |
220
+ | 1.3.6 | dpe_immeuble_chauffage_collectif.csv | 5894 (+25) | 59% (+1%) | |
221
+ | 1.3.6 | dpe_immeuble_chauffage_mixte.csv | 4141 (+59) | 41% (+1%) | |
222
+ | <ins>**1.3.7**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522**<ins> | <ins>**45%**<ins> | |
223
+ | 1.3.7 | dpe_immeuble_chauffage_individuel.csv | 6960 (+1310) | 69% (+13%) | |
224
+ | 1.3.7 | dpe_immeuble_chauffage_collectif.csv | 6106 (+212) | 61% (+2%) | |
225
+ | 1.3.7 | dpe_immeuble_chauffage_mixte.csv | 4730 (+589) | 47% (+6%) | |
226
+ | <ins>**1.3.8**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4522**<ins> | <ins>**45%**<ins> | |
227
+ | 1.3.8 | dpe_immeuble_chauffage_individuel.csv | 6965 (+5) | 69% | |
228
+ | 1.3.8 | dpe_immeuble_chauffage_collectif.csv | 6110 (+4) | 61% | |
229
+ | 1.3.8 | dpe_immeuble_chauffage_mixte.csv | 4735 (+5) | 47% | |
230
+ | <ins>**1.3.9**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4460**<ins> (-62) | <ins>**44% (-1%)**<ins> | Pertes liés au fix bug tribu zone 2hd valeur dh19 |
231
+ | 1.3.9 | dpe_immeuble_chauffage_individuel.csv | 6901 (-64) | 69% | Pertes liés au fix bug tribu zone 2hd valeur dh19 |
232
+ | 1.3.9 | dpe_immeuble_chauffage_collectif.csv | 6058 (-58) | 60% (-1%) | Pertes liés au fix bug tribu zone 2hd valeur dh19 |
233
+ | 1.3.9 | dpe_immeuble_chauffage_mixte.csv | 4728 (-7) | 47% | Pertes liés au fix bug tribu zone 2hd valeur dh19 |
234
+ | <ins>**1.3.11**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4468**<ins> (+8) | <ins>**44%**<ins> | |
235
+ | 1.3.11 | dpe_immeuble_chauffage_individuel.csv | 6901 | 69% | |
236
+ | 1.3.11 | dpe_immeuble_chauffage_collectif.csv | 6058 | 60% | |
237
+ | 1.3.11 | dpe_immeuble_chauffage_mixte.csv | 4727 (-1) | 47% | Dpes erronés sur le calcul volume ballon ecs |
238
+ | <ins>**1.3.12**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4467**<ins> (-1) | <ins>**44%**<ins> | Dpe erroné avec surface chauffée invalide |
239
+ | 1.3.12 | dpe_logement_individuel_2025.csv | 8429 | 84% | |
240
+ | 1.3.12 | dpe_immeuble_chauffage_individuel.csv | 6900 (-1) | 69% | Dpe erroné avec surface chauffée invalide |
241
+ | 1.3.12 | dpe_immeuble_chauffage_collectif.csv | 6058 | 60% | |
242
+ | 1.3.12 | dpe_immeuble_chauffage_mixte.csv | 4725 (-2) | 47% | Dpe erroné avec surface chauffée invalide |
243
+ | <ins>**1.3.15**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4481**<ins> (+14) | <ins>**45 (+1%)**<ins> | |
244
+ | 1.3.15 | dpe_logement_individuel_2025.csv | 8453 | 84% | |
245
+ | 1.3.15 | dpe_immeuble_chauffage_individuel.csv | 7106 (+205) | 71% (+2%) | |
246
+ | 1.3.15 | dpe_immeuble_chauffage_collectif.csv | 6083 (+25) | 61% (+1%) | |
247
+ | 1.3.15 | dpe_immeuble_chauffage_mixte.csv | 4751 (+24) | 47% | |
248
+ | <ins>**1.3.20**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4500**<ins> (+19) | <ins>**45%**<ins> | |
249
+ | 1.3.20 | dpe_logement_individuel_2025.csv | 8459 (+6) | 84% | |
250
+ | 1.3.20 | dpe_maison_individuelle_2025.csv | 8638 | 86% | |
251
+ | 1.3.20 | dpe_appartement_individuel_chauffage_individuel_2025.csv | 8561 | 86% | |
252
+ | 1.3.20 | dpe_immeuble_chauffage_individuel.csv | 7106 | 71% | |
253
+ | 1.3.20 | dpe_immeuble_chauffage_collectif.csv | 6083 | 61% | |
254
+ | 1.3.20 | dpe_immeuble_chauffage_mixte.csv | 4751 | 47% | |
243
255
 
244
256
  </details>
245
257
 
246
- | Version librairie | corpus | Nb en dessous du taux d'erreur | Taux de réussite | Description | Détail des valeurs |
247
- | :------------------- | -------------------------------------------------------- | ------------------------------ | ----------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
248
- | <ins>**1.3.20**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4500**<ins> (+19) | <ins>**45%**<ins> | | |
249
- | 1.3.20 | dpe_logement_individuel_2025.csv | 8459 (+6) | 84% | | |
250
- | 1.3.20 | dpe_maison_individuelle_2025.csv | 8638 | 86% | | |
251
- | 1.3.20 | dpe_appartement_individuel_chauffage_individuel_2025.csv | 8561 | 86% | | |
252
- | 1.3.20 | dpe_immeuble_chauffage_individuel.csv | 7106 | 71% | | |
253
- | 1.3.20 | dpe_immeuble_chauffage_collectif.csv | 6083 | 61% | | |
254
- | 1.3.20 | dpe_immeuble_chauffage_mixte.csv | 4751 | 47% | | |
255
- | <ins>**1.3.21**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4502**<ins> (+2) | <ins>**45%**<ins> | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=corpus_dpe.csv" target="_blank">Voir le détail</a> |
256
- | 1.3.21 | dpe_logement_individuel_2025.csv | 8504 (+45) | 85% (+1%) | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_logement_individuel_2025.csv" target="_blank">Voir le détail</a> |
257
- | 1.3.21 | dpe_maison_individuelle_2025.csv | 8652 (+14) | 86% | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_maison_individuelle_2025.csv" target="_blank">Voir le détail</a> |
258
- | 1.3.21 | dpe_appartement_individuel_chauffage_individuel_2025.csv | 8578 (+17) | 86% | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_appartement_individuel_chauffage_individuel_2025.csv" target="_blank">Voir le détail</a> |
259
- | 1.3.21 | dpe_appartement_individuel_chauffage_collectif_2025.csv | 6681 | 67% | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_appartement_individuel_chauffage_collectif_2025.csv" target="_blank">Voir le détail</a> |
260
- | 1.3.21 | dpe_immeuble_chauffage_individuel.csv | 7144 (+38) | 71% | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_immeuble_chauffage_individuel.csv" target="_blank">Voir le détail</a> |
261
- | 1.3.21 | dpe_immeuble_chauffage_collectif.csv | 6144 (+61) | 61% | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_immeuble_chauffage_collectif.csv" target="_blank">Voir le détail</a> |
262
- | 1.3.21 | dpe_immeuble_chauffage_mixte.csv | 4760 (+9) | 47% | | <a href="https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_immeuble_chauffage_mixte.csv" target="_blank">Voir le détail</a> |
258
+ | Version librairie | corpus | Nb en dessous du taux d'erreur | Taux de réussite | Description |
259
+ | :------------------- | -------------------------------------------------------- | ------------------------------ | ----------------- | ----------------------------- |
260
+ | <ins>**1.3.21**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4502**<ins> (+2) | <ins>**45%**<ins> | |
261
+ | 1.3.21 | dpe_logement_individuel_2025.csv | 8504 (+45) | 85% (+1%) | |
262
+ | 1.3.21 | dpe_maison_individuelle_2025.csv | 8652 (+14) | 86% | |
263
+ | 1.3.21 | dpe_appartement_individuel_chauffage_individuel_2025.csv | 8578 (+17) | 86% | |
264
+ | 1.3.21 | dpe_appartement_individuel_chauffage_collectif_2025.csv | 6681 | 67% | |
265
+ | 1.3.21 | dpe_immeuble_chauffage_individuel.csv | 7144 (+38) | 71% | |
266
+ | 1.3.21 | dpe_immeuble_chauffage_collectif.csv | 6144 (+61) | 61% | |
267
+ | 1.3.21 | dpe_immeuble_chauffage_mixte.csv | 4760 (+9) | 47% | |
268
+ | <ins>**1.3.25**<ins> | <ins>**corpus_dpe.csv**<ins> | <ins>**4515**<ins> (+2) | <ins>**45%**<ins> | |
269
+ | 1.3.25 | dpe_logement_individuel_2025.csv | 8512 (+8) | 85% | |
270
+ | 1.3.25 | dpe_maison_individuelle_2025.csv | 8674 (+22) | 87% (+1%) | |
271
+ | 1.3.25 | dpe_appartement_individuel_chauffage_individuel_2025.csv | 8581 (+3) | 86% | |
272
+ | 1.3.25 | dpe_appartement_individuel_chauffage_collectif_2025.csv | 6680 (-1) | 67% | Dpe erronés enlevés du corpus |
273
+ | 1.3.25 | dpe_immeuble_chauffage_individuel.csv | 7142 (-2) | 71% | Dpe erronés enlevés du corpus |
274
+ | 1.3.25 | dpe_immeuble_chauffage_collectif.csv | 6144 | 61% | |
275
+ | 1.3.25 | dpe_immeuble_chauffage_mixte.csv | 4758 (-2) | 47% | Dpe erronés enlevés du corpus |
263
276
 
264
277
  ## Roadmap
265
278
 
package/conso.js CHANGED
@@ -3,16 +3,36 @@ import calc_conso_eclairage from './16_conso_eclairage.js';
3
3
  import tvs from './tv.js';
4
4
  import { tv } from './utils.js';
5
5
 
6
- const coef_ep = {
7
- 'électricité ch': 2.3,
8
- 'électricité ecs': 2.3,
9
- 'électricité fr': 2.3,
10
- 'électricité éclairage': 2.3,
11
- 'électricité auxiliaire': 2.3
6
+ export const COEFF_EP_2_3 = 2.3;
7
+ export const COEFF_EP_1_9 = 1.9;
8
+
9
+ /**
10
+ * Coeff de chauffage 1.9 au 01/01/2026
11
+ * @link {https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000052134589}
12
+ */
13
+ export const coef_ep = {
14
+ 'électricité ch': COEFF_EP_1_9,
15
+ 'électricité ecs': COEFF_EP_1_9,
16
+ 'électricité fr': COEFF_EP_1_9,
17
+ 'électricité éclairage': COEFF_EP_1_9,
18
+ 'électricité auxiliaire': COEFF_EP_1_9
12
19
  };
13
20
 
14
- // 31 mars 2021
15
- // https://www.legifrance.gouv.fr/download/pdf?id=doxMrRr0wbfJVvtWjfDP4gHzzERt1iX0PtobthCE6A0=
21
+ /**
22
+ * Coeff de chauffage 2.3 avant le 01/01/2026
23
+ */
24
+ export const coef_ep_2_3 = {
25
+ 'électricité ch': COEFF_EP_2_3,
26
+ 'électricité ecs': COEFF_EP_2_3,
27
+ 'électricité fr': COEFF_EP_2_3,
28
+ 'électricité éclairage': COEFF_EP_2_3,
29
+ 'électricité auxiliaire': COEFF_EP_2_3
30
+ };
31
+
32
+ /**
33
+ * Au 31 mars 2021
34
+ * @link {https://www.legifrance.gouv.fr/download/pdf?id=doxMrRr0wbfJVvtWjfDP4gHzzERt1iX0PtobthCE6A0=}
35
+ */
16
36
  const coef_ges = {
17
37
  'bois – bûches': 0.03,
18
38
  'bois – granulés (pellets) ou briquettes': 0.03,
@@ -32,8 +52,11 @@ const coef_ges = {
32
52
  'électricité auxiliaire': 0.064
33
53
  };
34
54
 
35
- // annexe 7
36
- // https://www.legifrance.gouv.fr/download/file/doxMrRr0wbfJVvtWjfDP4qE7zNsiFZL-4wqNyqoY-CA=/JOE_TEXTE
55
+ /**
56
+ * Annexe 7
57
+ * @link {https://www.legifrance.gouv.fr/download/file/doxMrRr0wbfJVvtWjfDP4qE7zNsiFZL-4wqNyqoY-CA=/JOE_TEXTE}
58
+ * @link {https://www.legifrance.gouv.fr/download/pdf?id=7hpbVyq228foxHzNM7WleDImAyXlPNb9zULelSY01V8=}
59
+ */
37
60
  const coef_cout = {
38
61
  'fioul domestique': 0.09142,
39
62
  'réseau de chauffage urbain': 0.0787,
@@ -44,7 +67,6 @@ const coef_cout = {
44
67
  'bois – bûches': 0.03201,
45
68
  'bois – plaquettes forestières': 0.03201,
46
69
  'bois – plaquettes d’industrie': 0.03201,
47
- // https://www.legifrance.gouv.fr/download/pdf?id=7hpbVyq228foxHzNM7WleDImAyXlPNb9zULelSY01V8=
48
70
  'gaz naturel': cout_gaz_naturel,
49
71
  "électricité d'origine renouvelable utilisée dans le bâtiment": cout_electricite,
50
72
  'électricité ch': cout_electricite,
@@ -161,7 +183,8 @@ export default function calc_conso(
161
183
  fr,
162
184
  prorataECS,
163
185
  prorataChauffage,
164
- dateDpe
186
+ dateDpe,
187
+ coeffEp
165
188
  ) {
166
189
  const gen_ch = ch.reduce((acc, ch) => {
167
190
  const generateur_chauffage = ch.generateur_chauffage_collection.generateur_chauffage;
@@ -217,7 +240,7 @@ export default function calc_conso(
217
240
  gen_ecs,
218
241
  fr,
219
242
  'ep_conso',
220
- coef_ep,
243
+ coeffEp,
221
244
  prorataECS,
222
245
  prorataChauffage
223
246
  ),
package/engine.js CHANGED
@@ -7,7 +7,12 @@ import calc_besoin_ch from './9_besoin_ch.js';
7
7
  import calc_chauffage, { tauxChargeForGenerator } from './9_chauffage.js';
8
8
  import calc_confort_ete from './2021_04_13_confort_ete.js';
9
9
  import calc_qualite_isolation from './2021_04_13_qualite_isolation.js';
10
- import calc_conso, { classe_bilan_dpe, classe_emission_ges } from './conso.js';
10
+ import calc_conso, {
11
+ classe_bilan_dpe,
12
+ classe_emission_ges,
13
+ coef_ep,
14
+ coef_ep_2_3
15
+ } from './conso.js';
11
16
  import {
12
17
  add_references,
13
18
  bug_for_bug_compat,
@@ -20,7 +25,7 @@ import { Inertie } from './7_inertie.js';
20
25
  import getFicheTechnique from './ficheTechnique.js';
21
26
  import { ProductionENR } from './16.2_production_enr.js';
22
27
 
23
- const LIB_VERSION = '1.3.24';
28
+ const LIB_VERSION = '1.4.0';
24
29
 
25
30
  function calc_th(map_id) {
26
31
  const map = enums.methode_application_dpe_log[map_id];
@@ -38,6 +43,10 @@ export function getVersion() {
38
43
  return LIB_VERSION;
39
44
  }
40
45
 
46
+ /**
47
+ * @param dpe {FullDpe}
48
+ * @return {FullDpe}
49
+ */
41
50
  export function calcul_3cl(dpe) {
42
51
  sanitize_dpe(dpe);
43
52
  const modele = enums.modele_dpe[dpe.administratif.enum_modele_dpe_id];
@@ -507,7 +516,8 @@ export function calcul_3cl(dpe) {
507
516
  clim,
508
517
  prorataECS,
509
518
  prorataChauffage,
510
- dateDpe
519
+ dateDpe,
520
+ coef_ep
511
521
  );
512
522
 
513
523
  const production_electricite = productionENR.calculateEnr(
@@ -515,9 +525,26 @@ export function calcul_3cl(dpe) {
515
525
  conso,
516
526
  Sh,
517
527
  th,
518
- zc_id
528
+ zc_id,
529
+ false
519
530
  );
520
531
 
532
+ const conso2_3 = calc_conso(
533
+ Sh,
534
+ zc_id,
535
+ ca_id,
536
+ vt_list,
537
+ instal_ch,
538
+ ecs,
539
+ clim,
540
+ prorataECS,
541
+ prorataChauffage,
542
+ dateDpe,
543
+ coef_ep_2_3
544
+ );
545
+
546
+ productionENR.calculateEnr(dpe.logement.production_elec_enr, conso2_3, Sh, th, zc_id, true);
547
+
521
548
  // get all baie_vitree orientations
522
549
  const ph_list = env.plancher_haut_collection.plancher_haut || [];
523
550
  logement.sortie = {
@@ -529,8 +556,17 @@ export function calcul_3cl(dpe) {
529
556
  ...conso
530
557
  };
531
558
 
532
- const conso_coeff_1_9 = get_conso_coeff_1_9_2026(dpe);
533
- logement.sortie.ep_conso = { ...logement.sortie.ep_conso, ...conso_coeff_1_9 };
559
+ logement.sortie.ep_conso = {
560
+ ...logement.sortie.ep_conso,
561
+ coeff_2_3_classe_bilan_dpe: conso2_3.ep_conso.classe_bilan_dpe,
562
+ coeff_2_3_ep_conso_5_usages: conso2_3.ep_conso.ep_conso_5_usages,
563
+ coeff_2_3_ep_conso_5_usages_m2: conso2_3.ep_conso.ep_conso_5_usages_m2
564
+ };
565
+
566
+ logement.sortie.ep_conso.classe_bilan_dpe_2026 = logement.sortie.ep_conso.classe_bilan_dpe;
567
+ logement.sortie.ep_conso.ep_conso_5_usages_2026 = logement.sortie.ep_conso.ep_conso_5_usages;
568
+ logement.sortie.ep_conso.ep_conso_5_usages_2026_m2 =
569
+ logement.sortie.ep_conso.ep_conso_5_usages_m2;
534
570
 
535
571
  return dpe;
536
572
  }
@@ -568,14 +604,14 @@ export function get_classe_ges_dpe(dpe) {
568
604
  * {@link https://www.ecologie.gouv.fr/actualites/evolutions-du-calcul-du-dpe-reponses-vos-questions#:~:text=Les%20DPE%20r%C3%A9alis%C3%A9s%20avant%20le,%2DAudit%20de%20l'Ademe.}
569
605
  *
570
606
  * @param dpe {FullDpe}
571
- * @returns {{ep_conso_5_usages_2026: number; ep_conso_5_usages_2026_m2: number; classe_bilan_dpe_2026: string}}
607
+ * @returns {{ep_conso_5_usages: number; ep_conso_5_usages_m2: number; classe_bilan_dpe: string}}
572
608
  */
573
609
  export function get_conso_coeff_1_9_2026(dpe) {
574
610
  const zc_id = dpe.logement.meteo.enum_zone_climatique_id;
575
611
  const ca_id = dpe.logement.meteo.enum_classe_altitude_id;
576
612
  const th = calc_th(dpe.logement.caracteristique_generale.enum_methode_application_dpe_log_id);
577
613
 
578
- const ep_conso_5_usages_2026 =
614
+ const ep_conso_5_usages =
579
615
  (0.9 / 1.3) *
580
616
  (Number(dpe.logement.sortie.ep_conso.ep_conso_5_usages) -
581
617
  Number(dpe.logement.sortie.ef_conso.conso_5_usages)) +
@@ -587,8 +623,8 @@ export function get_conso_coeff_1_9_2026(dpe) {
587
623
  else if (th === 'immeuble')
588
624
  Sh = Number(dpe.logement.caracteristique_generale.surface_habitable_immeuble);
589
625
 
590
- const ep_conso_5_usages_2026_m2 = Math.floor(ep_conso_5_usages_2026 / Sh);
591
- const classe_bilan_dpe_2026 = classe_bilan_dpe(ep_conso_5_usages_2026_m2, zc_id, ca_id, Sh);
626
+ const ep_conso_5_usages_m2 = Math.floor(ep_conso_5_usages / Sh);
627
+ const classe_dpe = classe_bilan_dpe(ep_conso_5_usages_m2, zc_id, ca_id, Sh);
592
628
 
593
- return { classe_bilan_dpe_2026, ep_conso_5_usages_2026_m2, ep_conso_5_usages_2026 };
629
+ return { classe_bilan_dpe: classe_dpe, ep_conso_5_usages_m2, ep_conso_5_usages };
594
630
  }
@@ -14,6 +14,7 @@ export interface MurDE extends DE {
14
14
  enum_type_adjacence_id?: number; // ENUM type_adjacence
15
15
  enum_orientation_id?: number; // ENUM orientation
16
16
  surface_paroi_totale?: number;
17
+ surface_paroi_opaque?: number;
17
18
  umur0_saisi?: number;
18
19
  tv_umur0_id?: number; // TV
19
20
  epaisseur_structure?: number;
@@ -28,6 +29,7 @@ export interface MurDE extends DE {
28
29
  epaisseur_isolation?: number;
29
30
  tv_umur_id?: number; // TV
30
31
  enum_methode_saisie_u_id?: number; // ENUM methode_saisie_u
32
+ paroi_lourde?: boolean;
31
33
  }
32
34
 
33
35
  export interface MurDI {
@@ -58,5 +58,6 @@ export interface PlancherHautDE extends PlancherDE {
58
58
  }
59
59
 
60
60
  export interface PlancherHautDI extends PlancherDI {
61
- b: number;
61
+ uph: number;
62
+ uph0: number;
62
63
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open3cl/engine",
3
- "version": "1.3.24",
3
+ "version": "1.4.0",
4
4
  "description": "Open Source 3CL-DPE engine",
5
5
  "main": "index.js",
6
6
  "directories": {
@@ -12,6 +12,7 @@
12
12
  "access": "public"
13
13
  },
14
14
  "scripts": {
15
+ "http-server": "http-server",
15
16
  "test": "vitest run",
16
17
  "test:ci": "vitest run --coverage",
17
18
  "test:corpus": "node test/corpus/run_all_corpus_checks.js",
@@ -25,7 +26,8 @@
25
26
  "release:dry": "semantic-release --dry-run",
26
27
  "prepare": "husky install",
27
28
  "assets:sync": "node scripts/synchronize_assets.js",
28
- "version:update": "node scripts/update_version.js"
29
+ "version:update": "node scripts/update_version.js",
30
+ "reports:preview": "npm run http-server dist/reports/corpus -o"
29
31
  },
30
32
  "repository": {
31
33
  "type": "git",
@@ -38,6 +40,7 @@
38
40
  "dependencies": {
39
41
  "dioma": "^0.4.6",
40
42
  "fast-xml-parser": "^4.5.0",
43
+ "http-server": "^14.1.1",
41
44
  "lodash-es": "4.17.21",
42
45
  "mathjs": "^15.1.0",
43
46
  "winston": "3.13.0"