@open3cl/engine 1.11.3 → 1.11.4
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/10_besoin_fr.spec.js +1 -1
- package/10_clim.js +1 -1
- package/10_clim.spec.js +5 -9
- package/11_besoin_ecs.spec.js +1 -1
- package/11_ecs.js +2 -1
- package/11_ecs.spec.js +2 -2
- package/11_nadeq.js +1 -0
- package/11_nadeq.spec.js +1 -1
- package/12.4_pac.js +5 -3
- package/12.4_pac.spec.js +10 -18
- package/13.2_generateur_combustion.js +19 -16
- package/13.2_generateur_combustion.spec.js +10 -10
- package/13.2_generateur_combustion_bouilleur.js +5 -2
- package/13.2_generateur_combustion_bouilleur.spec.js +1 -1
- package/13.2_generateur_combustion_ch.js +8 -7
- package/13.2_generateur_combustion_ch.spec.js +7 -7
- package/13.2_generateur_combustion_chaudiere.js +5 -2
- package/13.2_generateur_combustion_chaudiere.spec.js +2 -2
- package/13.2_generateur_combustion_pdim.js +6 -6
- package/13.2_generateur_combustion_pdim.spec.js +1 -1
- package/13.2_generateur_combustion_pn.spec.js +1 -1
- package/13.2_generateur_pac.js +4 -1
- package/13.2_generateur_pac.spec.js +1 -1
- package/13_rendement_distribution_ecs.spec.js +1 -1
- package/14_generateur_ecs.js +2 -1
- package/14_generateur_ecs.spec.js +4 -4
- package/15_conso_aux.js +19 -17
- package/15_conso_aux.spec.js +8 -8
- package/16.2_production_enr.js +4 -3
- package/16.2_production_enr.spec.js +1 -1
- package/16_conso_eclairage.spec.js +1 -1
- package/2021_04_13_confort_ete.spec.js +1 -1
- package/2021_04_13_qualite_isolation.js +1 -1
- package/2021_04_13_qualite_isolation.spec.js +2 -2
- package/3.1_b.spec.js +1 -1
- package/3.2.1_mur.js +10 -9
- package/3.2.1_mur.spec.js +11 -19
- package/3.2.2_plancher_bas.js +4 -3
- package/3.2.2_plancher_bas.spec.js +10 -20
- package/3.2.3_plancher_haut.js +1 -1
- package/3.2.3_plancher_haut.spec.js +2 -2
- package/3.3.1.4_porte.js +1 -1
- package/3.3.1.4_porte.spec.js +2 -2
- package/3.3_baie_vitree.js +2 -2
- package/3.3_baie_vitree.spec.js +3 -3
- package/3.4_pont_thermique.js +6 -4
- package/3.4_pont_thermique.spec.js +7 -7
- package/3_deperdition.js +1 -0
- package/3_deperdition.spec.js +3 -3
- package/4_ventilation.js +2 -2
- package/4_ventilation.spec.js +1 -1
- package/5_conso_ventilation.spec.js +1 -1
- package/6.1_apport_gratuit.spec.js +2 -2
- package/6.2_surface_sud_equivalente.js +12 -9
- package/6.2_surface_sud_equivalente.spec.js +3 -3
- package/7_inertie.js +7 -4
- package/7_inertie.spec.js +1 -1
- package/8_intermittence.spec.js +1 -1
- package/9_besoin_ch.js +5 -3
- package/9_besoin_ch.spec.js +3 -3
- package/9_chauffage.js +12 -11
- package/9_chauffage.spec.js +7 -7
- package/9_conso_ch.spec.js +3 -3
- package/9_emetteur_ch.js +5 -5
- package/9_emetteur_ch.spec.js +1 -1
- package/9_generateur_ch.js +16 -13
- package/9_generateur_ch.spec.js +6 -6
- package/README.md +19 -19
- package/apport_et_besoin.spec.js +1 -1
- package/conso.js +18 -14
- package/conso.spec.js +3 -3
- package/core/assets/domain/synchronize-assets.js +2 -0
- package/core/assets/domain/synchronize-c1-tables.js +2 -0
- package/core/assets/domain/synchronize-dpe-ges-limit-values-tables.js +2 -0
- package/core/assets/domain/synchronize-enum-tables.js +2 -0
- package/core/assets/domain/synchronize-solicitations-tables.js +2 -0
- package/core/assets/domain/synchronize-valeur-tables.js +6 -0
- package/core/file/infrastructure/adapter/csv-parser.store.js +2 -1
- package/dpe-sanitizer.service.js +1 -0
- package/engine.js +2 -1
- package/enums.d.ts +1257 -0
- package/features/dpe/domain/models/baie-ets.model.ts +1 -1
- package/features/dpe/domain/models/baie-vitree.model.ts +6 -2
- package/features/dpe/domain/models/climatisation.model.ts +1 -1
- package/features/dpe/domain/models/dpe.model.ts +16 -23
- package/features/dpe/domain/models/ets.model.ts +1 -1
- package/features/dpe/domain/models/installation-chauffage.model.ts +54 -8
- package/features/dpe/domain/models/installation-ecs.model.ts +24 -6
- package/features/dpe/domain/models/mur.model.ts +1 -1
- package/features/dpe/domain/models/plancher.model.ts +1 -1
- package/features/dpe/domain/models/pont-thermique.model.ts +1 -1
- package/features/dpe/domain/models/porte.model.ts +1 -1
- package/features/dpe/domain/models/production-elec-enr.model.ts +1 -1
- package/features/dpe/domain/models/sortie.model.ts +1 -1
- package/features/dpe/domain/models/type-generateur.model.js +4 -3
- package/features/dpe/domain/models/type-habitation.model.js +8 -6
- package/features/dpe/domain/models/type-stockage.model.js +4 -3
- package/features/dpe/domain/models/type-ventilation.model.js +4 -3
- package/features/dpe/domain/models/ventilation.model.ts +1 -1
- package/features/dpe/infrastructure/ch/chTv.store.js +2 -2
- package/features/dpe/infrastructure/ecs/ecsTv.store.js +3 -3
- package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.js +1 -1
- package/features/dpe/infrastructure/froid/frTv.store.js +3 -3
- package/features/dpe/infrastructure/froid/frTv.store.spec.js +1 -1
- package/features/dpe/infrastructure/tv.store.js +1 -1
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.js +3 -0
- package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.js +9 -3
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +1 -1
- package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.js +2 -1
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.js +4 -1
- package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.js +7 -2
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +1 -1
- package/features/engine/domain/ch/emetteur-ch.service.js +3 -1
- package/features/engine/domain/ch/emetteur-ch.service.spec.js +1 -1
- package/features/engine/domain/ch/generateur-ch.service.js +4 -1
- package/features/engine/domain/ch/generateur-ch.service.spec.js +3 -3
- package/features/engine/domain/ch/installation-ch.service.js +2 -0
- package/features/engine/domain/conso/conso.service.js +2 -0
- package/features/engine/domain/conso/froid/conso-froid.service.js +5 -1
- package/features/engine/domain/contexte.builder.js +2 -0
- package/features/engine/domain/ecs/generateur-ecs.service.js +1 -0
- package/features/engine/domain/ecs/installation-ecs.service.js +3 -0
- package/features/engine/domain/engine.service.js +1 -0
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.js +4 -1
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.js +3 -0
- package/features/engine/domain/enveloppe/deperdition.service.js +8 -4
- package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.js +4 -1
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.js +3 -1
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.js +3 -1
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +2 -2
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.js +4 -2
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.js +9 -1
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +1 -1
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.js +3 -1
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.js +3 -1
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +1 -1
- package/features/engine/domain/logement/nadeq.service.js +1 -1
- package/features/engine/domain/logement/nadeq.service.spec.js +1 -1
- package/features/engine/domain/models/contexte.model.ts +2 -2
- package/features/normalizer/domain/dpe-normalizer.service.js +1 -0
- package/ficheTechnique.js +4 -2
- package/globals.d.ts +14 -0
- package/package.json +3 -3
- package/preprocessor/index.js +1 -0
- package/tv.d.ts +759 -0
- package/tvs.d.ts +2 -7
- package/utils.js +8 -6
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/** @import { BaieEts } from '../../../dpe/domain/models/baie-ets.model.js' */
|
|
2
|
+
/** @import { BaieVitree } from '../../../dpe/domain/models/baie-vitree.model.js' */
|
|
3
|
+
/** @import { Enveloppe } from '../../../dpe/domain/models/dpe.model.js' */
|
|
4
|
+
/** @import { Ets } from '../../../dpe/domain/models/ets.model.js' */
|
|
5
|
+
/** @import { Contexte } from '../models/contexte.model.js' */
|
|
1
6
|
import { mois_liste } from '../../../../utils.js';
|
|
2
7
|
import { inject } from 'dioma';
|
|
3
8
|
import { BaieVitreeTvStore } from '../../../dpe/infrastructure/enveloppe/baieVitreeTv.store.js';
|
|
@@ -8,7 +13,7 @@ import { BaieVitreeTvStore } from '../../../dpe/infrastructure/enveloppe/baieVit
|
|
|
8
13
|
*
|
|
9
14
|
* Methode_de_calcul_3CL_DPE_2021 - Page 45
|
|
10
15
|
* Octobre 2021
|
|
11
|
-
* @see
|
|
16
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
12
17
|
*/
|
|
13
18
|
export class SurfaceSudEquivalenteService {
|
|
14
19
|
/**
|
|
@@ -206,7 +211,7 @@ export class SurfaceSudEquivalenteService {
|
|
|
206
211
|
* @param baieVitree {BaieVitree|BaieEts}
|
|
207
212
|
* @param zc {string} zone climatique du logement
|
|
208
213
|
* @param mois {string} mois au cours duquel calculer la surface sur équivalente de la baie vitrée
|
|
209
|
-
* @param coeff {number} coefficient à appliquer à cette surface sud
|
|
214
|
+
* @param [coeff] {number} coefficient à appliquer à cette surface sud
|
|
210
215
|
* @returns {number}
|
|
211
216
|
*/
|
|
212
217
|
ssdBaieMois(baieVitree, zc, mois, coeff) {
|
|
@@ -170,7 +170,7 @@ describe('Calcul de la surface sud équivalente (§6.2 / §6.3)', () => {
|
|
|
170
170
|
* véranda ; Sse = Sse_ext + Σ(v) Sse_veranda_v. Une baie adjacence 10 n'entre que dans la véranda
|
|
171
171
|
* sur laquelle elle donne (reference_lnc = ets.reference).
|
|
172
172
|
* Cas de test fournis par Olivier (thermicien) : C1 sud = 1, est = 0,40, nord = 0,31 ; Fe = 1.
|
|
173
|
-
* @see
|
|
173
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §6.3
|
|
174
174
|
*/
|
|
175
175
|
describe('ssdMois - plusieurs espaces tampons solarisés (issue #101)', () => {
|
|
176
176
|
// Baie extérieure 10 m² sud, Sw = 0,5 => Sse_ext = 5
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { EmetteurChauffage, GenerateurChauffageDE } from '../../../dpe/domain/models/installation-chauffage.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../models/contexte.model.js' */
|
|
1
3
|
import { ChTvStore } from '../../../dpe/infrastructure/ch/chTv.store.js';
|
|
2
4
|
import { inject } from 'dioma';
|
|
3
5
|
import { bug_for_bug_compat } from '../../../../utils.js';
|
|
@@ -95,7 +97,7 @@ export class EmetteurChService {
|
|
|
95
97
|
* Aucune déduction si le mode bug_for_bug_compat est désactivé, si l'une des deux températures
|
|
96
98
|
* du DPE est absente ou non numérique, ou si tous les émetteurs ont une période saisie.
|
|
97
99
|
*
|
|
98
|
-
* @see
|
|
100
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
99
101
|
*
|
|
100
102
|
* @param ctx {Contexte}
|
|
101
103
|
* @param generateurChauffageDE {GenerateurChauffageDE}
|
|
@@ -116,7 +116,7 @@ describe('Calcul des caractéristiques des générateurs de chauffage', () => {
|
|
|
116
116
|
* Issue #220 - période d'installation des émetteurs absente du DPE.
|
|
117
117
|
* Mode strict : année de construction. Mode bug_for_bug_compat : période retrouvée à partir des
|
|
118
118
|
* temp_fonc_30 / temp_fonc_100 d'origine du DPE.
|
|
119
|
-
* @see
|
|
119
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
120
120
|
*/
|
|
121
121
|
describe('Déduction de la période des émetteurs depuis les données du DPE (issue #220)', () => {
|
|
122
122
|
/**
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/** @import { Logement } from '../../../dpe/domain/models/dpe.model.js' */
|
|
2
|
+
/** @import { EmetteurChauffage, GenerateurChauffage, GenerateurChauffageDE, GenerateurChauffageDI, InstallationChauffage } from '../../../dpe/domain/models/installation-chauffage.model.js' */
|
|
3
|
+
/** @import { Contexte } from '../models/contexte.model.js' */
|
|
1
4
|
import { inject } from 'dioma';
|
|
2
5
|
import { ChTvStore } from '../../../dpe/infrastructure/ch/chTv.store.js';
|
|
3
6
|
import { excel_to_js_exec } from '../../../../utils.js';
|
|
@@ -385,7 +388,7 @@ export class GenerateurChService {
|
|
|
385
388
|
* retrouvée à partir des temp_fonc_30 / temp_fonc_100 d'origine du DPE (données
|
|
386
389
|
* intermédiaires du générateur, non encore recalculées à ce stade). Sans déduction possible,
|
|
387
390
|
* la règle §13.2.1.5 s'applique (année de construction).
|
|
388
|
-
* @see
|
|
391
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
389
392
|
*/
|
|
390
393
|
const periodeDeduite = this.#emetteurChService.periodeInstallationEmetteurDeduite(
|
|
391
394
|
ctx,
|
|
@@ -12,7 +12,7 @@ let emetteurChService;
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Températures de fonctionnement du générateur (délégation au service émetteurs).
|
|
15
|
-
* @see
|
|
15
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
16
16
|
*/
|
|
17
17
|
describe('Températures de fonctionnement des générateurs de chauffage', () => {
|
|
18
18
|
const ctx = { anneeConstruction: 1900 };
|
|
@@ -82,7 +82,7 @@ describe('Températures de fonctionnement des générateurs de chauffage', () =>
|
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
84
|
* Puissance nominale estimée d'un générateur à combustion sans pn.
|
|
85
|
-
* @see
|
|
85
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.2.4
|
|
86
86
|
*/
|
|
87
87
|
describe('Puissance nominale estimée des générateurs de chauffage (issue #264)', () => {
|
|
88
88
|
/** @type {TvStore} */
|
|
@@ -132,7 +132,7 @@ describe('Puissance nominale estimée des générateurs de chauffage (issue #264
|
|
|
132
132
|
/**
|
|
133
133
|
* Puissance nominale estimée par la puissance de dimensionnement : Pdim = max(Pch ; Pecs) puis table
|
|
134
134
|
* Pdim → Pn des chaudières (le calcul de la table est testé dans 13.2_generateur_combustion_pdim.spec.js).
|
|
135
|
-
* @see
|
|
135
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.2.4
|
|
136
136
|
*/
|
|
137
137
|
describe('Puissance nominale estimée : Pdim et table Pdim → Pn (issue #271)', () => {
|
|
138
138
|
/** @type {TvStore} */
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/** @import { Climatisation, ClimatisationDE, ClimatisationDI } from '../../../../dpe/domain/models/climatisation.model.js' */
|
|
2
|
+
/** @import { Logement } from '../../../../dpe/domain/models/dpe.model.js' */
|
|
3
|
+
/** @import { ApportEtBesoin } from '../../../../dpe/domain/models/sortie.model.js' */
|
|
4
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
5
|
import { inject } from 'dioma';
|
|
2
6
|
import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
|
|
3
7
|
|
|
@@ -7,7 +11,7 @@ import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
|
|
|
7
11
|
*
|
|
8
12
|
* Methode_de_calcul_3CL_DPE_2021 - Page 69
|
|
9
13
|
* Octobre 2021
|
|
10
|
-
* @see
|
|
14
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
11
15
|
*/
|
|
12
16
|
export class ConsoFroidService {
|
|
13
17
|
/**
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { CaracteristiqueGenerale, Dpe } from '../../dpe/domain/models/dpe.model.js' */
|
|
2
|
+
/** @import { Contexte } from './models/contexte.model.js' */
|
|
1
3
|
import { TypeDpe, TypeHabitation } from '../../dpe/domain/models/type-habitation.model.js';
|
|
2
4
|
import enums from '../../../enums.js';
|
|
3
5
|
import { NadeqService } from './logement/nadeq.service.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @import { GenerateurEcsDE, InstallationEcs } from '../../../dpe/domain/models/installation-ecs.model.js' */
|
|
1
2
|
import { TypeStockage } from '../../../dpe/domain/models/type-stockage.model.js';
|
|
2
3
|
import { inject } from 'dioma';
|
|
3
4
|
import { EcsTvStore } from '../../../dpe/infrastructure/ecs/ecsTv.store.js';
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/** @import { Logement } from '../../../dpe/domain/models/dpe.model.js' */
|
|
2
|
+
/** @import { InstallationEcs, InstallationEcsDE } from '../../../dpe/domain/models/installation-ecs.model.js' */
|
|
3
|
+
/** @import { Contexte } from '../models/contexte.model.js' */
|
|
1
4
|
import { GenerateurEcsService } from './generateur-ecs.service.js';
|
|
2
5
|
import { inject } from 'dioma';
|
|
3
6
|
import { isStockageEcsVolumeChauffe } from '../../../../11_stockage_ecs_volume_chauffe.js';
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { BaieVitree, BaieVitreeDE, BaieVitreeDI, BaieVitreeDoubleFenetreDE, MasqueLointainNonHomogene } from '../../../../dpe/domain/models/baie-vitree.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
3
|
import { DeperditionService } from '../deperdition.service.js';
|
|
2
4
|
import { inject } from 'dioma';
|
|
3
5
|
import { BaieVitreeTvStore } from '../../../../dpe/infrastructure/enveloppe/baieVitreeTv.store.js';
|
|
@@ -8,7 +10,8 @@ import { BaieVitreeTvStore } from '../../../../dpe/infrastructure/enveloppe/baie
|
|
|
8
10
|
*
|
|
9
11
|
* Méthode de calcul 3CL-DPE 2021
|
|
10
12
|
* Octobre 2021
|
|
11
|
-
* @see
|
|
13
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
14
|
+
* @extends {DeperditionService<BaieVitreeTvStore>}
|
|
12
15
|
*/
|
|
13
16
|
export class DeperditionBaieVitreeService extends DeperditionService {
|
|
14
17
|
/**
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/** @import { Enveloppe, Logement } from '../../../dpe/domain/models/dpe.model.js' */
|
|
2
|
+
/** @import { Deperdition } from '../../../dpe/domain/models/sortie.model.js' */
|
|
3
|
+
/** @import { Contexte } from '../models/contexte.model.js' */
|
|
1
4
|
import { inject } from 'dioma';
|
|
2
5
|
import { DeperditionMurService } from './mur/deperdition-mur.service.js';
|
|
3
6
|
import { DeperditionPorteService } from './porte/deperdition-porte.service.js';
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/** @import { DE } from '../../../dpe/domain/models/dpe.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../models/contexte.model.js' */
|
|
3
|
+
/** @import { DeperditionData } from '../models/deperdition.model.js' */
|
|
1
4
|
import { logger } from '../../../../core/util/logger/log-service.js';
|
|
2
5
|
import { inject } from 'dioma';
|
|
3
6
|
import { TvStore } from '../../../dpe/infrastructure/tv.store.js';
|
|
@@ -5,17 +8,18 @@ import { TvStore } from '../../../dpe/infrastructure/tv.store.js';
|
|
|
5
8
|
/**
|
|
6
9
|
* Calcul des déperditions de l’enveloppe GV
|
|
7
10
|
* @see Méthode de calcul 3CL-DPE 2021 (cotobre 2021) chapitre 3
|
|
11
|
+
* @template {TvStore} [S=TvStore] type du store de tables de valeurs (spécialisé par sous-classe)
|
|
8
12
|
*/
|
|
9
13
|
export class DeperditionService {
|
|
10
14
|
/**
|
|
11
|
-
* @type {
|
|
15
|
+
* @type {S}
|
|
12
16
|
*/
|
|
13
17
|
tvStore;
|
|
14
18
|
|
|
15
19
|
/**
|
|
16
|
-
* @param tvStore {
|
|
20
|
+
* @param tvStore {S}
|
|
17
21
|
*/
|
|
18
|
-
constructor(tvStore = inject(TvStore)) {
|
|
22
|
+
constructor(tvStore = /** @type {S} */ (inject(TvStore))) {
|
|
19
23
|
this.tvStore = tvStore;
|
|
20
24
|
}
|
|
21
25
|
|
|
@@ -88,7 +92,7 @@ export class DeperditionService {
|
|
|
88
92
|
* Si Année de construction ≤74 alors Année d’isolation = 75-77
|
|
89
93
|
* Sinon Année d’isolation = Année de construction
|
|
90
94
|
*
|
|
91
|
-
* @param enumPeriodeIsolationId {
|
|
95
|
+
* @param enumPeriodeIsolationId {string}
|
|
92
96
|
* @param ctx {Contexte}
|
|
93
97
|
* @return {string} ID de la période d'isolation
|
|
94
98
|
*/
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { Ets, EtsDI } from '../../../../dpe/domain/models/ets.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
3
|
import { DeperditionService } from '../deperdition.service.js';
|
|
2
4
|
import { inject } from 'dioma';
|
|
3
5
|
import { BaieVitreeTvStore } from '../../../../dpe/infrastructure/enveloppe/baieVitreeTv.store.js';
|
|
@@ -8,7 +10,8 @@ import { BaieVitreeTvStore } from '../../../../dpe/infrastructure/enveloppe/baie
|
|
|
8
10
|
*
|
|
9
11
|
* Méthode de calcul 3CL-DPE 2021
|
|
10
12
|
* Octobre 2021
|
|
11
|
-
* @see
|
|
13
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
14
|
+
* @extends {DeperditionService<BaieVitreeTvStore>}
|
|
12
15
|
*/
|
|
13
16
|
export class EspaceTamponService extends DeperditionService {
|
|
14
17
|
/**
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { MurDE, MurDI } from '../../../../dpe/domain/models/mur.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
3
|
import { logger } from '../../../../../core/util/logger/log-service.js';
|
|
2
4
|
import { inject } from 'dioma';
|
|
3
5
|
import { PRECISION } from '../../constants.js';
|
|
@@ -10,7 +12,7 @@ import { TvStore } from '../../../../dpe/infrastructure/tv.store.js';
|
|
|
10
12
|
*
|
|
11
13
|
* Méthode de calcul 3CL-DPE 2021
|
|
12
14
|
* Octobre 2021
|
|
13
|
-
* @see
|
|
15
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
14
16
|
*/
|
|
15
17
|
export class DeperditionMurService extends DeperditionService {
|
|
16
18
|
/**
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { PlancherBasDE, PlancherBasDI } from '../../../../dpe/domain/models/plancher.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
3
|
import { inject } from 'dioma';
|
|
2
4
|
import { PRECISION } from '../../constants.js';
|
|
3
5
|
import { DeperditionService } from '../deperdition.service.js';
|
|
@@ -9,7 +11,7 @@ import { TvStore } from '../../../../dpe/infrastructure/tv.store.js';
|
|
|
9
11
|
*
|
|
10
12
|
* Méthode de calcul 3CL-DPE 2021
|
|
11
13
|
* Octobre 2021
|
|
12
|
-
* @see
|
|
14
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
13
15
|
*/
|
|
14
16
|
export class DeperditionPlancherBasService extends DeperditionService {
|
|
15
17
|
/**
|
package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js
CHANGED
|
@@ -7,7 +7,7 @@ import { DeperditionPlancherBasService } from './deperdition-plancher-bas.servic
|
|
|
7
7
|
* Le `TvStore` est remplacé par un double de test (spies `vi.fn`) et le coefficient b (classe de
|
|
8
8
|
* base) est espionné : seule la logique propre au service (Upb0, Upb, Ue, type d'isolation) est
|
|
9
9
|
* vérifiée, sans dépendre des tables de valeurs réelles.
|
|
10
|
-
* @see
|
|
10
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.2
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
/** @type {{ getUpb0: import('vitest').Mock, getUpb: import('vitest').Mock, getUeByUpd: import('vitest').Mock }} */
|
|
@@ -156,7 +156,7 @@ describe('DeperditionPlancherBasService - calcul de upb_final (Ue)', () => {
|
|
|
156
156
|
|
|
157
157
|
/**
|
|
158
158
|
* Issue #46 : ue calculé plancher par plancher, 2S/P issu du seul plancher courant.
|
|
159
|
-
* @see
|
|
159
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.2 (tableau ue)
|
|
160
160
|
*/
|
|
161
161
|
describe('calcul plancher par plancher (#46)', () => {
|
|
162
162
|
test('2187E0982591I plancher 1 : 2S/P = 2 * 44,8 / 12,8 = 7', () => {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { PlancherHautDE, PlancherHautDI } from '../../../../dpe/domain/models/plancher.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
3
|
import { inject } from 'dioma';
|
|
2
4
|
import { PRECISION } from '../../constants.js';
|
|
3
5
|
import { DeperditionService } from '../deperdition.service.js';
|
|
@@ -9,7 +11,7 @@ import { TvStore } from '../../../../dpe/infrastructure/tv.store.js';
|
|
|
9
11
|
*
|
|
10
12
|
* Méthode de calcul 3CL-DPE 2021
|
|
11
13
|
* Octobre 2021
|
|
12
|
-
* @see
|
|
14
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
13
15
|
*/
|
|
14
16
|
export class DeperditionPlancherHautService extends DeperditionService {
|
|
15
17
|
/**
|
|
@@ -119,7 +121,7 @@ export class DeperditionPlancherHautService extends DeperditionService {
|
|
|
119
121
|
* @see Méthode de calcul 3CL-DPE 2021 (cotobre 2021) chapitre 3.2.3.1
|
|
120
122
|
* "Lorsque le local au-dessus du logement est un local non chauffé, ou un local autre que d’habitation., Uph_tab est pris dans la catégorie « Terrasse »."
|
|
121
123
|
* @param phDE {PlancherHautDE}
|
|
122
|
-
* @return {'combles'|'
|
|
124
|
+
* @return {'combles'|'terrasse'}
|
|
123
125
|
*/
|
|
124
126
|
#getTypeAdjacence(phDE) {
|
|
125
127
|
switch (phDE.enum_type_adjacence_id) {
|
package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/** @import { BaieVitreeDE } from '../../../../dpe/domain/models/baie-vitree.model.js' */
|
|
2
|
+
/** @import { Enveloppe } from '../../../../dpe/domain/models/dpe.model.js' */
|
|
3
|
+
/** @import { MurDE } from '../../../../dpe/domain/models/mur.model.js' */
|
|
4
|
+
/** @import { PlancherBasDE, PlancherHautDE } from '../../../../dpe/domain/models/plancher.model.js' */
|
|
5
|
+
/** @import { PontThermiqueDE, PontThermiqueDI } from '../../../../dpe/domain/models/pont-thermique.model.js' */
|
|
6
|
+
/** @import { PorteDE } from '../../../../dpe/domain/models/porte.model.js' */
|
|
7
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
8
|
import { inject } from 'dioma';
|
|
2
9
|
import { DeperditionService } from '../deperdition.service.js';
|
|
3
10
|
import { logger } from '../../../../../core/util/logger/log-service.js';
|
|
@@ -14,9 +21,10 @@ import { DeperditionPlancherBasService } from '../plancher_bas/deperdition-planc
|
|
|
14
21
|
*
|
|
15
22
|
* Méthode de calcul 3CL-DPE 2021
|
|
16
23
|
* Octobre 2021
|
|
17
|
-
* @see
|
|
24
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
18
25
|
*
|
|
19
26
|
* Si le coefficient U des portes est connu et justifié, le saisir directement. Sinon, prendre les valeurs tabulées
|
|
27
|
+
* @extends {DeperditionService<PontThermiqueTvStore>}
|
|
20
28
|
*/
|
|
21
29
|
export class DeperditionPontThermiqueService extends DeperditionService {
|
|
22
30
|
/**
|
package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js
CHANGED
|
@@ -6,7 +6,7 @@ import { DeperditionPontThermiqueService } from './deperdition-pont-thermique.se
|
|
|
6
6
|
*
|
|
7
7
|
* Le store des tables de valeurs et les services de déperdition des parois sont remplacés par des
|
|
8
8
|
* doubles de test : seule la logique propre au service (exclusions de ponts thermiques) est vérifiée.
|
|
9
|
-
* @see
|
|
9
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.4
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
let tvStore;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { PorteDE, PorteDI } from '../../../../dpe/domain/models/porte.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
3
|
import { inject } from 'dioma';
|
|
2
4
|
import { DeperditionService } from '../deperdition.service.js';
|
|
3
5
|
import { TvStore } from '../../../../dpe/infrastructure/tv.store.js';
|
|
@@ -8,7 +10,7 @@ import { TvStore } from '../../../../dpe/infrastructure/tv.store.js';
|
|
|
8
10
|
*
|
|
9
11
|
* Méthode de calcul 3CL-DPE 2021
|
|
10
12
|
* Octobre 2021
|
|
11
|
-
* @see
|
|
13
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
12
14
|
*
|
|
13
15
|
* Si le coefficient U des portes est connu et justifié, le saisir directement. Sinon, prendre les valeurs tabulées
|
|
14
16
|
*/
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { VentilationDE, VentilationDI } from '../../../../dpe/domain/models/ventilation.model.js' */
|
|
2
|
+
/** @import { Contexte } from '../../models/contexte.model.js' */
|
|
1
3
|
import { DeperditionService } from '../deperdition.service.js';
|
|
2
4
|
|
|
3
5
|
import { logger } from '../../../../../core/util/logger/log-service.js';
|
|
@@ -11,7 +13,7 @@ import { TypeVentilation } from '../../../../dpe/domain/models/type-ventilation.
|
|
|
11
13
|
*
|
|
12
14
|
* Méthode de calcul 3CL-DPE 2021
|
|
13
15
|
* Octobre 2021
|
|
14
|
-
* @see
|
|
16
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
15
17
|
*/
|
|
16
18
|
export class DeperditionVentilationService extends DeperditionService {
|
|
17
19
|
/**
|
package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js
CHANGED
|
@@ -18,7 +18,7 @@ const { DeperditionVentilationService } = await import('./deperdition-ventilatio
|
|
|
18
18
|
* Tests unitaires isolés du calcul de Q4Paconv (`DeperditionVentilationService.q4paConv`).
|
|
19
19
|
* Le store des tables de valeurs est remplacé par un double de test.
|
|
20
20
|
*
|
|
21
|
-
* @see
|
|
21
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §4
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
/** @type {DeperditionVentilationService} */
|
|
@@ -6,7 +6,7 @@ import { TypeDpe } from '../../../dpe/domain/models/type-habitation.model.js';
|
|
|
6
6
|
*
|
|
7
7
|
* Methode_de_calcul_3CL_DPE_2021 - Page 70
|
|
8
8
|
* Octobre 2021
|
|
9
|
-
* @see
|
|
9
|
+
* @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
|
|
10
10
|
*/
|
|
11
11
|
export class NadeqService {
|
|
12
12
|
/**
|
|
@@ -4,7 +4,7 @@ import { TypeDpe } from '../../../dpe/domain/models/type-habitation.model.js';
|
|
|
4
4
|
|
|
5
5
|
describe('Nadeq unit tests', () => {
|
|
6
6
|
/**
|
|
7
|
-
* @see
|
|
7
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf Page 70
|
|
8
8
|
*/
|
|
9
9
|
const service = new NadeqService();
|
|
10
10
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { TypeDpe, TypeHabitation } from '../../../dpe/domain/models/
|
|
1
|
+
import type { TypeDpe, TypeHabitation } from '../../../dpe/domain/models/type-habitation.model.js';
|
|
2
2
|
|
|
3
3
|
export interface Contexte {
|
|
4
4
|
typeHabitation: TypeHabitation;
|
|
5
5
|
typeDpe: TypeDpe;
|
|
6
|
-
enumPeriodeConstructionId:
|
|
6
|
+
enumPeriodeConstructionId: string;
|
|
7
7
|
anneeConstruction: number;
|
|
8
8
|
surfaceHabitable: number;
|
|
9
9
|
hauteurSousPlafond: number;
|
package/ficheTechnique.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { XsdFicheTechnique } from './features/dpe/domain/models/dpe-xsd.generated.js' */
|
|
2
|
+
/** @import { FullDpe } from './features/dpe/domain/models/dpe.model.js' */
|
|
1
3
|
/**
|
|
2
4
|
* Recherche dans les fiches techniques d'un DPE.
|
|
3
5
|
*
|
|
@@ -29,7 +31,7 @@ const indexParDpe = new WeakMap();
|
|
|
29
31
|
function indexerFichesTechniques(dpe) {
|
|
30
32
|
const parCategorie = new Map();
|
|
31
33
|
|
|
32
|
-
/** @type {
|
|
34
|
+
/** @type {XsdFicheTechnique[]} */
|
|
33
35
|
let fichesTechniques = dpe.fiche_technique_collection?.fiche_technique || [];
|
|
34
36
|
if (!Array.isArray(fichesTechniques)) {
|
|
35
37
|
fichesTechniques = [fichesTechniques];
|
|
@@ -87,7 +89,7 @@ function champEnMinuscules(groupe, field) {
|
|
|
87
89
|
* @param dpe {FullDpe}
|
|
88
90
|
* @param categoryFicheTechiqueId {string}
|
|
89
91
|
* @param description {string}
|
|
90
|
-
* @param classifications {[
|
|
92
|
+
* @param classifications {string[]}
|
|
91
93
|
* @param field {'description' | 'valeur'}
|
|
92
94
|
*/
|
|
93
95
|
export default function getFicheTechnique(
|
package/globals.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compléments aux typings globaux de TypeScript.
|
|
3
|
+
*
|
|
4
|
+
* `parseInt` / `parseFloat` sont appelés dans le moteur avec des nombres (conversion implicite
|
|
5
|
+
* en chaîne, comportement JS standard) : on déclare ces surcharges plutôt que de modifier
|
|
6
|
+
* chaque appel.
|
|
7
|
+
*/
|
|
8
|
+
declare function parseInt(value: string | number, radix?: number): number;
|
|
9
|
+
declare function parseFloat(value: string | number): number;
|
|
10
|
+
|
|
11
|
+
interface NumberConstructor {
|
|
12
|
+
parseInt(value: string | number, radix?: number): number;
|
|
13
|
+
parseFloat(value: string | number): number;
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open3cl/engine",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.4",
|
|
4
4
|
"description": "Open Source 3CL-DPE engine",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"directories": {
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"release": "semantic-release",
|
|
28
28
|
"release:dry": "semantic-release --dry-run",
|
|
29
29
|
"prepare": "husky",
|
|
30
|
-
"types:generate": "node scripts/generate_types_from_xsd.js && prettier --write src/features/dpe/domain/models/dpe-xsd.generated.ts",
|
|
31
|
-
"assets:sync": "node scripts/synchronize_assets.js",
|
|
30
|
+
"types:generate": "node scripts/generate_types_from_xsd.js && node scripts/generate_tables_types.js && prettier --write src/features/dpe/domain/models/dpe-xsd.generated.ts src/enums.d.ts src/tv.d.ts",
|
|
31
|
+
"assets:sync": "node scripts/synchronize_assets.js && node scripts/generate_tables_types.js && prettier --write src/enums.d.ts src/tv.d.ts",
|
|
32
32
|
"version:update": "node scripts/update_version.js",
|
|
33
33
|
"reports:preview": "npm run http-server dist/reports/corpus -o",
|
|
34
34
|
"reports:clean": "node scripts/clean_corpus_reports.js",
|
package/preprocessor/index.js
CHANGED