@open3cl/engine 1.8.56 → 1.8.57

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.
package/README.md CHANGED
@@ -370,15 +370,15 @@ Ces résultats sont **générés automatiquement** à la fin de `npm run test:co
370
370
 
371
371
  <!-- CORPUS:START -->
372
372
 
373
- > **Version `1.8.55`** · branche `main` · généré le 2026-10-12
373
+ > **Version `1.8.56`** · branche `main` · généré le 2026-10-13
374
374
  > Seuil de tolérance **5%**
375
375
 
376
376
  <table>
377
377
  <tr>
378
378
  <td align="center"><strong>9</strong><br/><sub>corpus</sub></td>
379
- <td align="center"><strong>89 853</strong><br/><sub>DPE analysés</sub></td>
380
- <td align="center"><strong>66 634</strong><br/><sub>DPE conformes</sub></td>
381
- <td align="center"><strong>74,16 %</strong><br/><sub>réussite globale</sub></td>
379
+ <td align="center"><strong>89 418</strong><br/><sub>DPE analysés</sub></td>
380
+ <td align="center"><strong>66 706</strong><br/><sub>DPE conformes</sub></td>
381
+ <td align="center"><strong>74,60 %</strong><br/><sub>réussite globale</sub></td>
382
382
  </tr>
383
383
  </table>
384
384
 
@@ -389,38 +389,38 @@ Ces résultats sont **générés automatiquement** à la fin de `npm run test:co
389
389
  | 🟢 | **Appartement · chauffage collectif (2025)**<br/><sub>`dpe_appartement_individuel_chauffage_collectif_2025.csv`</sub> | **91,72 %** | `██████████████████░░` | 9 172 / 10 000 |
390
390
  | 🟢 | **Logement individuel (2025)**<br/><sub>`dpe_logement_individuel_2025.csv`</sub> | **90,47 %** | `██████████████████░░` | 9 040 / 9 992 |
391
391
  | 🟢 | **Maison individuelle (2025)**<br/><sub>`dpe_maison_individuelle_2025.csv`</sub> | **88,90 %** | `██████████████████░░` | 8 889 / 9 999 |
392
+ | 🟢 | **Immeuble · chauffage collectif**<br/><sub>`dpe_immeuble_chauffage_collectif.csv`</sub> | **85,04 %** | `█████████████████░░░` | 8 346 / 9 814 |
392
393
  | 🟡 | **Immeuble · chauffage individuel**<br/><sub>`dpe_immeuble_chauffage_individuel.csv`</sub> | **84,58 %** | `█████████████████░░░` | 8 456 / 9 998 |
393
- | 🟡 | **Immeuble · chauffage collectif**<br/><sub>`dpe_immeuble_chauffage_collectif.csv`</sub> | **84,58 %** | `█████████████████░░░` | 8 346 / 9 868 |
394
- | 🔴 | **Immeuble · chauffage mixte**<br/><sub>`dpe_immeuble_chauffage_mixte.csv`</sub> | **56,86 %** | `███████████░░░░░░░░░` | 5 684 / 9 997 |
394
+ | 🔴 | **Immeuble · chauffage mixte**<br/><sub>`dpe_immeuble_chauffage_mixte.csv`</sub> | **59,86 %** | `████████████░░░░░░░░` | 5 756 / 9 616 |
395
395
  | 🔴 | **Individuel généré depuis l'immeuble (2026)**<br/><sub>`dpe_individuel_a_partir_dpe_immeuble_2026.csv`</sub> | **30,49 %** | `██████░░░░░░░░░░░░░░` | 3 049 / 10 000 |
396
396
 
397
397
  <sub>🟢 ≥ 85 % · 🟡 ≥ 60 % · 🔴 < 60 %</sub>
398
398
 
399
399
  #### Temps d’exécution
400
400
 
401
- > Durée de l’appel à `calcul_3cl` par DPE, sur 89 819 calculs.
401
+ > Durée de l’appel à `calcul_3cl` par DPE, sur 89 384 calculs.
402
402
  > La copie défensive de l’entrée et la lecture du fichier sont exclues de la mesure.
403
403
 
404
404
  <table>
405
405
  <tr>
406
- <td align="center"><strong>5,46 ms</strong><br/><sub>moyenne</sub></td>
407
- <td align="center"><strong>4,77 ms</strong><br/><sub>médiane</sub></td>
408
- <td align="center"><strong>0,13 ms</strong><br/><sub>min</sub></td>
409
- <td align="center"><strong>656,0 ms</strong><br/><sub>max</sub></td>
406
+ <td align="center"><strong>5,09 ms</strong><br/><sub>moyenne</sub></td>
407
+ <td align="center"><strong>4,44 ms</strong><br/><sub>médiane</sub></td>
408
+ <td align="center"><strong>0,12 ms</strong><br/><sub>min</sub></td>
409
+ <td align="center"><strong>854,0 ms</strong><br/><sub>max</sub></td>
410
410
  </tr>
