@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,41 +1,30 @@
1
- import { DE } from './dpe.model';
2
-
3
- export interface InstallationEcs {
4
- donnee_entree?: InstallationEcsDE;
5
- donnee_intermediaire?: InstallationEcsDI;
6
- donnee_utilisateur?: InstallationEcsDU;
7
- generateur_ecs_collection?: { generateur_ecs: GenerateurEcs[] };
8
- }
9
-
10
- export interface InstallationEcsDE extends DE {
11
- enum_cfg_installation_ecs_id: number;
12
- enum_type_installation_id: number;
13
- enum_methode_calcul_conso_id: number;
14
- ratio_virtualisation?: number;
15
- cle_repartition_ecs?: number;
16
- surface_habitable: number;
17
- nombre_logement: number;
18
- rdim: number;
19
- nombre_niveau_installation_ecs: number;
20
- fecs_saisi?: number;
21
- tv_facteur_couverture_solaire_id?: number;
22
- enum_methode_saisie_fact_couv_sol_id?: number;
23
- enum_type_installation_solaire_id?: number;
24
- tv_rendement_distribution_ecs_id: number;
25
- enum_bouclage_reseau_ecs_id: number;
26
- reseau_distribution_isole: boolean;
27
- }
28
-
29
- export interface InstallationEcsDI {
30
- rendement_distribution: number;
31
- besoin_ecs: number;
32
- besoin_ecs_depensier: number;
33
- fecs?: number;
34
- production_ecs_solaire?: number;
35
- conso_ecs: number;
36
- conso_ecs_depensier: number;
37
- }
38
-
1
+ import type {
2
+ XsdLogementInstallationEcs,
3
+ XsdLogementInstallationEcsDonneeEntree,
4
+ XsdLogementInstallationEcsDonneeIntermediaire,
5
+ XsdLogementInstallationEcsGenerateurEcs,
6
+ XsdLogementInstallationEcsGenerateurEcsDonneeEntree,
7
+ XsdLogementInstallationEcsGenerateurEcsDonneeIntermediaire
8
+ } from './dpe-xsd.generated.js';
9
+ import type { GenerateurDEMoteur, GenerateurDIMoteur } from './installation-chauffage.model.js';
10
+
11
+ export type InstallationEcsDE = XsdLogementInstallationEcsDonneeEntree;
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;
26
+
27
+ /** Donnée utilisateur propre à Open3CL (absente du XSD) : valeurs intermédiaires du moteur. */
39
28
  export interface InstallationEcsDU {
40
29
  QdwIndVc: { conventionnel: number; depensier: number };
41
30
  QdwColVc: { conventionnel: number; depensier: number };
@@ -43,47 +32,26 @@ export interface InstallationEcsDU {
43
32
  QgwRecuperable: number;
44
33
  }
45
34
 
46
- export interface GenerateurEcs {
47
- donnee_entree?: GenerateurEcsDE;
48
- donnee_utilisateur?: GenerateurEcsDU;
49
- donnee_intermediaire?: GenerateurEcsDI;
50
- }
51
-
52
- export interface GenerateurEcsDE extends DE {
53
- reference_generateur_mixte?: string;
54
- enum_type_generateur_ecs_id: number;
55
- ref_produit_generateur_ecs?: string;
56
- enum_usage_generateur_id: number;
57
- enum_type_energie_id: number;
58
- tv_generateur_combustion_id?: number;
59
- enum_methode_saisie_carac_sys_id: number;
60
- tv_pertes_stockage_id?: number;
61
- tv_scop_id?: number;
62
- enum_periode_installation_ecs_thermo_id?: number;
63
- identifiant_reseau_chaleur?: string;
64
- date_arrete_reseau_chaleur?: string;
65
- tv_reseau_chaleur_id?: number;
66
- enum_type_stockage_ecs_id: number;
67
- position_volume_chauffe: number;
68
- position_volume_chauffe_stockage?: number;
69
- volume_stockage: number;
70
- presence_ventouse?: boolean;
35
+ /** Donnée utilisateur propre à Open3CL (absente du XSD). */
36
+ export interface GenerateurEcsDU {
37
+ [key: string]: any;
38
+ Qgw?: number;
71
39
  }
72
40
 
73
- export interface GenerateurEcsDI {
74
- pn?: number;
75
- qp0?: number;
76
- pveilleuse?: number;
77
- rpn?: number;
78
- cop?: number;
79
- ratio_besoin_ecs: number;
80
- rendement_generation?: number;
81
- rendement_generation_stockage?: number;
82
- conso_ecs: number;
83
- conso_ecs_depensier: number;
84
- rendement_stockage?: number;
41
+ export interface GenerateurEcs extends Omit<
42
+ XsdLogementInstallationEcsGenerateurEcs,
43
+ 'donnee_entree' | 'donnee_intermediaire'
44
+ > {
45
+ donnee_entree: GenerateurEcsDE;
46
+ donnee_intermediaire?: GenerateurEcsDI;
47
+ donnee_utilisateur?: GenerateurEcsDU;
85
48
  }
86
49
 
87
- export interface GenerateurEcsDU {
88
- Qgw?: number;
50
+ export interface InstallationEcs extends Omit<
51
+ XsdLogementInstallationEcs,
52
+ 'generateur_ecs_collection' | 'donnee_intermediaire'
53
+ > {
54
+ donnee_intermediaire?: InstallationEcsDI;
55
+ donnee_utilisateur?: InstallationEcsDU;
56
+ generateur_ecs_collection: { generateur_ecs: GenerateurEcs[] };
89
57
  }
@@ -1,39 +1,11 @@
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
+ XsdLogementEnveloppeMur,
5
+ XsdLogementEnveloppeMurDonneeEntree,
6
+ XsdLogementEnveloppeMurDonneeIntermediaire
7
+ } from './dpe-xsd.generated.js';
2
8
 
3
- export interface Mur {
4
- donnee_entree?: MurDE;
5
- donnee_intermediaire?: MurDI;
6
- }
7
-
8
- export interface MurDE extends DE {
9
- reference_lnc?: string;
10
- tv_coef_reduction_deperdition_id?: number; // TV
11
- surface_aiu?: number;
12
- surface_aue?: number;
13
- enum_cfg_isolation_lnc_id?: number; // ENUM cfg_isolation_lnc
14
- enum_type_adjacence_id?: number; // ENUM type_adjacence
15
- enum_orientation_id?: number; // ENUM orientation
16
- surface_paroi_totale?: number;
17
- surface_paroi_opaque?: number;
18
- umur0_saisi?: number;
19
- tv_umur0_id?: number; // TV
20
- epaisseur_structure?: number;
21
- enum_materiaux_structure_mur_id?: number; // ENUM materiaux_structure_mur
22
- enum_methode_saisie_u0_id?: number; // ENUM methode_saisie_u0
23
- enduit_isolant_paroi_ancienne?: boolean;
24
- umur_saisi?: number;
25
- enum_type_doublage_id?: number; // ENUM type_doublage
26
- enum_type_isolation_id?: number; // ENUM type_isolation
27
- enum_periode_isolation_id?: number; // ENUM periode_isolation
28
- resistance_isolation?: number;
29
- epaisseur_isolation?: number;
30
- tv_umur_id?: number; // TV
31
- enum_methode_saisie_u_id?: number; // ENUM methode_saisie_u
32
- paroi_lourde?: boolean;
33
- }
34
-
35
- export interface MurDI {
36
- umur: number;
37
- umur0: number;
38
- b: number;
39
- }
9
+ export type Mur = XsdLogementEnveloppeMur;
10
+ export type MurDE = XsdLogementEnveloppeMurDonneeEntree;
11
+ export type MurDI = XsdLogementEnveloppeMurDonneeIntermediaire;
@@ -1,63 +1,22 @@
1
- import { DE } from './dpe.model';
2
-
3
- export interface PlancherBas {
4
- donnee_entree?: PlancherBasDE;
5
- donnee_intermediaire?: PlancherBasDI;
6
- }
7
-
8
- export interface PlancherHaut {
9
- donnee_entree?: PlancherHautDE;
10
- donnee_intermediaire?: PlancherHautDI;
11
- }
12
-
13
- export interface PlancherDE extends DE {
14
- reference_lnc?: string;
15
- tv_coef_reduction_deperdition_id?: string; // TV
16
- surface_aiu?: number;
17
- surface_aue?: number;
18
- enum_cfg_isolation_lnc_id?: string; // ENUM cfg_isolation_lnc
19
- enum_type_adjacence_id?: string; // ENUM type_adjacence
20
- surface_paroi_opaque?: number;
21
- enum_methode_saisie_u0_id?: string; // ENUM methode_saisie_u0
22
-
23
- enum_type_isolation_id?: string; // ENUM type_isolation
24
- enum_periode_isolation_id?: string; // ENUM periode_isolation
25
- resistance_isolation?: number;
26
- epaisseur_isolation?: number;
27
- enum_methode_saisie_u_id?: string; // ENUM methode_saisie_u
28
- }
29
-
30
- export interface PlancherDI {
31
- b: number;
32
- }
33
-
34
- export interface PlancherBasDE extends PlancherDE {
35
- upb0_saisi?: number;
36
- tv_upb0_id?: string; // TV
37
- enum_type_plancher_bas_id?: string; // ENUM type_plancher_bas
38
- upb_saisi?: number;
39
- tv_upb_id?: string; // TV
40
- calcul_ue: number;
41
- perimetre_ue?: number;
42
- surface_ue?: number;
43
- ue?: number;
44
- }
45
-
46
- export interface PlancherBasDI extends PlancherDI {
47
- upb: number;
48
- upb0: number;
49
- upb_final: number;
50
- }
51
-
52
- export interface PlancherHautDE extends PlancherDE {
53
- uph0_saisi?: number;
54
- tv_uph0_id?: string; // TV
55
- enum_type_plancher_haut_id?: string; // ENUM type_plancher_bas
56
- uph_saisi?: number;
57
- tv_uph_id?: string; // TV
58
- }
59
-
60
- export interface PlancherHautDI extends PlancherDI {
61
- uph: number;
62
- uph0: number;
63
- }
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
+ XsdLogementEnveloppePlancherBas,
5
+ XsdLogementEnveloppePlancherBasDonneeEntree,
6
+ XsdLogementEnveloppePlancherBasDonneeIntermediaire,
7
+ XsdLogementEnveloppePlancherHaut,
8
+ XsdLogementEnveloppePlancherHautDonneeEntree,
9
+ XsdLogementEnveloppePlancherHautDonneeIntermediaire
10
+ } from './dpe-xsd.generated.js';
11
+
12
+ export type PlancherBas = XsdLogementEnveloppePlancherBas;
13
+ export type PlancherBasDE = XsdLogementEnveloppePlancherBasDonneeEntree;
14
+ export type PlancherBasDI = XsdLogementEnveloppePlancherBasDonneeIntermediaire;
15
+ export type PlancherHaut = XsdLogementEnveloppePlancherHaut;
16
+ export type PlancherHautDE = XsdLogementEnveloppePlancherHautDonneeEntree;
17
+ export type PlancherHautDI = XsdLogementEnveloppePlancherHautDonneeIntermediaire;
18
+
19
+ /** @deprecated Les DE bas/haut sont désormais distincts dans le XSD. */
20
+ export type PlancherDE = PlancherBasDE | PlancherHautDE;
21
+ /** @deprecated */
22
+ export type PlancherDI = PlancherBasDI | PlancherHautDI;
@@ -1,21 +1,11 @@
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
+ XsdLogementEnveloppePontThermique,
5
+ XsdLogementEnveloppePontThermiqueDonneeEntree,
6
+ XsdLogementEnveloppePontThermiqueDonneeIntermediaire
7
+ } from './dpe-xsd.generated.js';
2
8
 
3
- export interface PontThermique {
4
- donnee_entree?: PontThermiqueDE;
5
- donnee_intermediaire?: PontThermiqueDI;
6
- }
7
-
8
- export interface PontThermiqueDE extends DE {
9
- reference_1?: string;
10
- reference_2?: string;
11
- tv_pont_thermique_id?: number; // TV
12
- pourcentage_valeur_pont_thermique: number;
13
- l: number;
14
- enum_methode_saisie_pont_thermique_id: number; // ENUM methode_saisie_pont_thermique
15
- enum_type_liaison_id: number; // ENUM type_liaison
16
- k_saisi?: number;
17
- }
18
-
19
- export interface PontThermiqueDI {
20
- k: number;
21
- }
9
+ export type PontThermique = XsdLogementEnveloppePontThermique;
10
+ export type PontThermiqueDE = XsdLogementEnveloppePontThermiqueDonneeEntree;
11
+ export type PontThermiqueDI = XsdLogementEnveloppePontThermiqueDonneeIntermediaire;
@@ -1,31 +1,11 @@
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
+ XsdLogementEnveloppePorte,
5
+ XsdLogementEnveloppePorteDonneeEntree,
6
+ XsdLogementEnveloppePorteDonneeIntermediaire
7
+ } from './dpe-xsd.generated.js';
2
8
 
