@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
@@ -3,7 +3,7 @@
3
3
  import type {
4
4
  XsdLogementEnveloppeEtsBaieEts,
5
5
  XsdLogementEnveloppeEtsBaieEtsDonneeEntree
6
- } from './dpe-xsd.generated';
6
+ } from './dpe-xsd.generated.js';
7
7
 
8
8
  export type BaieEts = XsdLogementEnveloppeEtsBaieEts;
9
9
  export type BaieEtsDE = XsdLogementEnveloppeEtsBaieEtsDonneeEntree;
@@ -8,14 +8,18 @@ import type {
8
8
  XsdLogementEnveloppeBaieVitreeDonneeEntree,
9
9
  XsdLogementEnveloppeBaieVitreeDonneeEntreeMasqueLointainNonHomogene,
10
10
  XsdLogementEnveloppeBaieVitreeDonneeIntermediaire
11
- } from './dpe-xsd.generated';
11
+ } from './dpe-xsd.generated.js';
12
12
 
13
13
  /** + `donnee_utilisateur` Open3CL hors XSD. */
14
14
  export type BaieVitree = XsdLogementEnveloppeBaieVitree & {
15
15
  donnee_utilisateur?: Record<string, any>;
16
16
  };
17
17
  export type BaieVitreeDE = XsdLogementEnveloppeBaieVitreeDonneeEntree;
18
- export type BaieVitreeDI = XsdLogementEnveloppeBaieVitreeDonneeIntermediaire;
18
+ /** + facteurs d'ensoleillement `fe1` / `fe2` (masques proches / lointains) calculés par le moteur hors XSD. */
19
+ export type BaieVitreeDI = XsdLogementEnveloppeBaieVitreeDonneeIntermediaire & {
20
+ fe1?: number;
21
+ fe2?: number;
22
+ };
19
23
  export type BaieVitreeDoubleFenetre = XsdLogementEnveloppeBaieVitreeBaieVitreeDoubleFenetre;
20
24
  export type BaieVitreeDoubleFenetreDE =
21
25
  XsdLogementEnveloppeBaieVitreeBaieVitreeDoubleFenetreDonneeEntree;
@@ -4,7 +4,7 @@ import type {
4
4
  XsdLogementClimatisation,
5
5
  XsdLogementClimatisationDonneeEntree,
6
6
  XsdLogementClimatisationDonneeIntermediaire
7
- } from './dpe-xsd.generated';
7
+ } from './dpe-xsd.generated.js';
8
8
 
9
9
  export interface Climatisation extends Omit<XsdLogementClimatisation, 'donnee_intermediaire'> {
10
10
  donnee_intermediaire?: ClimatisationDI;
@@ -11,19 +11,19 @@ import type {
11
11
  XsdLogementEnveloppe,
12
12
  XsdLogementMeteo,
13
13
  XsdTAdresse
14
- } from './dpe-xsd.generated';
15
- import type { BaieVitree } from './baie-vitree.model';
16
- import type { Climatisation } from './climatisation.model';
17
- import type { Ets } from './ets.model';
18
- import type { InstallationChauffage } from './installation-chauffage.model';
19
- import type { InstallationEcs } from './installation-ecs.model';
20
- import type { Mur } from './mur.model';
21
- import type { PlancherBas, PlancherHaut } from './plancher.model';
22
- import type { PontThermique } from './pont-thermique.model';
23
- import type { Porte } from './porte.model';
24
- import type { ProductionElecEnr } from './production-elec-enr.model';
25
- import type { Sortie } from './sortie.model';
26
- import type { Ventilation } from './ventilation.model';
14
+ } from './dpe-xsd.generated.js';
15
+ import type { BaieVitree } from './baie-vitree.model.js';
16
+ import type { Climatisation } from './climatisation.model.js';
17
+ import type { Ets } from './ets.model.js';
18
+ import type { InstallationChauffage } from './installation-chauffage.model.js';
19
+ import type { InstallationEcs } from './installation-ecs.model.js';
20
+ import type { Mur } from './mur.model.js';
21
+ import type { PlancherBas, PlancherHaut } from './plancher.model.js';
22
+ import type { PontThermique } from './pont-thermique.model.js';
23
+ import type { Porte } from './porte.model.js';
24
+ import type { ProductionElecEnr } from './production-elec-enr.model.js';
25
+ import type { Sortie } from './sortie.model.js';
26
+ import type { Ventilation } from './ventilation.model.js';
27
27
 