411
411
  </table>
412
412
 
413
413
  | Corpus | Moyenne | Médiane | Min | Max | p95 | p99 |
414
414
  | :--------------------------------------------- | ------: | ------: | ------: | -------: | ------: | ------: |
415
- | **Généraliste** | 4,85 ms | 4,39 ms | 0,21 ms | 35,8 ms | 8,80 ms | 12,2 ms |
416
- | **Appartement · chauffage individuel (2025)** | 4,07 ms | 3,71 ms | 1,47 ms | 33,7 ms | 7,08 ms | 8,93 ms |
417
- | **Appartement · chauffage collectif (2025)** | 4,41 ms | 4,02 ms | 1,53 ms | 35,1 ms | 7,23 ms | 9,09 ms |
418
- | **Logement individuel (2025)** | 5,29 ms | 4,69 ms | 1,73 ms | 45,8 ms | 9,87 ms | 13,7 ms |
419
- | **Maison individuelle (2025)** | 6,25 ms | 5,66 ms | 1,90 ms | 52,3 ms | 11,1 ms | 14,7 ms |
420
- | **Immeuble · chauffage individuel** | 6,46 ms | 5,54 ms | 0,13 ms | 105,5 ms | 12,9 ms | 20,2 ms |
421
- | **Immeuble · chauffage collectif** | 5,76 ms | 4,91 ms | 0,19 ms | 116,4 ms | 10,6 ms | 16,8 ms |
422
- | **Immeuble · chauffage mixte** | 5,76 ms | 4,70 ms | 0,21 ms | 656,0 ms | 12,1 ms | 19,6 ms |
423
- | **Individuel généré depuis l'immeuble (2026)** | 6,29 ms | 5,31 ms | 1,74 ms | 59,8 ms | 11,9 ms | 20,1 ms |
415
+ | **Généraliste** | 5,11 ms | 4,71 ms | 0,20 ms | 34,6 ms | 9,00 ms | 12,2 ms |
416
+ | **Appartement · chauffage individuel (2025)** | 3,79 ms | 3,44 ms | 1,48 ms | 33,9 ms | 6,57 ms | 8,40 ms |
417
+ | **Appartement · chauffage collectif (2025)** | 4,45 ms | 4,04 ms | 1,63 ms | 39,4 ms | 7,29 ms | 9,55 ms |
418
+ | **Logement individuel (2025)** | 4,68 ms | 4,12 ms | 1,66 ms | 46,7 ms | 8,62 ms | 12,6 ms |
419
+ | **Maison individuelle (2025)** | 5,24 ms | 4,81 ms | 1,94 ms | 50,8 ms | 8,85 ms | 11,8 ms |
420
+ | **Immeuble · chauffage collectif** | 4,99 ms | 4,28 ms | 0,12 ms | 99,4 ms | 8,96 ms | 14,0 ms |
421
+ | **Immeuble · chauffage individuel** | 5,73 ms | 4,88 ms | 0,12 ms | 98,8 ms | 11,1 ms | 18,4 ms |
422
+ | **Immeuble · chauffage mixte** | 4,87 ms | 3,97 ms | 0,18 ms | 854,0 ms | 9,80 ms | 16,0 ms |
423
+ | **Individuel généré depuis l'immeuble (2026)** | 6,94 ms | 5,65 ms | 1,82 ms | 88,8 ms | 15,2 ms | 25,7 ms |
424
424
 
425
425
  <sub>La moyenne est tirée vers le haut par les DPE collectifs, dont le coût atteint plusieurs
426
426
  dizaines de fois la médiane : c’est la médiane qui décrit le cas courant, et p95/p99 le cas
package/conso.js CHANGED
@@ -317,6 +317,8 @@ function getConso(coef, type_energie, conso) {
317
317
  * Arrêtés « réseaux de chaleur » et table de valeurs associée (modèle de données de l'observatoire
318
318
  * DPE, `modele_donnee/arrete_reseau_chaleur.json`). Le nom de la table ne correspond pas à l'année
319
319
  * de l'arrêté (ex. l'arrêté du 05/07/2024 publie la table `reseau_chaleur_2023`).
320
+ * Chaque arrêté remplace l'annexe 7 de l'arrêté du 15/09/2006 et entre en vigueur un mois après
321
+ * sa publication au JO (arrêté du 30/03/2026 : JO du 25/04/2026, applicable au 25/05/2026).
320
322
  * - date_arrete : valeur attendue dans `date_arrete_reseau_chaleur` ;
