@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.
Files changed (150) hide show
  1. package/10_besoin_fr.spec.js +1 -1
  2. package/10_clim.js +1 -1
  3. package/10_clim.spec.js +5 -9
  4. package/11_besoin_ecs.spec.js +1 -1
  5. package/11_ecs.js +2 -1
  6. package/11_ecs.spec.js +2 -2
  7. package/11_nadeq.js +1 -0
  8. package/11_nadeq.spec.js +1 -1
  9. package/12.4_pac.js +5 -3
  10. package/12.4_pac.spec.js +10 -18
  11. package/13.2_generateur_combustion.js +19 -16
  12. package/13.2_generateur_combustion.spec.js +10 -10
  13. package/13.2_generateur_combustion_bouilleur.js +5 -2
  14. package/13.2_generateur_combustion_bouilleur.spec.js +1 -1
  15. package/13.2_generateur_combustion_ch.js +8 -7
  16. package/13.2_generateur_combustion_ch.spec.js +7 -7
  17. package/13.2_generateur_combustion_chaudiere.js +5 -2
  18. package/13.2_generateur_combustion_chaudiere.spec.js +2 -2
  19. package/13.2_generateur_combustion_pdim.js +6 -6
  20. package/13.2_generateur_combustion_pdim.spec.js +1 -1
  21. package/13.2_generateur_combustion_pn.spec.js +1 -1
  22. package/13.2_generateur_pac.js +4 -1
  23. package/13.2_generateur_pac.spec.js +1 -1
  24. package/13_rendement_distribution_ecs.spec.js +1 -1
  25. package/14_generateur_ecs.js +2 -1
  26. package/14_generateur_ecs.spec.js +4 -4
  27. package/15_conso_aux.js +19 -17
  28. package/15_conso_aux.spec.js +8 -8
  29. package/16.2_production_enr.js +4 -3
  30. package/16.2_production_enr.spec.js +1 -1
  31. package/16_conso_eclairage.spec.js +1 -1
  32. package/2021_04_13_confort_ete.spec.js +1 -1
  33. package/2021_04_13_qualite_isolation.js +1 -1
  34. package/2021_04_13_qualite_isolation.spec.js +2 -2
  35. package/3.1_b.spec.js +1 -1
  36. package/3.2.1_mur.js +10 -9
  37. package/3.2.1_mur.spec.js +11 -19
  38. package/3.2.2_plancher_bas.js +4 -3
  39. package/3.2.2_plancher_bas.spec.js +10 -20
  40. package/3.2.3_plancher_haut.js +1 -1
  41. package/3.2.3_plancher_haut.spec.js +2 -2
  42. package/3.3.1.4_porte.js +1 -1
  43. package/3.3.1.4_porte.spec.js +2 -2
  44. package/3.3_baie_vitree.js +2 -2
  45. package/3.3_baie_vitree.spec.js +3 -3
  46. package/3.4_pont_thermique.js +6 -4
  47. package/3.4_pont_thermique.spec.js +7 -7
  48. package/3_deperdition.js +1 -0
  49. package/3_deperdition.spec.js +3 -3
  50. package/4_ventilation.js +2 -2
  51. package/4_ventilation.spec.js +1 -1
  52. package/5_conso_ventilation.spec.js +1 -1
  53. package/6.1_apport_gratuit.spec.js +2 -2
  54. package/6.2_surface_sud_equivalente.js +12 -9
  55. package/6.2_surface_sud_equivalente.spec.js +3 -3
  56. package/7_inertie.js +7 -4
  57. package/7_inertie.spec.js +1 -1
  58. package/8_intermittence.spec.js +1 -1
  59. package/9_besoin_ch.js +5 -3
  60. package/9_besoin_ch.spec.js +3 -3
  61. package/9_chauffage.js +12 -11
  62. package/9_chauffage.spec.js +7 -7
  63. package/9_conso_ch.spec.js +3 -3
  64. package/9_emetteur_ch.js +5 -5
  65. package/9_emetteur_ch.spec.js +1 -1
  66. package/9_generateur_ch.js +16 -13
  67. package/9_generateur_ch.spec.js +6 -6
  68. package/README.md +19 -19
  69. package/apport_et_besoin.spec.js +1 -1
  70. package/conso.js +18 -14
  71. package/conso.spec.js +3 -3
  72. package/core/assets/domain/synchronize-assets.js +2 -0
  73. package/core/assets/domain/synchronize-c1-tables.js +2 -0
  74. package/core/assets/domain/synchronize-dpe-ges-limit-values-tables.js +2 -0
  75. package/core/assets/domain/synchronize-enum-tables.js +2 -0
  76. package/core/assets/domain/synchronize-solicitations-tables.js +2 -0
  77. package/core/assets/domain/synchronize-valeur-tables.js +6 -0
  78. package/core/file/infrastructure/adapter/csv-parser.store.js +2 -1
  79. package/dpe-sanitizer.service.js +1 -0
  80. package/engine.js +2 -1
  81. package/enums.d.ts +1257 -0
  82. package/features/dpe/domain/models/baie-ets.model.ts +1 -1
  83. package/features/dpe/domain/models/baie-vitree.model.ts +6 -2
  84. package/features/dpe/domain/models/climatisation.model.ts +1 -1
  85. package/features/dpe/domain/models/dpe.model.ts +16 -23
  86. package/features/dpe/domain/models/ets.model.ts +1 -1
  87. package/features/dpe/domain/models/installation-chauffage.model.ts +54 -8
  88. package/features/dpe/domain/models/installation-ecs.model.ts +24 -6
  89. package/features/dpe/domain/models/mur.model.ts +1 -1
  90. package/features/dpe/domain/models/plancher.model.ts +1 -1
  91. package/features/dpe/domain/models/pont-thermique.model.ts +1 -1
  92. package/features/dpe/domain/models/porte.model.ts +1 -1
  93. package/features/dpe/domain/models/production-elec-enr.model.ts +1 -1
  94. package/features/dpe/domain/models/sortie.model.ts +1 -1
  95. package/features/dpe/domain/models/type-generateur.model.js +4 -3
  96. package/features/dpe/domain/models/type-habitation.model.js +8 -6
  97. package/features/dpe/domain/models/type-stockage.model.js +4 -3
  98. package/features/dpe/domain/models/type-ventilation.model.js +4 -3
  99. package/features/dpe/domain/models/ventilation.model.ts +1 -1
  100. package/features/dpe/infrastructure/ch/chTv.store.js +2 -2
  101. package/features/dpe/infrastructure/ecs/ecsTv.store.js +3 -3
  102. package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.js +1 -1
  103. package/features/dpe/infrastructure/froid/frTv.store.js +3 -3
  104. package/features/dpe/infrastructure/froid/frTv.store.spec.js +1 -1
  105. package/features/dpe/infrastructure/tv.store.js +1 -1
  106. package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.js +3 -0
  107. package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.js +3 -1
  108. package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.js +3 -1
  109. package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.js +9 -3
  110. package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +1 -1
  111. package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.js +2 -1
  112. package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.js +4 -1
  113. package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.js +3 -1
  114. package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.js +7 -2
  115. package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +1 -1
  116. package/features/engine/domain/ch/emetteur-ch.service.js +3 -1
  117. package/features/engine/domain/ch/emetteur-ch.service.spec.js +1 -1
  118. package/features/engine/domain/ch/generateur-ch.service.js +4 -1
  119. package/features/engine/domain/ch/generateur-ch.service.spec.js +3 -3
  120. package/features/engine/domain/ch/installation-ch.service.js +2 -0
  121. package/features/engine/domain/conso/conso.service.js +2 -0
  122. package/features/engine/domain/conso/froid/conso-froid.service.js +5 -1
  123. package/features/engine/domain/contexte.builder.js +2 -0
  124. package/features/engine/domain/ecs/generateur-ecs.service.js +1 -0
  125. package/features/engine/domain/ecs/installation-ecs.service.js +3 -0
  126. package/features/engine/domain/engine.service.js +1 -0
  127. package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.js +4 -1
  128. package/features/engine/domain/enveloppe/deperdition-enveloppe.service.js +3 -0
  129. package/features/engine/domain/enveloppe/deperdition.service.js +8 -4
  130. package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.js +4 -1
  131. package/features/engine/domain/enveloppe/mur/deperdition-mur.service.js +3 -1
  132. package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.js +3 -1
  133. package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +2 -2
  134. package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.js +4 -2
  135. package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.js +9 -1
  136. package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +1 -1
  137. package/features/engine/domain/enveloppe/porte/deperdition-porte.service.js +3 -1
  138. package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.js +3 -1
  139. package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +1 -1
  140. package/features/engine/domain/logement/nadeq.service.js +1 -1
  141. package/features/engine/domain/logement/nadeq.service.spec.js +1 -1
  142. package/features/engine/domain/models/contexte.model.ts +2 -2
  143. package/features/normalizer/domain/dpe-normalizer.service.js +1 -0
  144. package/ficheTechnique.js +4 -2
  145. package/globals.d.ts +14 -0
  146. package/package.json +3 -3
  147. package/preprocessor/index.js +1 -0
  148. package/tv.d.ts +759 -0
  149. package/tvs.d.ts +2 -7
  150. 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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §6.3
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.2.4
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.2.4
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,5 @@
1
+ /** @import { Logement } from '../../../dpe/domain/models/dpe.model.js' */
2
+ /** @import { Contexte } from '../models/contexte.model.js' */
1
3
  import { inject } from 'dioma';
