@open3cl/engine 1.11.2 → 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 (154) 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/11_rdim_ecs_individuelle_unique.js +78 -0
  10. package/11_rdim_ecs_individuelle_unique.spec.js +136 -0
  11. package/12.4_pac.js +5 -3
  12. package/12.4_pac.spec.js +10 -18
  13. package/13.2_generateur_combustion.js +19 -16
  14. package/13.2_generateur_combustion.spec.js +10 -10
  15. package/13.2_generateur_combustion_bouilleur.js +5 -2
  16. package/13.2_generateur_combustion_bouilleur.spec.js +1 -1
  17. package/13.2_generateur_combustion_ch.js +8 -7
  18. package/13.2_generateur_combustion_ch.spec.js +7 -7
  19. package/13.2_generateur_combustion_chaudiere.js +5 -2
  20. package/13.2_generateur_combustion_chaudiere.spec.js +2 -2
  21. package/13.2_generateur_combustion_pdim.js +6 -6
  22. package/13.2_generateur_combustion_pdim.spec.js +1 -1
  23. package/13.2_generateur_combustion_pn.spec.js +1 -1
  24. package/13.2_generateur_pac.js +4 -1
  25. package/13.2_generateur_pac.spec.js +1 -1
  26. package/13_rendement_distribution_ecs.spec.js +1 -1
  27. package/14_generateur_ecs.js +2 -1
  28. package/14_generateur_ecs.spec.js +4 -4
  29. package/15_conso_aux.js +19 -17
  30. package/15_conso_aux.spec.js +8 -8
  31. package/16.2_production_enr.js +4 -3
  32. package/16.2_production_enr.spec.js +1 -1
  33. package/16_conso_eclairage.spec.js +1 -1
  34. package/2021_04_13_confort_ete.spec.js +1 -1
  35. package/2021_04_13_qualite_isolation.js +1 -1
  36. package/2021_04_13_qualite_isolation.spec.js +2 -2
  37. package/3.1_b.spec.js +1 -1
  38. package/3.2.1_mur.js +10 -9
  39. package/3.2.1_mur.spec.js +11 -19
  40. package/3.2.2_plancher_bas.js +4 -3
  41. package/3.2.2_plancher_bas.spec.js +10 -20
  42. package/3.2.3_plancher_haut.js +1 -1
  43. package/3.2.3_plancher_haut.spec.js +2 -2
  44. package/3.3.1.4_porte.js +1 -1
  45. package/3.3.1.4_porte.spec.js +2 -2
  46. package/3.3_baie_vitree.js +2 -2
  47. package/3.3_baie_vitree.spec.js +3 -3
  48. package/3.4_pont_thermique.js +6 -4
  49. package/3.4_pont_thermique.spec.js +7 -7
  50. package/3_deperdition.js +1 -0
  51. package/3_deperdition.spec.js +3 -3
  52. package/4_ventilation.js +2 -2
  53. package/4_ventilation.spec.js +1 -1
  54. package/5_conso_ventilation.spec.js +1 -1
  55. package/6.1_apport_gratuit.spec.js +2 -2
  56. package/6.2_surface_sud_equivalente.js +12 -9
  57. package/6.2_surface_sud_equivalente.spec.js +3 -3
  58. package/7_inertie.js +7 -4
  59. package/7_inertie.spec.js +1 -1
  60. package/8_intermittence.spec.js +1 -1
  61. package/9_besoin_ch.js +5 -3
  62. package/9_besoin_ch.spec.js +3 -3
  63. package/9_chauffage.js +12 -11
  64. package/9_chauffage.spec.js +7 -7
  65. package/9_conso_ch.spec.js +3 -3
  66. package/9_emetteur_ch.js +5 -5
  67. package/9_emetteur_ch.spec.js +1 -1
  68. package/9_generateur_ch.js +16 -13
  69. package/9_generateur_ch.spec.js +6 -6
  70. package/README.md +19 -19
  71. package/apport_et_besoin.spec.js +1 -1
  72. package/conso.js +18 -14
  73. package/conso.spec.js +3 -3
  74. package/core/assets/domain/synchronize-assets.js +2 -0
  75. package/core/assets/domain/synchronize-c1-tables.js +2 -0
  76. package/core/assets/domain/synchronize-dpe-ges-limit-values-tables.js +2 -0
  77. package/core/assets/domain/synchronize-enum-tables.js +2 -0
  78. package/core/assets/domain/synchronize-solicitations-tables.js +2 -0
  79. package/core/assets/domain/synchronize-valeur-tables.js +6 -0
  80. package/core/file/infrastructure/adapter/csv-parser.store.js +2 -1
  81. package/dpe-sanitizer.service.js +1 -0
  82. package/engine.js +11 -2
  83. package/engine.spec.js +23 -2
  84. package/enums.d.ts +1257 -0
  85. package/features/dpe/domain/models/baie-ets.model.ts +8 -11
  86. package/features/dpe/domain/models/baie-vitree.model.ts +28 -96
  87. package/features/dpe/domain/models/climatisation.model.ts +13 -23
  88. package/features/dpe/domain/models/dpe-xsd.generated.ts +2797 -0
  89. package/features/dpe/domain/models/dpe.model.ts +105 -181
  90. package/features/dpe/domain/models/ets.model.ts +10 -18
  91. package/features/dpe/domain/models/installation-chauffage.model.ts +92 -99
  92. package/features/dpe/domain/models/installation-ecs.model.ts +45 -77
  93. package/features/dpe/domain/models/mur.model.ts +10 -38
  94. package/features/dpe/domain/models/plancher.model.ts +22 -63
  95. package/features/dpe/domain/models/pont-thermique.model.ts +10 -20
  96. package/features/dpe/domain/models/porte.model.ts +10 -30
  97. package/features/dpe/domain/models/production-elec-enr.model.ts +13 -27
  98. package/features/dpe/domain/models/sortie.model.ts +32 -176
  99. package/features/dpe/domain/models/type-generateur.model.js +4 -3
  100. package/features/dpe/domain/models/type-habitation.model.js +8 -6
  101. package/features/dpe/domain/models/type-stockage.model.js +4 -3
  102. package/features/dpe/domain/models/type-ventilation.model.js +4 -3
  103. package/features/dpe/domain/models/ventilation.model.ts +15 -25
  104. package/features/dpe/infrastructure/ch/chTv.store.js +2 -2
  105. package/features/dpe/infrastructure/ecs/ecsTv.store.js +3 -3
  106. package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.js +1 -1
  107. package/features/dpe/infrastructure/froid/frTv.store.js +3 -3
  108. package/features/dpe/infrastructure/froid/frTv.store.spec.js +1 -1
  109. package/features/dpe/infrastructure/tv.store.js +1 -1
  110. package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.js +3 -0
  111. package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.js +3 -1
  112. package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.js +3 -1
  113. package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.js +9 -3
  114. package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +1 -1
  115. package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.js +2 -1
  116. package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.js +4 -1
  117. package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.js +3 -1
  118. package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.js +7 -2
  119. package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +1 -1
  120. package/features/engine/domain/ch/emetteur-ch.service.js +3 -1
  121. package/features/engine/domain/ch/emetteur-ch.service.spec.js +1 -1
  122. package/features/engine/domain/ch/generateur-ch.service.js +4 -1
  123. package/features/engine/domain/ch/generateur-ch.service.spec.js +3 -3
  124. package/features/engine/domain/ch/installation-ch.service.js +2 -0
  125. package/features/engine/domain/conso/conso.service.js +2 -0
  126. package/features/engine/domain/conso/froid/conso-froid.service.js +5 -1
  127. package/features/engine/domain/contexte.builder.js +2 -0
  128. package/features/engine/domain/ecs/generateur-ecs.service.js +1 -0
  129. package/features/engine/domain/ecs/installation-ecs.service.js +3 -0
  130. package/features/engine/domain/engine.service.js +1 -0
  131. package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.js +4 -1
  132. package/features/engine/domain/enveloppe/deperdition-enveloppe.service.js +3 -0
  133. package/features/engine/domain/enveloppe/deperdition.service.js +8 -4
  134. package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.js +4 -1
  135. package/features/engine/domain/enveloppe/mur/deperdition-mur.service.js +3 -1
  136. package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.js +3 -1
  137. package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +2 -2
  138. package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.js +4 -2
  139. package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.js +9 -1
  140. package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +1 -1
  141. package/features/engine/domain/enveloppe/porte/deperdition-porte.service.js +3 -1
  142. package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.js +3 -1
  143. package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +1 -1
  144. package/features/engine/domain/logement/nadeq.service.js +1 -1
  145. package/features/engine/domain/logement/nadeq.service.spec.js +1 -1
  146. package/features/engine/domain/models/contexte.model.ts +2 -2
  147. package/features/normalizer/domain/dpe-normalizer.service.js +1 -0
  148. package/ficheTechnique.js +4 -2
  149. package/globals.d.ts +14 -0
  150. package/package.json +3 -2
  151. package/preprocessor/index.js +1 -0
  152. package/tv.d.ts +759 -0
  153. package/tvs.d.ts +2 -7
  154. package/utils.js +8 -6