28
28
  // Types issus du XSD (générés) : voir dpe-xsd.generated.ts
29
29
  export type Administratif = XsdAdministratif;
@@ -124,15 +124,8 @@ export interface DE {
124
124
  reference?: string;
125
125
  }
126
126
 
127
- export enum TypeHabitation {
128
- MAISON = 'MAISON',
129
- APPARTEMENT = 'APPARTEMENT',
130
- IMMEUBLE = 'IMMEUBLE'
131
- }
132
- export enum TypeDpe {
133
- MAISON = 'MAISON',
134
- APPARTEMENT = 'APPARTEMENT',
135
- IMMEUBLE = 'IMMEUBLE'
136
- }
127
+ /** Types définis à l'exécution dans type-habitation.model.js. */
128
+ export type TypeHabitation = 'MAISON' | 'APPARTEMENT' | 'IMMEUBLE';
129
+ export type TypeDpe = 'MAISON' | 'APPARTEMENT' | 'APPARTEMENT_A_PARTIR_IMMEUBLE' | 'IMMEUBLE';
137
130
 
138
131
  export type FullDpe = Dpe;
@@ -4,7 +4,7 @@ import type {
4
4
  XsdLogementEnveloppeEts,
5
5
  XsdLogementEnveloppeEtsDonneeEntree,
6
6
  XsdLogementEnveloppeEtsDonneeIntermediaire
7
- } from './dpe-xsd.generated';
7
+ } from './dpe-xsd.generated.js';
8
8
 
9
9
  export type Ets = XsdLogementEnveloppeEts;
10
10
  export type EtsDE = XsdLogementEnveloppeEtsDonneeEntree;
@@ -8,7 +8,7 @@ import type {
8
8
  XsdLogementInstallationChauffageGenerateurChauffage,
9
9
  XsdLogementInstallationChauffageGenerateurChauffageDonneeEntree,
10
10
  XsdLogementInstallationChauffageGenerateurChauffageDonneeIntermediaire
11
- } from './dpe-xsd.generated';
11
+ } from './dpe-xsd.generated.js';
12
12
 
13
13
  /** + champ Open3CL hors XSD : `ficheTechniqueComptage` (fiche technique). */