2
4
  import { GenerateurChService } from './generateur-ch.service.js';
3
5
 
@@ -1,3 +1,5 @@
1
+ /** @import { Logement } from '../../../dpe/domain/models/dpe.model.js' */
2
+ /** @import { Contexte } from '../models/contexte.model.js' */
1
3
  import { inject } from 'dioma';
2
4
  import { ConsoFroidService } from './froid/conso-froid.service.js';
3
5
 
@@ -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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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,4 @@
1
+ /** @import { Dpe } from '../../dpe/domain/models/dpe.model.js' */
1
2
  import { inject } from 'dioma';
2
3
  import { ContexteBuilder } from './contexte.builder.js';
3
4
  import { DeperditionEnveloppeService } from './enveloppe/deperdition-enveloppe.service.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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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 {TvStore}
15
+ * @type {S}
12
16
  */
13
17
  tvStore;
14
18
 
15
19
  /**
16
- * @param tvStore {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 {number}
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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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
  /**
@@ -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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.2 (tableau ue)
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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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'|'terasse'}
124
+ * @return {'combles'|'terrasse'}
123
125
  */
124
126
  #getTypeAdjacence(phDE) {
125
127
  switch (phDE.enum_type_adjacence_id) {
@@ -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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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
  /**
@@ -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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.4
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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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
  /**
@@ -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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §4
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 consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf Page 70
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/dpe.model';
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: number;
6
+ enumPeriodeConstructionId: string;
7
7
  anneeConstruction: number;
8
8
  surfaceHabitable: number;
9
9
  hauteurSousPlafond: number;
@@ -1,3 +1,4 @@
1
+ /** @import { Dpe } from '../../dpe/domain/models/dpe.model.js' */
1
2
  import { DpePreProcessor } from '../../../preprocessor/index.js';
2
3
 
3
4
  /**
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 {FicheTechniqueItem[]} */
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 {[string]}
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",
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",
@@ -1,3 +1,4 @@
1
+ /** @import { Dpe } from '../features/dpe/domain/models/dpe.model.js' */
1
2
  /**
2
3
  * Pré-traitement du DPE d'entrée.
3
4
  *