@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,193 +1,122 @@
1
- import { BaieVitree } from './baie-vitree.model';
2
- import { Climatisation } from './climatisation.model';
3
- import { Ets } from './ets.model';
4
- import { InstallationChauffage } from './installation-chauffage.model';
5
- import { InstallationEcs } from './installation-ecs.model';
6
- import { Mur } from './mur.model';
7
- import { PlancherBas, PlancherHaut } from './plancher.model';
8
- import { PontThermique } from './pont-thermique.model';
9
- import { Porte } from './porte.model';
10
- import { ProductionElecEnr } from './production-elec-enr.model';
11
- import { Sortie } from './sortie.model';
12
- import { Ventilation } from './ventilation.model';
1
+ import type {
2
+ XsdAdministratif,
3
+ XsdAdministratifDiagnostiqueur,
4
+ XsdAdministratifGeolocalisation,
5
+ XsdAdministratifInformationFormulaireConsentement,
6
+ XsdDpe,
7
+ XsdDpeImmeuble,
8
+ XsdDpeImmeubleLogementVisite,
9
+ XsdLogement,
10
+ XsdLogementCaracteristiqueGenerale,
11
+ XsdLogementEnveloppe,
12
+ XsdLogementMeteo,
13
+ XsdTAdresse
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
+
28
+ // Types issus du XSD (générés) : voir dpe-xsd.generated.ts
29
+ export type Administratif = XsdAdministratif;
30
+ export type Diagnostiqueur = XsdAdministratifDiagnostiqueur;
31
+ export type Geolocalisation = XsdAdministratifGeolocalisation;
32
+ export type Adresse = XsdTAdresse;
33
+ /** Nom historique ; le XSD 2.7 parle de `information_formulaire_consentement`. */
34
+ export type InformationConsentementProprietaire = XsdAdministratifInformationFormulaireConsentement;
35
+ export type DpeImmeuble = XsdDpeImmeuble;
36
+ export type LogementVisite = XsdDpeImmeubleLogementVisite;
37
+ export type CaracteristiqueGenerale = XsdLogementCaracteristiqueGenerale;
38
+ export type Meteo = XsdLogementMeteo;
13
39
 
14
40
  /**
15
- * @see https://gitlab.com/observatoire-dpe/observatoire-dpe/-/blob/master/modele_donnee/DPE_complet.xsd?ref_type=heads
41
+ * Données de calcul propres à Open3CL (absentes du XSD) : séries mensuelles conservées entre les
42
+ * étapes du moteur.
16
43
  */
17
- export interface Dpe {
18
- hashkey: string;
19
- id: string;
20
- version: string;
21
- numero_dpe: string;
22
- statut: string;
23
- administratif: Administratif;
24
- dpe_immeuble?: DpeImmeuble;
25
- logement?: Logement;
26
- tertiaire?: Tertiaire;
27
- logement_neuf?: LogementNeuf;
28
- descriptif_enr_collection: any; // Pas traité pour l'instant
29
- descriptif_simplifie_collection: any; // Pas traité pour l'instant
30
- fiche_technique_collection: any; // Pas traité pour l'instant
31
- justificatif_collection: any; // Pas traité pour l'instant
32
- descriptif_geste_entretien_collection: any; // Pas traité pour l'instant
33
- descriptif_travaux: any; // Pas traité pour l'instant
34
- }
35
-
36
- export interface Administratif {
37
- dpe_a_remplacer?: string;
38
- reference_interne_projet?: string;
39
- motif_remplacement?: string;
40
- dpe_immeuble_associe?: string;
41
- enum_version_id: string;
42
- date_visite_diagnostiqueur: string;
43
- nom_proprietaire?: string;
44
- siren_proprietaire?: string;
45
- nom_proprietaire_installation_commune?: string;
46
- date_etablissement_dpe: string;
47
- enum_modele_dpe_id: string;
48
- diagnostiqueur: Diagnostiqueur;
49
- geolocalisation: Geolocalisation;
50
- consentement_proprietaire?: boolean;
51
- information_consentement_proprietaire?: InformationConsentementProprietaire;
52
- }
53
-
54
- export interface Diagnostiqueur {
55
- usr_logiciel_id: string;
56
- version_logiciel: string;
57
- version_moteur_calcul?: string;
58
- nom_diagnostiqueur: string;
59
- prenom_diagnostiqueur: string;
60
- mail_diagnostiqueur: string;
61
- telephone_diagnostiqueur: string;
62
- adresse_diagnostiqueur: string;
63
- entreprise_diagnostiqueur: string;
64
- numero_certification_diagnostiqueur: string;
65
- organisme_certificateur: string;
66
- }
67
-
68
- export interface DpeImmeuble {
69
- logement_visite_collection: LogementVisite[];
70
- }
71
-
72
- export interface LogementVisite {
73
- description: string;
74
- enum_position_etage_logement_id: string;
75
- enum_typologie_logement_id: string;
76
- surface_habitable_logement: number;
77
- }
78
-
79
- export interface Geolocalisation {
80
- invar_logement?: string;
81
- numero_fiscal_local?: string;
82
- id_batiment_rnb?: string;
83
- rpls_log_id?: string;
84
- rpls_org_id?: string;
85
- idpar?: string;
86
- immatriculation_copropriete?: string;
87
- adresses?: {
88
- adresse_bien: Adresse;
89
- adresse_proprietaire: Adresse;
90
- adresse_proprietaire_installation_commune: Adresse;
91
- };
92
- }
93
-
94
- export interface Adresse {
95
- adresse_brut: string;
96
- code_postal_brut: string;
97
- nom_commune_brut: string;
98
- label_brut: string;
99
- label_brut_avec_complement: string;
100
- enum_statut_geocodage_ban_id: string;
101
- ban_date_appel: string;
102
- ban_id?: string;
103
- ban_id_ban_adresse?: string;
104
- ban_label?: string;
105
- ban_housenumber?: string;
106
- ban_street?: string;
107
- ban_citycode?: string;
108
- ban_postcode?: string;
109
- ban_city?: string;
110
- ban_type?: string;
111
- ban_score?: string;
112
- ban_x?: string;
113
- compl_nom_residence?: string;
114
- compl_ref_batiment?: string;
115
- compl_etage_appartement?: string;
116
- compl_ref_cage_escalier?: string;
117
- compl_ref_logement?: string;
118
- }
119
-
120
- export interface InformationConsentementProprietaire {
121
- nom_proprietaire: string;
122
- personne_morale: boolean;
123
- siren_proprietaire?: string;
124
- telephone?: string;
125
- mail?: string;
126
- label_adresse: string;
127
- label_adresse_avec_complement: string;
128
- }
129
-
130
- export interface CaracteristiqueGenerale {
131
- annee_construction?: number;
132
- enum_periode_construction_id: number;
133
- enum_methode_application_dpe_log_id: number;
134
- enum_calcul_echantillonnage_id?: number;
135
- surface_habitable_logement?: number;
136
- nombre_niveau_immeuble?: number;
137
- nombre_niveau_logement?: number;
138
- hsp: number;
139
- surface_habitable_immeuble?: number;
140
- surface_tertiaire_immeuble?: number;
141
- nombre_appartement?: number;
142
- appartement_non_visite: boolean;
44
+ export interface LogementDonneesCalcul {
45
+ apportsInterneCh: { [key: string]: number };
46
+ apportsInterneDepensier: { [key: string]: number };
47
+ apportsSolaire: { [key: string]: number };
48
+ besoinChauffageHP: { [key: string]: number };
49
+ besoinChauffageDepensierHP: { [key: string]: number };
143
50
  }
144
51
 
145
- export interface Meteo {
146
- enum_zone_climatique_id?: number;
147
- altitude: number;
148
- enum_classe_altitude_id: number;
149
- batiment_materiaux_anciens: boolean;
52
+ /** Enveloppe : collections typées avec les modèles enrichis (voir *.model.ts). */
53
+ export interface Enveloppe extends Omit<
54
+ XsdLogementEnveloppe,
55
+ | 'mur_collection'
56
+ | 'plancher_bas_collection'
57
+ | 'plancher_haut_collection'
58
+ | 'baie_vitree_collection'
59
+ | 'porte_collection'
60
+ | 'ets_collection'
61
+ | 'pont_thermique_collection'
62
+ > {
63
+ mur_collection: { mur: Mur[] };
64
+ plancher_bas_collection: { plancher_bas: PlancherBas[] };
65
+ plancher_haut_collection: { plancher_haut: PlancherHaut[] };
66
+ baie_vitree_collection: { baie_vitree: BaieVitree[] };
67
+ porte_collection: { porte: Porte[] };
68
+ /** Le XSD autorise plusieurs `ets` ; le parseur du moteur ne les met pas en tableau si un seul. */
69
+ ets_collection: { ets: Ets | Ets[] };
70
+ pont_thermique_collection: { pont_thermique: PontThermique[] };
150
71
  }
151
72
 
152
- export interface Logement {
153
- caracteristique_generale: CaracteristiqueGenerale;
154
- meteo: Meteo;
73
+ /**
74
+ * Logement : type XSD, avec les installations ECS/chauffage enrichies des `donnee_utilisateur`
75
+ * propres à Open3CL, et `donnees_de_calcul` (hors XSD).
76
+ */
77
+ export interface Logement extends Omit<
78
+ XsdLogement,
79
+ | 'enveloppe'
80
+ | 'ventilation_collection'
81
+ | 'climatisation_collection'
82
+ | 'production_elec_enr'
83
+ | 'sortie'
84
+ | 'installation_ecs_collection'
85
+ | 'installation_chauffage_collection'
86
+ > {
155
87
  enveloppe: Enveloppe;
156
88
  ventilation_collection: { ventilation: Ventilation[] };
157
89
  climatisation_collection: { climatisation: Climatisation[] };
158
- production_elec_enr?: ProductionElecEnr;
90
+ production_elec_enr?: ProductionElecEnr | null;
91
+ sortie: Sortie;
159
92
  installation_ecs_collection: { installation_ecs: InstallationEcs[] };
160
93
  installation_chauffage_collection: { installation_chauffage: InstallationChauffage[] };
161
- sortie: Sortie;
162
94
  donnees_de_calcul: LogementDonneesCalcul;
163
95
  }
164
96
 
165
- export interface LogementDonneesCalcul {
166
- apportsInterneCh: { [key: string]: number };
167
- apportsInterneDepensier: { [key: string]: number };
168
- apportsSolaire: { [key: string]: number };
169
- besoinChauffageHP: { [key: string]: number };
170
- besoinChauffageDepensierHP: { [key: string]: number };
171
- }
172
-
97
+ /**
98
+ * Le moteur traite `tertiaire` et `logement_neuf` comme un logement (le XSD les décrit
99
+ * différemment : cf. XsdTertiaire / XsdLogementNeuf dans dpe-xsd.generated.ts).
100
+ */
173
101
  export interface Tertiaire extends Logement {}
174
102
 
175
103
  export interface LogementNeuf extends Logement {}
176
104
 
177
- export interface Enveloppe {
178
- inertie: {
179
- inertie_plancher_bas_lourd: boolean;
180
- inertie_plancher_haut_lourd: boolean;
181
- inertie_paroi_verticale_lourd: boolean;
182
- enum_classe_inertie_id: number;
183
- };
184
- mur_collection: { mur: Mur[] };
185
- plancher_bas_collection: { plancher_bas: PlancherBas[] };
186
- plancher_haut_collection: { plancher_haut: PlancherHaut[] };
187
- baie_vitree_collection: { baie_vitree: BaieVitree[] };
188
- porte_collection: { porte: Porte[] };
189
- ets_collection: { ets: Ets };
190
- pont_thermique_collection: { pont_thermique: PontThermique[] };
105
+ /**
106
+ * @see https://gitlab.com/observatoire-dpe/observatoire-dpe/-/blob/master/modele_donnee/DPEv2.7.xsd
107
+ */
108
+ export interface Dpe extends Omit<
109
+ XsdDpe,
110
+ 'logement' | 'tertiaire' | 'logement_neuf' | 'administratif'
111
+ > {
112
+ /** Hors XSD : numéro DPE ajouté par le moteur / l'API */
113
+ numero_dpe: string;
114
+ /** Hors XSD : statut du DPE */
115
+ statut: string;
116
+ administratif: Administratif;
117
+ logement?: Logement;
118
+ tertiaire?: Tertiaire;
119
+ logement_neuf?: LogementNeuf;
191
120
  }
192
121
 
193
122
  export interface DE {
@@ -195,13 +124,8 @@ export interface DE {
195
124
  reference?: string;
196
125
  }
197
126
 
198
- export enum TypeHabitation {
199
- MAISON = 'MAISON',
200
- APPARTEMENT = 'APPARTEMENT',
201
- IMMEUBLE = 'IMMEUBLE'
202
- }
203
- export enum TypeDpe {
204
- MAISON = 'MAISON',
205
- APPARTEMENT = 'APPARTEMENT',
206
- IMMEUBLE = 'IMMEUBLE'
207
- }
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';
130
+
131
+ export type FullDpe = Dpe;
@@ -1,19 +1,11 @@
1
- import { BaieEts } from './baie-ets.model';
2
- 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
+ XsdLogementEnveloppeEts,
5
+ XsdLogementEnveloppeEtsDonneeEntree,
6
+ XsdLogementEnveloppeEtsDonneeIntermediaire
7
+ } from './dpe-xsd.generated.js';
3
8
 
4
- export interface Ets {
5
- donnee_entree?: EtsDE;
6
- donnee_intermediaire?: EtsDI;
7
- baie_ets_collection?: { baie_ets: BaieEts[] };
8
- }
9
-
10
- export interface EtsDE extends DE {
11
- tv_coef_reduction_deperdition_id?: number; // TV
12
- enum_cfg_isolation_lnc_id?: number; // ENUM cfg_isolation_lnc
13
- tv_coef_transparence_ets_id: number; // TV
14
- }
15
-
16
- export interface EtsDI {
17
- coef_transparence_ets: number;
18
- bver: number;
19
- }
9
+ export type Ets = XsdLogementEnveloppeEts;
10
+ export type EtsDE = XsdLogementEnveloppeEtsDonneeEntree;
11
+ export type EtsDI = XsdLogementEnveloppeEtsDonneeIntermediaire;
@@ -1,110 +1,89 @@
1
- import { DE } from './dpe.model';
2
- import { GenerateurEcsDU } from './installation-ecs.model';
1
+ import type {
2
+ XsdLogementInstallationChauffage,
3
+ XsdLogementInstallationChauffageDonneeEntree,
4
+ XsdLogementInstallationChauffageDonneeIntermediaire,
5
+ XsdLogementInstallationChauffageEmetteurChauffage,
6
+ XsdLogementInstallationChauffageEmetteurChauffageDonneeEntree,
7
+ XsdLogementInstallationChauffageEmetteurChauffageDonneeIntermediaire,
8
+ XsdLogementInstallationChauffageGenerateurChauffage,
9
+ XsdLogementInstallationChauffageGenerateurChauffageDonneeEntree,
10
+ XsdLogementInstallationChauffageGenerateurChauffageDonneeIntermediaire
11
+ } from './dpe-xsd.generated.js';
3
12
 
4
- export interface InstallationChauffage {
5
- donnee_entree?: InstallationChauffageDE;
6
- donnee_intermediaire?: InstallationChauffageDI;
7
- emetteur_chauffage_collection?: { emetteur_chauffage: EmetteurChauffage[] };
8
- generateur_chauffage_collection?: { generateur_chauffage: GenerateurChauffage[] };
13
+ /** + champ Open3CL hors XSD : `ficheTechniqueComptage` (fiche technique). */
14
+ export type InstallationChauffageDE = XsdLogementInstallationChauffageDonneeEntree & {
15
+ ficheTechniqueComptage?: any;
16
+ };
17
+ export type InstallationChauffageDI = XsdLogementInstallationChauffageDonneeIntermediaire;
18
+ export interface EmetteurChauffage extends Omit<
19
+ XsdLogementInstallationChauffageEmetteurChauffage,
20
+ 'donnee_intermediaire'
21
+ > {
22
+ donnee_intermediaire: EmetteurChauffageDI;
9
23
  }
10
-
11
- export interface InstallationChauffageDE extends DE {
12
- surface_chauffee: number;
13
- nombre_logement_echantillon?: number;
14
- rdim: number;
15
- nombre_niveau_installation_ch: number;
16
- enum_cfg_installation_ch_id: number;
17
- ratio_virtualisation?: number;
18
- coef_ifc?: number;
19
- cle_repartition_ch?: number;
20
- enum_type_installation_id: number;
21
- enum_methode_calcul_conso_id: number;
22
- enum_methode_saisie_fact_couv_sol_id?: number;
23
- tv_facteur_couverture_solaire_id?: number;
24
- fch_saisi?: number;
25
- }
26
-
27
- export interface InstallationChauffageDI {
28
- besoin_ch: number;
29
- besoin_ch_depensier: number;
30
- production_ch_solaire?: number;
31
- fch?: number;
32
- conso_ch: number;
33
- conso_ch_depensier: number;
34
- }
35
-
36
- export interface EmetteurChauffage {
37
- donnee_entree?: EmetteurChauffageDE;
38
- donnee_intermediaire?: EmetteurChauffageDI;
39
- }
40
-
41
- export interface EmetteurChauffageDE extends DE {
42
- surface_chauffee: number;
43
- tv_rendement_emission_id: number;
44
- tv_rendement_distribution_ch_id: number;
45
- tv_rendement_regulation_id: number;
46
- enum_type_emission_distribution_id: number;
47
- tv_intermittence_id: number;
48
- reseau_distribution_isole?: boolean;
49
- enum_equipement_intermittence_id: number;
50
- enum_type_regulation_id: number;
51
- enum_periode_installation_emetteur_id?: number;
52
- enum_type_chauffage_id: number;
53
- enum_temp_distribution_ch_id: number;
54
- enum_lien_generateur_emetteur_id: number;
55
- }
56
-
57
- export interface EmetteurChauffageDI {
58
- i0: number;
59
- rendement_emission: number;
60
- rendement_distribution: number;
61
- rendement_regulation: number;
24
+ export type EmetteurChauffageDE = XsdLogementInstallationChauffageEmetteurChauffageDonneeEntree;
25
+ /** + champ calculé Open3CL hors XSD : `lb` (longueur de boucle). */
26
+ export type EmetteurChauffageDI =
27
+ XsdLogementInstallationChauffageEmetteurChauffageDonneeIntermediaire & {
28
+ lb?: number;
29
+ };
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;
62
47
  }
63
48
 
64
- export interface GenerateurChauffage {
65
- donnee_entree?: GenerateurChauffageDE;
66
- donnee_utilisateur?: GenerateurChauffageDU;
67
- donnee_intermediaire?: GenerateurChauffageDI;
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;
68
59
  }
69
60
 
70
- export interface GenerateurChauffageDE extends DE {
71
- reference_generateur_mixte?: number;
72
- ref_produit_generateur_ch?: number;
73
- enum_type_generateur_ch_id: number;
74
- enum_usage_generateur_id: number;
75
- enum_type_energie_id: number;
76
- position_volume_chauffe: number;
77
- tv_rendement_generation_id?: number;
78
- tv_scop_id?: number;
79
- tv_temp_fonc_100_id?: number;
80
- tv_temp_fonc_30_id?: number;
81
- tv_generateur_combustion_id?: number;
82
- tv_reseau_chaleur_id?: number;
83
- identifiant_reseau_chaleur?: string;
84
- date_arrete_reseau_chaleur?: string;
85
- priorite_generateur_cascade?: number;
86
- presence_ventouse?: number;
87
- presence_regulation_combustion?: boolean;
88
- enum_methode_saisie_carac_sys_id: number;
89
- enum_lien_generateur_emetteur_id: number;
90
- }
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;
91
76
 
92
- export interface GenerateurChauffageDI {
93
- scop?: number;
94
- pn?: number;
95
- qp0?: number;
96
- pveilleuse?: number;
97
- temp_fonc_30?: number;
98
- temp_fonc_100?: number;
99
- rpn?: number;
100
- rpint?: number;
101
- conso_ch: number;
102
- conso_ch_depensier: number;
103
- }
77
+ /** Type de générateur (défini à l'exécution dans type-generateur.model.js). */
78
+ export type TypeGenerateur = 'CHAUDIERE' | 'OTHER';
104
79
 
80
+ /** Donnée utilisateur propre à Open3CL (absente du XSD). */
105
81
  export interface GenerateurChauffageDU {
82
+ /** Valeurs intermédiaires ajoutées dynamiquement par le moteur (ex. conso_ch_appoint_bijonction). */
83
+ [key: string]: any;
106
84
  ratio_virtualisation?: number;
107
85
  typeGenerateur?: TypeGenerateur;
86
+ isCombustionGenerator?: boolean;
108
87
  combustion: boolean;
109
88
  pac: boolean;
110
89
  generateur?: {
@@ -119,7 +98,21 @@ export interface GenerateurChauffageDU {
119
98
  };
120
99
  }
121
100
 
122
- export enum TypeGenerateur {
123
- CHAUDIERE = 'CHAUDIERE',
124
- OTHER = 'OTHER'
101
+ export interface GenerateurChauffage extends Omit<
102
+ XsdLogementInstallationChauffageGenerateurChauffage,
103
+ 'donnee_entree' | 'donnee_intermediaire'
104
+ > {
105
+ donnee_entree: GenerateurChauffageDE;
106
+ donnee_intermediaire?: GenerateurChauffageDI;
107
+ donnee_utilisateur?: GenerateurChauffageDU;
108
+ }
109
+
110
+ export interface InstallationChauffage extends Omit<
111
+ XsdLogementInstallationChauffage,
112
+ 'donnee_entree' | 'emetteur_chauffage_collection' | 'generateur_chauffage_collection'
113
+ > {
114
+ donnee_entree: InstallationChauffageDE;
115
+ donnee_utilisateur?: Record<string, any>; // hors XSD
116
+ emetteur_chauffage_collection: { emetteur_chauffage: EmetteurChauffage[] };
117
+ generateur_chauffage_collection: { generateur_chauffage: GenerateurChauffage[] };
125
118
  }