321
323
  * - date_application : date à partir de laquelle l'arrêté s'applique (DPE sans date d'arrêté).
322
324
  */
@@ -326,10 +328,15 @@ export const ARRETES_RESEAU_CHALEUR = [
326
328
  { table: 'reseau_chaleur_2022', date_arrete: '2023-03-16', date_application: '2023-04-16' },
327
329
  { table: 'reseau_chaleur_2023', date_arrete: '2024-07-05', date_application: '2024-08-09' },
328
330
  { table: 'reseau_chaleur_2024', date_arrete: '2025-04-11', date_application: '2025-05-26' },
329
- { table: 'reseau_chaleur_2025', date_arrete: '2026-04-25', date_application: '2026-05-25' }
331
+ { table: 'reseau_chaleur_2025', date_arrete: '2026-03-30', date_application: '2026-05-25' }
330
332
  ];
331
333
 
332
- /** Facteur « AUTRES RESEAUX DE CHALEUR » (réseau non répertorié ou inconnu), kgCO2/kWh */
334
+ /**
335
+ * Facteur « AUTRES RESEAUX DE CHALEUR » (réseau non répertorié ou inconnu), kgCO2/kWh.
336
+ * 0,385 dans les arrêtés des 21/10/2021, 16/03/2023, 05/07/2024, 11/04/2025 et 30/03/2026 : cette
337
+ * ligne peut être utilisée quel que soit le réseau ; le cas échéant, seule elle s'applique (art. 2 de
338
+ * l'arrêté du 21/10/2021, puis annexe 7 § IV). L'arrêté du 12/10/2020 ne contient pas cette ligne.
339
+ */
333
340
  export const COEF_GES_AUTRES_RESEAUX_CHALEUR = 0.385;
334
341
 
335
342
  /**
@@ -422,7 +429,13 @@ export function getContenuCo2ReseauChaleur(
422
429
  * Tribu (Calcul_batiment.cs l.1189) applique `contenu_CO2_RCU_ch`, transmis par le logiciel : LICIEL
423
430
  * et Pleiades y placent le facteur de l'énergie des chaudières (« Taux CO2 fonction du système réel »).
424
431
  * Le bois retient 0,03 (bûches / granulés), valeur exportée par la majorité des DPE LICIEL.
425
- * Les PAC multi-bâtiment (112 / 77) ne sont pas couvertes : facteurs exportés non reproductibles.
432
+ * Les PAC multi-bâtiment (112 / 77) ne sont volontairement pas couvertes et gardent 0,385
433
+ * (« autres réseaux de chaleur ») : Tribu n'a ni défaut ni table pour elles, le facteur vient du
434
+ * logiciel (`contenu_CO2_RCU_ch`, DPE.DataClasses/batiment.cs l.49). Sur les 44 DPE LICIEL en
435
+ * énergie 8 des corpus, 13 facteurs implicites distincts (0,227, 0, 0,09, 0,079, 0,104, 0,385…) ;
436
+ * 0,079 (électricité ch) n'en concerne que 5, et 0,079 comme 0,385 sortent du même moteur
437
+ * (tribu 1.4.25.1). Passer à 0,079 (PR #281, non fusionnée) gagnait 3 DPE et en cassait 2
438
+ * reproduits à l'identique (2394E2631674Y, 2549E3380026B).
426
439
  */
427
440
  const ENERGIE_MULTI_BATIMENT = {
428
441
  ch: { 109: 'bois – bûches', 110: 'fioul domestique', 111: 'gaz naturel' },
package/conso.spec.js CHANGED
@@ -1277,7 +1277,9 @@ describe('réseaux de chaleur - sélection de l’arrêté et du contenu CO2', (
1277
1277
  ['2024-07-05', 3],
1278
1278
  ['2024-07-10', 3],
1279
1279
  ['2025-04-11', 4],
1280
- ['2026-04-25', 5],
1280
+ ['2026-03-29', 4], // veille de l'arrêté du 30/03/2026
1281
+ ['2026-03-30', 5],
1282
+ ['2026-04-25', 5], // date de publication au JO
1281
1283
  ['2030-01-01', 5],
1282
1284
  ['2019-01-01', 0]
1283
1285
  ])('date_arrete_reseau_chaleur %s : arrêté n°%i', (dateArrete, index) => {
package/engine.js CHANGED
@@ -33,7 +33,7 @@ import getFicheTechnique from './ficheTechnique.js';
33
33
  import { ProductionENR, ratioProrataPvLogement } from './16.2_production_enr.js';
34
34
  import DpeSanitizerService from './dpe-sanitizer.service.js';
35
35
 
36
- const LIB_VERSION = '1.8.56';
36
+ const LIB_VERSION = '1.8.57';
37
37
 
38
38
  const dpeSanitizerService = new DpeSanitizerService();
39
39
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open3cl/engine",
3
- "version": "1.8.56",
3
+ "version": "1.8.57",
4
4
  "description": "Open Source 3CL-DPE engine",
5
5
  "main": "index.js",
6
6
  "directories": {