@@ -1,30 +1,20 @@
1
- import { DE } from './dpe.model';
1
+ // Alias des types générés depuis le XSD DPE (voir dpe-xsd.generated.ts). Les extensions propres
2
+ // à Open3CL se déclarent ici (hors fichier généré) pour survivre à la régénération.
3
+ import type {
4
+ XsdLogementVentilation,
5
+ XsdLogementVentilationDonneeEntree,
6
+ XsdLogementVentilationDonneeIntermediaire
7
+ } from './dpe-xsd.generated.js';
2
8
 
3
- export interface Ventilation {
4
- donnee_entree?: VentilationDE;
5
- donnee_intermediaire?: VentilationDI;
6
- }
7
-
8
- export interface VentilationDE extends DE {
9
- enum_type_ventilation_id: number;
10
- surface_ventile: number;
11
- plusieurs_facade_exposee: boolean;
12
- tv_q4pa_conv_id?: number;
13
- q4pa_conv_saisi?: number;
14
- enum_methode_saisie_q4pa_conv_id: number;
15
- tv_debits_ventilation_id: number;
16
- ventilation_post_2012: boolean;
17
- ref_produit_ventilation?: number;
18
- cle_repartition_ventilation?: number;
19
- }
20
-
21
- export interface VentilationDI {
22
- pvent_moy?: number;
23
- q4pa_conv: number;
24
- conso_auxiliaire_ventilation: number;
25
- hperm: number;
26
- hvent: number;
9
+ export interface Ventilation extends Omit<XsdLogementVentilation, 'donnee_entree'> {
10
+ donnee_entree: VentilationDE;
27
11
  }
12
+ /** + champs Open3CL hors XSD issus des fiches techniques. */
13
+ export type VentilationDE = XsdLogementVentilationDonneeEntree & {
14
+ ficheTechniqueFacadesExposees?: any;
15
+ ficheTechniqueVentilationPost2012?: any;
16
+ };
17
+ export type VentilationDI = XsdLogementVentilationDonneeIntermediaire;
28
18
 
29
19
  enum TypeVentilation {
30
20
  SIMPLE_FLUX_AUTO = 'SIMPLE_FLUX_AUTO',
@@ -10,14 +10,14 @@ import { logger } from '../../../../core/util/logger/log-service.js';
10
10
  export class ChTvStore extends TvStore {
11
11
  /**
12
12
  * Récupération des ids des générateurs de chauffage à combustion
13
- * @return {[number]}
13
+ * @return {number[]}
14
14
  */
15
15
  getCombustionGenerateurs() {
16
16
  return this.#getTypeGenerateurChId('generateur_combustion');
17
17
  }
18
18
  /**
19
19
  * Récupération des ids des générateurs de chauffage pompes à chaleur
20
- * @return {[number]}
20
+ * @return {number[]}
21
21
  */
22
22
  getPacGenerateurs() {
23
23
  return this.#getTypeGenerateurChId('scop');
@@ -9,7 +9,7 @@ export class EcsTvStore extends TvStore {
9
9
  /**
10
10
  * Température moyenne d’eau froide sanitaire sur le mois j (°C).
11
11
  * La température d’eau froide est une donnée climatique mensuelle pour chacune des 8 zones climatiques
12
- * @see 11.1 Calcul du besoin d’ECS : Tefs
12
+ * @see Chapitre 11.1 Calcul du besoin d’ECS : Tefs
13
13
  *
14
14
  * @param classeAltitude {string}
15
15
  * @param zoneClimatique {string}
@@ -23,7 +23,7 @@ export class EcsTvStore extends TvStore {
23
23
 
24
24
  /**
25
25
  * Coefficient de perte du ballon de stockage
26
- * @see 11.6.2 Pertes des ballons électriques
26
+ * @see Chapitre 11.6.2 Pertes des ballons électriques
27
27
  *
28
28
  * @param enumTypeGenerateurEcsId {string}
29
29
  * @param volumeStockage {number}
@@ -55,7 +55,7 @@ export class EcsTvStore extends TvStore {
55
55
 
56
56
  /**
57
57
  * Récupération des ids des générateurs électriques ECS
58
- * @return {[number]}
58
+ * @return {number[]}
59
59
  */
60
60
  getElectriqueEcsGenerateurs() {
61
61
  return [
@@ -349,7 +349,7 @@ export class BaieVitreeTvStore extends TvStore {
349
349
  }
350
350
 
351
351
  /**
352
- * @see 18.5 - Coefficients d’orientation et d’inclinaison des parois vitrées : C1
352
+ * @see Chapitre 18.5 - Coefficients d’orientation et d’inclinaison des parois vitrées : C1
353
353
  *
354
354
  * @param enumOrientationId {number}
355
355
  * @param enumInclinaisonVitrageId {number}
@@ -8,7 +8,7 @@ import { logger } from '../../../../core/util/logger/log-service.js';
8
8
  export class FrTvStore extends TvStore {
9
9
  /**
10
10
  * Recherche des valeurs nécessaires au calcul du besoin en froid
11
- * @see 10.2 Calcul du besoin mensuel de froid
11
+ * @see Chapitre 10.2 Calcul du besoin mensuel de froid
12
12
  * — e : nombre d’heures de chauffage pour un mois donné et une consigne de refroidissement à 26°C (comportement dépensier).
13
13
  * — nref26 : nombre d’heures de chauffage pour un mois donné et une consigne de refroidissement à 26°C (comportement dépensier).
14
14
  * — nref28 : nombre d’heures de chauffage pour un mois donné et une consigne de refroidissement à 28°C (comportement conventionnel).
@@ -19,7 +19,7 @@ export class FrTvStore extends TvStore {
19
19
  * — dh19 : degrés heures de chauffage pour un mois donné à 19°C (comportement conventionnel).
20
20
  * — dh21 : degrés heures de chauffage pour un mois donné à 21°C (comportement dépensier).
21
21
  *
22
- * @param type {'e', nref26' | 'nref28' | 'e_fr_26' | 'e_fr_28' | 'textmoy_clim_26' | 'textmoy_clim_28'| 'dh19'| 'dh21'}
22
+ * @param type {'e' | 'nref26' | 'nref28' | 'e_fr_26' | 'e_fr_28' | 'textmoy_clim_26' | 'textmoy_clim_28'| 'dh19'| 'dh21'}
23
23
  * @param classeAltitude {string}
24
24
  * @param zoneClimatique {string}
25
25
  * @param mois {string}
@@ -39,7 +39,7 @@ export class FrTvStore extends TvStore {
39
39
 
40
40
  /**
41
41
  * Coefficient d’efficience énergétique
42
- * @see 10.3 - Les consommations de refroidissement
42
+ * @see Chapitre 10.3 - Les consommations de refroidissement
43
43
  *
44
44
  * @param zoneClimatiqueId {string}
45
45
  * @param periodeInstallationId {number}
@@ -54,7 +54,7 @@ describe('Lecture des tables de valeurs', () => {
54
54
 
55
55
  /**
56
56
  * Nombre d’heures de refroidissement Nref entre 400 m et 800 m d’altitude
57
- * @see : Methode_de_calcul_3CL_DPE_2021-338.pdf - Annexe 18.2.2 (tableaux Nref (26°C) et Nref (28°C))
57
+ * @see Methode_de_calcul_3CL_DPE_2021-338.pdf - Annexe 18.2.2 (tableaux Nref (26°C) et Nref (28°C))
58
58
  */
59
59
  describe('lecture des heures de refroidissement Nref entre 400m et 800m', () => {
60
60
  const zones = ['h1a', 'h1b', 'h1c', 'h2a', 'h2b', 'h2c', 'h2d', 'h3'];
@@ -322,7 +322,7 @@ export class TvStore {
322
322
 
323
323
  /**
324
324
  * Débits de la ventilation
325
- * @param typeVentilation {number}
325
+ * @param typeVentilation {string}
326
326
  * @return {object|undefined}
327
327
  */
328
328
  getDebitsVentilation(typeVentilation) {
@@ -1,3 +1,6 @@
1
+ /** @import { Logement } from '../../../dpe/domain/models/dpe.model.js' */
2
+ /** @import { ApportEtBesoin } from '../../../dpe/domain/models/sortie.model.js' */
3
+ /** @import { Contexte } from '../models/contexte.model.js' */
1
4
  import { inject } from 'dioma';
2
5
  import { BesoinEcsService } from './ecs/besoin-ecs.service.js';
3
6
  import { SurfaceSudEquivalenteService } from './surface-sud-equivalente.service.js';
@@ -1,3 +1,5 @@
1
+ /** @import { Enveloppe, 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 { SurfaceSudEquivalenteService } from '../surface-sud-equivalente.service.js';
3
5
  import { mois_liste } from '../../../../../utils.js';
@@ -9,7 +11,7 @@ import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
9
11
  *
10
12
  * Methode_de_calcul_3CL_DPE_2021 - Page 42
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 ApportGratuitService {
15
17
  /**
@@ -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 { mois_liste } from '../../../../../utils.js';
2
4
  import { inject } from 'dioma';
3
5
  import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
@@ -8,7 +10,7 @@ import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
8
10
  *
9
11
  * Methode_de_calcul_3CL_DPE_2021 - Page 7
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
  export class BesoinChService {
14
16
  /**
@@ -1,3 +1,7 @@
1
+ /** @import { Logement } from '../../../../dpe/domain/models/dpe.model.js' */
2
+ /** @import { GenerateurChauffage } from '../../../../dpe/domain/models/installation-chauffage.model.js' */
3
+ /** @import { GenerateurEcs, GenerateurEcsDE, GenerateurEcsDI } from '../../../../dpe/domain/models/installation-ecs.model.js' */
4
+ /** @import { Contexte } from '../../models/contexte.model.js' */
1
5
  import { mois_liste } from '../../../../../utils.js';
2
6
  import { inject } from 'dioma';
3
7
  import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
@@ -12,7 +16,7 @@ import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
12
16
  *
13
17
  * Methode_de_calcul_3CL_DPE_2021 - Page 57
14
18
  * Octobre 2021
15
- * @see consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
19
+ * @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
16
20
  */
17
21
  export class PerteChRecupService {
18
22
  /**
@@ -93,8 +97,10 @@ export class PerteChRecupService {
93
97
 
94
98
  return installationsEcs.flatMap((installation) =>
95
99
  (installation.generateur_ecs_collection?.generateur_ecs || []).filter((generateurEcs) => {
96
- const generateurEcsDE = generateurEcs.donnee_entree || {};
97
- const generateurEcsDI = generateurEcs.donnee_intermediaire || {};
100
+ const generateurEcsDE = /** @type {GenerateurEcsDE} */ (generateurEcs.donnee_entree || {});
101
+ const generateurEcsDI = /** @type {GenerateurEcsDI} */ (
102
+ generateurEcs.donnee_intermediaire || {}
103
+ );
98
104
  return (
99
105
  Number(generateurEcsDI.qp0 || 0) > 0 &&
100
106
  Number(generateurEcsDE.position_volume_chauffe ?? 0) === 1 &&
@@ -12,7 +12,7 @@ let tvStore;
12
12
  /**
13
13
  * 9.1.1 Pertes récupérées de génération pour le chauffage
14
14
  * Qgen_rec_j = 0,48 * Cper * Qp0 * Dperj
15
- * @see : Methode_de_calcul_3CL_DPE_2021-338.pdf - §9.1.1
15
+ * @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §9.1.1
16
16
  */
17
17
  describe('Calcul des pertes récupérées de génération pour le chauffage', () => {
18
18
  /** @type {Contexte} */
@@ -1,3 +1,4 @@
1
+ /** @import { Contexte } from '../../models/contexte.model.js' */
1
2
  import { mois_liste, Njj } from '../../../../../utils.js';
2
3
  import { EcsTvStore } from '../../../../dpe/infrastructure/ecs/ecsTv.store.js';
3
4
  import { inject } from 'dioma';
@@ -8,7 +9,7 @@ import { inject } from 'dioma';
8
9
  *
9
10
  * Methode_de_calcul_3CL_DPE_2021 - Page 70
10
11
  * Octobre 2021
11
- * @see consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
12
+ * @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
12
13
  */
13
14
  export class BesoinEcsService {
14
15
  /**
@@ -1,3 +1,6 @@
1
+ /** @import { Logement } from '../../../../dpe/domain/models/dpe.model.js' */
2
+ /** @import { InstallationEcsDU } from '../../../../dpe/domain/models/installation-ecs.model.js' */
3
+ /** @import { Contexte } from '../../models/contexte.model.js' */
1
4
  import { mois_liste } from '../../../../../utils.js';
2
5
  import { inject } from 'dioma';
3
6
  import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
@@ -13,7 +16,7 @@ import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
13
16
  *
14
17
  * Methode_de_calcul_3CL_DPE_2021 - Page 57
15
18
  * Octobre 2021
16
- * @see consolide_anne…arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
19
+ * @see consolide_annexe_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf
17
20
  */
18
21
  export class PerteEcsRecupService {
19
22
  /**
@@ -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 { mois_liste } from '../../../../../utils.js';
2
4
  import { inject } from 'dioma';
3
5
  import { FrTvStore } from '../../../../dpe/infrastructure/froid/frTv.store.js';
@@ -9,7 +11,7 @@ import { ApportGratuitService } from '../apport_gratuit/apport-gratuit.service.j
9
11
  *
10
12
  * Methode_de_calcul_3CL_DPE_2021 - Page 68
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 BesoinFroidService {
15
17
  /**
@@ -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
  /**