14
14
  export type InstallationChauffageDE = XsdLogementInstallationChauffageDonneeEntree & {
@@ -27,15 +27,56 @@ export type EmetteurChauffageDI =
27
27
  XsdLogementInstallationChauffageEmetteurChauffageDonneeIntermediaire & {
28
28
  lb?: number;
29
29
  };
30
- export type GenerateurChauffageDE = XsdLogementInstallationChauffageGenerateurChauffageDonneeEntree;
31
- export type GenerateurChauffageDI =
32
- XsdLogementInstallationChauffageGenerateurChauffageDonneeIntermediaire;
30
+ /** Champs communs aux générateurs (chauffage et ECS) ajoutés par le moteur hors XSD, en entrée. */
31
+ export interface GenerateurDEMoteur {
32
+ /** Année d'installation (issue de la saisie ou de la fiche technique). */
33
+ annee_installation?: number | string;
34
+ /** 1 si le générateur a un ventilateur (chaudières bois). */
35
+ presenceVentilateur?: number;
36
+ /** 1 si le générateur est à ventilateur de combustion (renseigné par le moteur, §13.2). */
37
+ ventilateurCombustion?: number;
38
+ ratio_virtualisation?: number | null;
39
+ enum_type_installation_id?: string | null;
40
+ enum_type_generateur_ecs_id?: string | null;
41
+ enum_periode_installation_ecs_thermo_id?: string | null;
42
+ volume_stockage?: number | null;
43
+ /** Clé de répartition de la consommation ECS (copiée de l'installation par le moteur). */
44
+ cle_repartition_ecs?: number | null;
45
+ /** Clé de répartition de la consommation de chauffage (copiée de l'installation par le moteur). */
46
+ cle_repartition_ch?: number | null;
47
+ }
33
48
 
34
- export enum TypeGenerateur {
35
- CHAUDIERE = 'CHAUDIERE',
36
- OTHER = 'OTHER'
49
+ /** Champs communs aux générateurs (chauffage et ECS) calculés par le moteur hors XSD. */
50
+ export interface GenerateurDIMoteur {
51
+ /** Rendement de génération (PAC) : scop ou cop. */
52
+ rg?: number | null;
53
+ /** Rendement de génération du cas dépensier (PAC). */
54
+ rg_dep?: number | null;
55
+ scop?: number | null;
56
+ cop?: number | null;
57
+ /** Puissance de la veilleuse (W). */
58
+ pveil?: number | null;
37
59
  }
38
60
 
61
+ /** + champs calculés/renseignés par le moteur hors XSD. */
62
+ export type GenerateurChauffageDE =
63
+ XsdLogementInstallationChauffageGenerateurChauffageDonneeEntree &
64
+ GenerateurDEMoteur & {
65
+ /** Nombre d'installations de chauffage de l'immeuble (rdim). */
66
+ rdim_installation_ch?: number;
67
+ /** true si `rdim` a été reconstitué pour un DPE à l'immeuble. */
68
+ rdim_reconstitue?: boolean;
69
+ /** Nombre de niveaux de l'installation (copié de l'installation par le moteur). */
70
+ nombre_niveau_installation_ch?: number;
71
+ /** Surface chauffée par l'installation (copiée de l'installation par le moteur). */
72
+ surface_chauffee?: number;
73
+ };
74
+ export type GenerateurChauffageDI =
75
+ XsdLogementInstallationChauffageGenerateurChauffageDonneeIntermediaire & GenerateurDIMoteur;
76
+
77
+ /** Type de générateur (défini à l'exécution dans type-generateur.model.js). */
78
+ export type TypeGenerateur = 'CHAUDIERE' | 'OTHER';
79
+
39
80
  /** Donnée utilisateur propre à Open3CL (absente du XSD). */
40
81
  export interface GenerateurChauffageDU {
41
82
  /** Valeurs intermédiaires ajoutées dynamiquement par le moteur (ex. conso_ch_appoint_bijonction). */
@@ -57,7 +98,12 @@ export interface GenerateurChauffageDU {
57
98
  };
58
99
  }
59
100
 
60
- export interface GenerateurChauffage extends XsdLogementInstallationChauffageGenerateurChauffage {
101
+ export interface GenerateurChauffage extends Omit<
102
+ XsdLogementInstallationChauffageGenerateurChauffage,
103
+ 'donnee_entree' | 'donnee_intermediaire'
104
+ > {
105
+ donnee_entree: GenerateurChauffageDE;
106
+ donnee_intermediaire?: GenerateurChauffageDI;
61
107
  donnee_utilisateur?: GenerateurChauffageDU;
62
108
  }
63
109
 
@@ -5,12 +5,24 @@ import type {
5
5
  XsdLogementInstallationEcsGenerateurEcs,
6
6
  XsdLogementInstallationEcsGenerateurEcsDonneeEntree,
7
7
  XsdLogementInstallationEcsGenerateurEcsDonneeIntermediaire
8
- } from './dpe-xsd.generated';
8
+ } from './dpe-xsd.generated.js';
9
+ import type { GenerateurDEMoteur, GenerateurDIMoteur } from './installation-chauffage.model.js';
9
10
 
10
11
  export type InstallationEcsDE = XsdLogementInstallationEcsDonneeEntree;
11
- export type InstallationEcsDI = XsdLogementInstallationEcsDonneeIntermediaire;
12
- export type GenerateurEcsDE = XsdLogementInstallationEcsGenerateurEcsDonneeEntree;
13
- export type GenerateurEcsDI = XsdLogementInstallationEcsGenerateurEcsDonneeIntermediaire;
12
+ /** + champs calculés par le moteur hors XSD. */
13
+ export type InstallationEcsDI = XsdLogementInstallationEcsDonneeIntermediaire & {
14
+ /** Longueur de boucle de distribution ECS (m). */
15
+ lb?: number;
16
+ /** Consommation des auxiliaires de distribution ECS. */
17
+ conso_auxiliaire_distribution_ecs?: number;
18
+ /** true si rdim est neutralisé pour l'installation. */
19
+ rdim_neutralise?: boolean;
20
+ };
21
+ /** + champs calculés/renseignés par le moteur hors XSD. */
22
+ export type GenerateurEcsDE = XsdLogementInstallationEcsGenerateurEcsDonneeEntree &
23
+ GenerateurDEMoteur;
24
+ export type GenerateurEcsDI = XsdLogementInstallationEcsGenerateurEcsDonneeIntermediaire &
25
+ GenerateurDIMoteur;
14
26
 
15
27
  /** Donnée utilisateur propre à Open3CL (absente du XSD) : valeurs intermédiaires du moteur. */
16
28
  export interface InstallationEcsDU {
@@ -26,14 +38,20 @@ export interface GenerateurEcsDU {
26
38
  Qgw?: number;
27
39
  }
28
40
 
29
- export interface GenerateurEcs extends XsdLogementInstallationEcsGenerateurEcs {
41
+ export interface GenerateurEcs extends Omit<
42
+ XsdLogementInstallationEcsGenerateurEcs,
43
+ 'donnee_entree' | 'donnee_intermediaire'
44
+ > {
45
+ donnee_entree: GenerateurEcsDE;
46
+ donnee_intermediaire?: GenerateurEcsDI;
30
47
  donnee_utilisateur?: GenerateurEcsDU;
31
48
  }
32
49
 
33
50
  export interface InstallationEcs extends Omit<
34
51
  XsdLogementInstallationEcs,
35
- 'generateur_ecs_collection'
52
+ 'generateur_ecs_collection' | 'donnee_intermediaire'
36
53
  > {
54
+ donnee_intermediaire?: InstallationEcsDI;
37
55
  donnee_utilisateur?: InstallationEcsDU;
38
56
  generateur_ecs_collection: { generateur_ecs: GenerateurEcs[] };
39
57
  }
@@ -4,7 +4,7 @@ import type {
4
4
  XsdLogementEnveloppeMur,
5
5
  XsdLogementEnveloppeMurDonneeEntree,
6
6
  XsdLogementEnveloppeMurDonneeIntermediaire
7
- } from './dpe-xsd.generated';
7
+ } from './dpe-xsd.generated.js';
8
8
 
9
9
  export type Mur = XsdLogementEnveloppeMur;
10
10
  export type MurDE = XsdLogementEnveloppeMurDonneeEntree;
@@ -7,7 +7,7 @@ import type {
7
7
  XsdLogementEnveloppePlancherHaut,
8
8
  XsdLogementEnveloppePlancherHautDonneeEntree,
9
9
  XsdLogementEnveloppePlancherHautDonneeIntermediaire
10
- } from './dpe-xsd.generated';
10
+ } from './dpe-xsd.generated.js';
11
11
 
12
12
  export type PlancherBas = XsdLogementEnveloppePlancherBas;
13
13
  export type PlancherBasDE = XsdLogementEnveloppePlancherBasDonneeEntree;
@@ -4,7 +4,7 @@ import type {
4
4
  XsdLogementEnveloppePontThermique,
5
5
  XsdLogementEnveloppePontThermiqueDonneeEntree,
6
6
  XsdLogementEnveloppePontThermiqueDonneeIntermediaire
7
- } from './dpe-xsd.generated';
7
+ } from './dpe-xsd.generated.js';
8
8
 
9
9
  export type PontThermique = XsdLogementEnveloppePontThermique;
10
10
  export type PontThermiqueDE = XsdLogementEnveloppePontThermiqueDonneeEntree;
@@ -4,7 +4,7 @@ import type {
4
4
  XsdLogementEnveloppePorte,
5
5
  XsdLogementEnveloppePorteDonneeEntree,
6
6
  XsdLogementEnveloppePorteDonneeIntermediaire
7
- } from './dpe-xsd.generated';
7
+ } from './dpe-xsd.generated.js';
8
8
 