3
- export interface Porte {
4
- donnee_entree?: PorteDE;
5
- donnee_intermediaire?: PorteDI;
6
- }
7
-
8
- export interface PorteDE extends DE {
9
- reference_paroi?: string;
10
- reference_lnc?: string;
11
- enum_cfg_isolation_lnc_id?: number; // ENUM cfg_isolation_lnc
12
- enum_type_adjacence_id?: number; // ENUM type_adjacence
13
- tv_coef_reduction_deperdition_id?: number; // TV
14
- surface_aiu?: number;
15
- surface_aue?: number;
16
- surface_porte?: number;
17
- tv_uporte_id?: number; // TV
18
- enum_methode_saisie_uporte_id?: number; // ENUM methode_saisie_uporte
19
- enum_type_porte_id?: number; // ENUM type_porte
20
- uporte_saisi?: number;
21
- nb_porte?: number;
22
- largeur_dormant?: number;
23
- presence_retour_isolation?: boolean;
24
- presence_joint?: boolean;
25
- enum_type_pose_id?: number; // ENUM type_pose
26
- }
27
-
28
- export interface PorteDI {
29
- uporte: number;
30
- b: number;
31
- }
9
+ export type Porte = XsdLogementEnveloppePorte;
10
+ export type PorteDE = XsdLogementEnveloppePorteDonneeEntree;
11
+ export type PorteDI = XsdLogementEnveloppePorteDonneeIntermediaire;
@@ -1,27 +1,13 @@
1
- import { DE } from './dpe.model';
2
-
3
- export interface ProductionElecEnr {
4
- donnee_entree?: ProductionElecEnrDE;
5
- donnee_intermediaire?: ProductionElecEnrDI;
6
- panneaux_pv_collection?: PanneauFv[];
7
- }
8
-
9
- export interface ProductionElecEnrDE extends DE {
10
- presence_production_pv: boolean;
11
- enum_type_enr_id: number;
12
- }
13
-
14
- export interface ProductionElecEnrDI {
15
- taux_autoproduction?: number;
16
- production_pv: number;
17
- conso_elec_ac: number;
18
- }
19
-
20
- export interface PanneauFv {
21
- surface_totale_capteurs?: number;
22
- ratio_virtualisation?: number;
23
- nombre_module?: number;
24
- tv_coef_orientation_pv_id?: number;
25
- enum_orientation_pv_id?: number;
26
- enum_inclinaison_pv_id?: number;
27
- }
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
+ XsdLogementProductionElecEnr,
5
+ XsdLogementProductionElecEnrDonneeEntree,
6
+ XsdLogementProductionElecEnrDonneeIntermediaire,
7
+ XsdLogementProductionElecEnrPanneauxPv
8
+ } from './dpe-xsd.generated.js';
9
+
10
+ export type ProductionElecEnr = XsdLogementProductionElecEnr;
11
+ export type ProductionElecEnrDE = XsdLogementProductionElecEnrDonneeEntree;
12
+ export type ProductionElecEnrDI = XsdLogementProductionElecEnrDonneeIntermediaire;
13
+ export type PanneauFv = XsdLogementProductionElecEnrPanneauxPv;
@@ -1,178 +1,34 @@
1
- export interface Sortie {
2
- deperdition: Deperdition;
3
- apport_et_besoin: ApportEtBesoin;
4
- ef_conso: EfConso;
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
+ XsdLogementSortie,
5
+ XsdLogementSortieApportEtBesoin,
6
+ XsdLogementSortieConfortEte,
7
+ XsdLogementSortieCout,
8
+ XsdLogementSortieDeperdition,
9
+ XsdLogementSortieEfConso,
10
+ XsdLogementSortieEmissionGes,
11
+ XsdLogementSortieEpConso,
12
+ XsdLogementSortieProductionElectricite,
13
+ XsdLogementSortieQualiteIsolation,
14
+ XsdLogementSortieSortieParEnergie
15
+ } from './dpe-xsd.generated.js';
16
+
17
+ export interface Sortie extends Omit<XsdLogementSortie, 'ep_conso'> {
5
18
  ep_conso: EpConso;
6
- emission_ges: EmissionGes;
7
- cout: Cout;
8
- production_electricite: ProductionElectricite;
9
- sortie_par_energie_collection: { sortie_par_energie: SortieParEnergie[] };
10
- confort_ete?: ConfortEte;
11
- qualite_isolation: QualiteIsolation;
12
- }
13
-
14
- export interface Deperdition {
15
- hvent: number;
16
- hperm: number;
17
- deperdition_renouvellement_air: number;
18
- deperdition_mur: number;
19
- deperdition_plancher_bas: number;
20
- deperdition_plancher_haut: number;
21
- deperdition_baie_vitree: number;
22
- deperdition_porte: number;
23
- deperdition_pont_thermique: number;
24
- deperdition_enveloppe: number;
25
- }
26
-
27
- export interface ApportEtBesoin {
28
- surface_sud_equivalente: number;
29
- apport_solaire_fr: number;
30
- apport_interne_fr: number;
31
- apport_solaire_ch: number;
32
- apport_interne_ch: number;
33
- fraction_apport_gratuit_ch: number;
34
- fraction_apport_gratuit_depensier_ch: number;
35
- pertes_distribution_ecs_recup: number;
36
- pertes_distribution_ecs_recup_depensier: number;
37
- pertes_stockage_ecs_recup: number;
38
- pertes_generateur_ch_recup: number;
39
- pertes_generateur_ch_recup_depensier: number;
40
- nadeq: number;
41
- v40_ecs_journalier: number;
42
- v40_ecs_journalier_depensier: number;
43
- besoin_ch: number;
44
- besoin_ch_depensier: number;
45
- besoin_ecs: number;
46
- besoin_ecs_depensier: number;
47
- besoin_fr: number;
48
- besoin_fr_depensier: number;
49
- }
50
-
51
- export interface EfConso {
52
- conso_ch: number;
53
- conso_ch_depensier: number;
54
- conso_ecs: number;
55
- conso_ecs_depensier: number;
56
- conso_eclairage: number;
57
- conso_auxiliaire_generation_ch: number;
58
- conso_auxiliaire_generation_ch_depensier: number;
59
- conso_auxiliaire_distribution_ch: number;
60
- conso_auxiliaire_generation_ecs: number;
61
- conso_auxiliaire_generation_ecs_depensier: number;
62
- conso_auxiliaire_distribution_ecs: number;
63
- conso_auxiliaire_distribution_fr?: number;
64
- conso_auxiliaire_ventilation: number;
65
- conso_totale_auxiliaire: number;
66
- conso_fr: number;
67
- conso_fr_depensier: number;
68
- conso_5_usages: number;
69
- conso_5_usages_m2: number;
70
- }
71
-
72
- export interface EpConso {
73
- ep_conso_ch: number;
74
- ep_conso_ch_depensier: number;
75
- ep_conso_ecs: number;
76
- ep_conso_ecs_depensier: number;
77
- ep_conso_eclairage: number;
78
- ep_conso_auxiliaire_generation_ch: number;
79
- ep_conso_auxiliaire_generation_ch_depensier: number;
80
- ep_conso_auxiliaire_distribution_ch: number;
81
- ep_conso_auxiliaire_generation_ecs: number;
82
- ep_conso_auxiliaire_generation_ecs_depensier: number;
83
- ep_conso_auxiliaire_distribution_ecs: number;
84
- ep_conso_auxiliaire_distribution_fr?: number;
85
- ep_conso_auxiliaire_ventilation: number;
86
- ep_conso_totale_auxiliaire: number;
87
- ep_conso_fr: number;
88
- ep_conso_fr_depensier: number;
89
- ep_conso_5_usages: number;
90
- ep_conso_5_usages_m2: number;
91
- classe_bilan_dpe: string;
92
- }
93
-
94
- export interface EmissionGes {
95
- emission_ges_ch: number;
96
- emission_ges_ch_depensier: number;
97
- emission_ges_ecs: number;
98
- emission_ges_ecs_depensier: number;
99
- emission_ges_eclairage: number;
100
- emission_ges_auxiliaire_generation_ch: number;
101
- emission_ges_auxiliaire_generation_ch_depensier: number;
102
- emission_ges_auxiliaire_distribution_ch: number;
103
- emission_ges_auxiliaire_generation_ecs: number;
104
- emission_ges_auxiliaire_generation_ecs_depensier: number;
105
- emission_ges_auxiliaire_distribution_ecs: number;
106
- emission_ges_auxiliaire_distribution_fr?: number;
107
- emission_ges_auxiliaire_ventilation: number;
108
- emission_ges_totale_auxiliaire: number;
109
- emission_ges_fr: number;
110
- emission_ges_fr_depensier: number;
111
- emission_ges_5_usages: number;
112
- emission_ges_5_usages_m2: number;
113
- classe_emission_ges: string;
114
- }
115
-
116
- export interface Cout {
117
- cout_ch: number;
118
- cout_ch_depensier: number;
119
- cout_ecs: number;
120
- cout_ecs_depensier: number;
121
- cout_eclairage: number;
122
- cout_auxiliaire_generation_ch: number;
123
- cout_auxiliaire_generation_ch_depensier: number;
124
- cout_auxiliaire_distribution_ch: number;
125
- cout_auxiliaire_generation_ecs: number;
126
- cout_auxiliaire_generation_ecs_depensier: number;
127
- cout_auxiliaire_distribution_ecs: number;
128
- cout_auxiliaire_distribution_fr?: number;
129
- cout_auxiliaire_ventilation: number;
130
- cout_total_auxiliaire: number;
131
- cout_fr: number;
132
- cout_fr_depensier: number;
133
- cout_5_usages: number;
134
- }
135
-
136
- export interface ProductionElectricite {
137
- production_pv: number;
138
- conso_elec_ac: number;
139
- conso_elec_ac_ch: number;
140
- conso_elec_ac_ecs: number;
141
- conso_elec_ac_fr: number;
142
- conso_elec_ac_eclairage: number;
143
- conso_elec_ac_auxiliaire: number;
144
- conso_elec_ac_autre_usage: number;
145
- }
146
-
147
- export interface SortieParEnergie {
148
- enum_type_energie_id: number;
149
- conso_ch: number;
150
- conso_ecs: number;
151
- conso_5_usages: number;
152
- emission_ges_ch: number;
153
- emission_ges_ecs: number;
154
- emission_ges_5_usages: number;
155
- cout_ch: number;
156
- cout_ecs: number;
157
- cout_5_usages: number;
158
- }
159
-
160
- export interface ConfortEte {
161
- isolation_toiture?: boolean;
162
- protection_solaire_exterieure: boolean;
163
- aspect_traversant?: boolean;
164
- brasseur_air?: boolean;
165
- inertie_lourde: boolean;
166
- enum_indicateur_confort_ete_id: number;
167
- }
168
-
169
- export interface QualiteIsolation {
170
- ubat: number;
171
- qualite_isol_enveloppe: number;
172
- qualite_isol_mur?: number;
173
- qualite_isol_plancher_haut_toit_terrasse?: number;
174
- qualite_isol_plancher_haut_comble_perdu?: number;
175
- qualite_isol_plancher_haut_comble_amenage?: number;
176
- qualite_isol_plancher_bas?: number;
177
- qualite_isol_menuiserie: number;
178
19
  }
20
+ export type Deperdition = XsdLogementSortieDeperdition;
21
+ export type ApportEtBesoin = XsdLogementSortieApportEtBesoin;
22
+ export type EfConso = XsdLogementSortieEfConso;
23
+ /** + champs Open3CL hors XSD : indicateurs « 2027 ». */
24
+ export type EpConso = XsdLogementSortieEpConso & {
25
+ classe_bilan_dpe_2027?: string;
26
+ ep_conso_5_usages_2027?: number;
27
+ ep_conso_5_usages_2027_m2?: number;
28
+ };
29
+ export type EmissionGes = XsdLogementSortieEmissionGes;
30
+ export type Cout = XsdLogementSortieCout;
31
+ export type ProductionElectricite = XsdLogementSortieProductionElectricite;
32
+ export type SortieParEnergie = XsdLogementSortieSortieParEnergie;
33
+ export type ConfortEte = XsdLogementSortieConfortEte;
34
+ export type QualiteIsolation = XsdLogementSortieQualiteIsolation;
@@ -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
+ });