9
9
  export type Porte = XsdLogementEnveloppePorte;
10
10
  export type PorteDE = XsdLogementEnveloppePorteDonneeEntree;
@@ -5,7 +5,7 @@ import type {
5
5
  XsdLogementProductionElecEnrDonneeEntree,
6
6
  XsdLogementProductionElecEnrDonneeIntermediaire,
7
7
  XsdLogementProductionElecEnrPanneauxPv
8
- } from './dpe-xsd.generated';
8
+ } from './dpe-xsd.generated.js';
9
9
 
10
10
  export type ProductionElecEnr = XsdLogementProductionElecEnr;
11
11
  export type ProductionElecEnrDE = XsdLogementProductionElecEnrDonneeEntree;
@@ -12,7 +12,7 @@ import type {
12
12
  XsdLogementSortieProductionElectricite,
13
13
  XsdLogementSortieQualiteIsolation,
14
14
  XsdLogementSortieSortieParEnergie
15
- } from './dpe-xsd.generated';
15
+ } from './dpe-xsd.generated.js';
16
16
 
17
17
  export interface Sortie extends Omit<XsdLogementSortie, 'ep_conso'> {
18
18
  ep_conso: EpConso;
@@ -1,7 +1,8 @@
1
1
  /**
2
- * @type {{[key: string]: string}}
2
+ * Valeur de TypeGenerateur.
3
+ * @typedef {'CHAUDIERE' | 'OTHER'} TypeGenerateur
3
4
  */
4
- export const TypeGenerateur = {
5
+ export const TypeGenerateur = /** @type {const} */ ({
5
6
  CHAUDIERE: 'CHAUDIERE',
6
7
  OTHER: 'OTHER'
7
- };
8
+ });
@@ -1,17 +1,19 @@
1
1
  /**
2
- * @type {{[key: string]: string}}
2
+ * Valeur d'un type d'habitation (MAISON | APPARTEMENT | IMMEUBLE).
3
+ * @typedef {'MAISON' | 'APPARTEMENT' | 'IMMEUBLE'} TypeHabitation
3
4
  */
4
- export const TypeHabitation = {
5
+ export const TypeHabitation = /** @type {const} */ ({
5
6
  MAISON: 'MAISON',
6
7
  APPARTEMENT: 'APPARTEMENT',
7
8
  IMMEUBLE: 'IMMEUBLE'
8
- };
9
+ });
9
10
  /**
10
- * @type {{[key: string]: string}}
11
+ * Valeur d'un type de DPE.
12
+ * @typedef {'MAISON' | 'APPARTEMENT' | 'APPARTEMENT_A_PARTIR_IMMEUBLE' | 'IMMEUBLE'} TypeDpe
11
13
  */
12
- export const TypeDpe = {
14
+ export const TypeDpe = /** @type {const} */ ({
13
15
  MAISON: 'MAISON',
14
16
  APPARTEMENT: 'APPARTEMENT',
15
17
  APPARTEMENT_A_PARTIR_IMMEUBLE: 'APPARTEMENT_A_PARTIR_IMMEUBLE',
16
18
  IMMEUBLE: 'IMMEUBLE'
17
- };
19
+ });
@@ -1,8 +1,9 @@
1
1
  /**
2
- * @type {{[key: string]: string}}
2
+ * Valeur de TypeStockage.
3
+ * @typedef {'INSTANTANE' | 'INTEGRE' | 'INDEPENDANT'} TypeStockage
3
4
  */
4
- export const TypeStockage = {
5
+ export const TypeStockage = /** @type {const} */ ({
5
6
  INSTANTANE: 'INSTANTANE',
6
7
  INTEGRE: 'INTEGRE',
7
8
  INDEPENDANT: 'INDEPENDANT'
8
- };
9
+ });
@@ -1,8 +1,9 @@
1
1
  /**
2
- * @type {{[key: string]: string}}
2
+ * Valeur de TypeVentilation.
3
+ * @typedef {'SIMPLE_FLUX_AUTO' | 'SIMPLE_FLUX_HYGRO' | 'DOUBLE_FLUX'} TypeVentilation
3
4
  */
4
- export const TypeVentilation = {
5
+ export const TypeVentilation = /** @type {const} */ ({
5
6
  SIMPLE_FLUX_AUTO: 'SIMPLE_FLUX_AUTO',
6
7
  SIMPLE_FLUX_HYGRO: 'SIMPLE_FLUX_HYGRO',
7
8
  DOUBLE_FLUX: 'DOUBLE_FLUX'
8
- };
9
+ });
@@ -4,7 +4,7 @@ import type {
4
4
  XsdLogementVentilation,
5
5
  XsdLogementVentilationDonneeEntree,
6
6
  XsdLogementVentilationDonneeIntermediaire
7
- } from './dpe-xsd.generated';
7
+ } from './dpe-xsd.generated.js';
8
8
 
9
9
  export interface Ventilation extends Omit<XsdLogementVentilation, 'donnee_entree'> {
10
10
  donnee_entree: VentilationDE;
@@ -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
  /**