@open3cl/engine 1.0.12 → 1.0.14
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.
- package/13.2_generateur_combustion_ch.js +1 -1
- package/features/dpe/domain/models/dpe.model.ts +9 -0
- package/features/dpe/domain/models/installation-chauffage.model.ts +26 -2
- package/features/dpe/domain/models/type-generateur.model.js +8 -0
- package/features/dpe/infrastructure/ch/chTv.store.js +94 -0
- package/features/dpe/infrastructure/ch/chTv.store.spec.js +99 -0
- package/features/dpe/infrastructure/ecs/ecsTv.store.js +5 -3
- package/features/dpe/infrastructure/ecs/ecsTv.store.spec.js +4 -0
- package/features/dpe/infrastructure/froid/frTv.store.js +4 -2
- package/features/dpe/infrastructure/tv.store.js +28 -0
- package/features/dpe/infrastructure/tv.store.spec.js +12 -0
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.js +57 -3
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.spec.js +117 -2
- package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.js +18 -2
- package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.spec.js +13 -2
- package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.js +150 -0
- package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.spec.js +145 -0
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.js +168 -0
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +313 -0
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.js +12 -8
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.spec.js +28 -13
- package/features/engine/domain/ch/emetteur-ch.service.js +100 -0
- package/features/engine/domain/ch/emetteur-ch.service.spec.js +78 -0
- package/features/engine/domain/ch/generateur-ch.service.js +365 -0
- package/features/engine/domain/ch/generateur-ch.service.spec.js +734 -0
- package/features/engine/domain/ch/installation-ch.service.js +39 -0
- package/features/engine/domain/ch/installation-ch.service.spec.js +41 -0
- package/features/engine/domain/contexte.builder.js +1 -0
- package/features/engine/domain/contexte.builder.spec.js +2 -0
- package/features/engine/domain/ecs/generateur-ecs.service.js +2 -2
- package/features/engine/domain/ecs/installation-ecs.service.js +5 -5
- package/features/engine/domain/engine.service.js +13 -2
- package/features/engine/domain/models/contexte.model.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { inject } from 'dioma';
|
|
2
|
+
import { GenerateurChService } from './generateur-ch.service.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Calcul des installations de chauffage
|
|
6
|
+
*
|
|
7
|
+
* @see Méthode de calcul 3CL-DPE 2021 (cotobre 2021) chapitre 3
|
|
8
|
+
*/
|
|
9
|
+
export class InstallationChService {
|
|
10
|
+
/**
|
|
11
|
+
* @type {GenerateurChService}
|
|
12
|
+
*/
|
|
13
|
+
#generateurChService;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @param generateurChService {GenerateurChService}
|
|
17
|
+
*/
|
|
18
|
+
constructor(generateurChService = inject(GenerateurChService)) {
|
|
19
|
+
this.#generateurChService = generateurChService;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Détermination des données des installations de chauffage
|
|
24
|
+
*
|
|
25
|
+
* @param ctx {Contexte}
|
|
26
|
+
* @param logement {Logement}
|
|
27
|
+
*/
|
|
28
|
+
execute(ctx, logement) {
|
|
29
|
+
const installationsChauffage =
|
|
30
|
+
logement.installation_chauffage_collection?.installation_chauffage || [];
|
|
31
|
+
|
|
32
|
+
installationsChauffage.forEach((installationChauffage) => {
|
|
33
|
+
/**
|
|
34
|
+
* Calcul des données nécessaires au calcul pour chaque générateur (qp0)
|
|
35
|
+
*/
|
|
36
|
+
this.#generateurChService.execute(ctx, logement, installationChauffage);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
2
|
+
import { InstallationChService } from './installation-ch.service.js';
|
|
3
|
+
import { GenerateurChService } from './generateur-ch.service.js';
|
|
4
|
+
|
|
5
|
+
/** @type {InstallationChService} **/
|
|
6
|
+
let service;
|
|
7
|
+
|
|
8
|
+
/** @type {GenerateurChService} **/
|
|
9
|
+
let generateurChService;
|
|
10
|
+
|
|
11
|
+
describe('Calcul des installations de chauffage', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
generateurChService = new GenerateurChService();
|
|
14
|
+
service = new InstallationChService(generateurChService);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('Calcul des données des générateurs de chaque installation de chauffage', () => {
|
|
18
|
+
vi.spyOn(generateurChService, 'execute').mockReturnThis();
|
|
19
|
+
|
|
20
|
+
/** @type {InstallationChauffage} */
|
|
21
|
+
const installationCh = {
|
|
22
|
+
donnee_entree: { enum_type_installation_id: 1 },
|
|
23
|
+
generateur_chauffage_collection: {
|
|
24
|
+
generateur_chauffage: [{ donnee_entree: { position_volume_chauffe_stockage: 1 } }]
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/** @type {Logement} */
|
|
29
|
+
const logement = {
|
|
30
|
+
installation_chauffage_collection: { installation_chauffage: [installationCh] }
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** @type {Contexte} */
|
|
34
|
+
const ctx = {
|
|
35
|
+
zoneClimatique: { id: 1 }
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
service.execute(ctx, logement);
|
|
39
|
+
expect(generateurChService.execute).toHaveBeenCalledWith(ctx, logement, installationCh);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -36,6 +36,7 @@ export class ContexteBuilder {
|
|
|
36
36
|
typeHabitation: this.#getTypeHabitation(caracteristiqueGenerale),
|
|
37
37
|
typeDpe: typeDpe,
|
|
38
38
|
enumPeriodeConstructionId: caracteristiqueGenerale.enum_periode_construction_id?.toString(),
|
|
39
|
+
anneeConstruction: parseInt(caracteristiqueGenerale.annee_construction),
|
|
39
40
|
effetJoule: this.#hasEffetJoule(dpe),
|
|
40
41
|
surfaceHabitable: surfaceHabitable,
|
|
41
42
|
hauteurSousPlafond: caracteristiqueGenerale.hsp,
|
|
@@ -106,6 +106,7 @@ describe('Generateur du contexte du calcul', () => {
|
|
|
106
106
|
enum_classe_altitude_id: 2
|
|
107
107
|
},
|
|
108
108
|
caracteristique_generale: {
|
|
109
|
+
annee_construction: 2005,
|
|
109
110
|
enum_periode_construction_id: 4,
|
|
110
111
|
surface_habitable_logement: 48.9,
|
|
111
112
|
surface_habitable_immeuble: 105,
|
|
@@ -120,6 +121,7 @@ describe('Generateur du contexte du calcul', () => {
|
|
|
120
121
|
surfaceHabitable: dpe.logement.caracteristique_generale.surface_habitable_logement,
|
|
121
122
|
typeHabitation: TypeHabitation.MAISON,
|
|
122
123
|
typeDpe: TypeDpe.MAISON,
|
|
124
|
+
anneeConstruction: 2005,
|
|
123
125
|
enumPeriodeConstructionId: '4',
|
|
124
126
|
hauteurSousPlafond: 2.8,
|
|
125
127
|
nombreAppartement: 18,
|
|
@@ -21,12 +21,12 @@ export class GenerateurEcsService {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* Détermination des
|
|
24
|
+
* Détermination des données de calcul pour une installation ECS
|
|
25
25
|
*
|
|
26
26
|
* @param installationEcs {InstallationEcs}
|
|
27
27
|
*/
|
|
28
28
|
execute(installationEcs) {
|
|
29
|
-
const generateursEcs = installationEcs.generateur_ecs_collection
|
|
29
|
+
const generateursEcs = installationEcs.generateur_ecs_collection?.generateur_ecs || [];
|
|
30
30
|
|
|
31
31
|
generateursEcs.forEach((generateurEcs) => {
|
|
32
32
|
/** @type {GenerateurEcsDE}*/
|
|
@@ -58,8 +58,8 @@ export class InstallationEcsService {
|
|
|
58
58
|
*/
|
|
59
59
|
this.pertesDistributionStockageEcsInstallation(
|
|
60
60
|
installationEcs,
|
|
61
|
-
besoinEcsInstallation,
|
|
62
|
-
besoinEcsDepensierInstallation
|
|
61
|
+
besoinEcsInstallation * 1000,
|
|
62
|
+
besoinEcsDepensierInstallation * 1000
|
|
63
63
|
);
|
|
64
64
|
});
|
|
65
65
|
}
|
|
@@ -73,7 +73,7 @@ export class InstallationEcsService {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/**
|
|
76
|
-
* Return le besoin rationalisé de l'installation par rapport au besoin
|
|
76
|
+
* Return le besoin rationalisé de l'installation par rapport au besoin global du logement
|
|
77
77
|
*
|
|
78
78
|
* @param ctx {Contexte}
|
|
79
79
|
* @param installationEcs {InstallationEcs}
|
|
@@ -109,8 +109,8 @@ export class InstallationEcsService {
|
|
|
109
109
|
* Qgw: pertes brutes annuelles de stockage (Wh)
|
|
110
110
|
*
|
|
111
111
|
* @param installationEcs {InstallationEcs}
|
|
112
|
-
* @param besoinEcsInstallation {number}
|
|
113
|
-
* @param besoinEcsDepensierInstallation {number}
|
|
112
|
+
* @param besoinEcsInstallation {number} // en Wh
|
|
113
|
+
* @param besoinEcsDepensierInstallation {number} // en Wh
|
|
114
114
|
*/
|
|
115
115
|
pertesDistributionStockageEcsInstallation(
|
|
116
116
|
installationEcs,
|
|
@@ -58,6 +58,14 @@ export class EngineService {
|
|
|
58
58
|
confort_ete: undefined,
|
|
59
59
|
qualite_isolation: undefined
|
|
60
60
|
};
|
|
61
|
+
proceededDpe.logement.donnees_de_calcul = {
|
|
62
|
+
apportsInterne: [],
|
|
63
|
+
apportsInterneDepensier: [],
|
|
64
|
+
apportsInterneCh: [],
|
|
65
|
+
apportsSolaire: [],
|
|
66
|
+
besoinChauffageHP: [],
|
|
67
|
+
besoinChauffageDepensierHP: []
|
|
68
|
+
};
|
|
61
69
|
const ctx = this.#contextBuilder.fromDpe(proceededDpe);
|
|
62
70
|
|
|
63
71
|
// Calcul de l'inertie
|
|
@@ -101,6 +109,8 @@ export class EngineService {
|
|
|
101
109
|
|
|
102
110
|
// Calcul du DPE dans le collectif
|
|
103
111
|
|
|
112
|
+
delete proceededDpe.logement.donnees_de_calcul;
|
|
113
|
+
|
|
104
114
|
return proceededDpe;
|
|
105
115
|
}
|
|
106
116
|
|
|
@@ -142,9 +152,10 @@ export class EngineService {
|
|
|
142
152
|
m.emetteur_chauffage_collection.emetteur_chauffage?.map((n) => {
|
|
143
153
|
delete n.donnee_intermediaire;
|
|
144
154
|
});
|
|
145
|
-
|
|
155
|
+
// @todo calculer les données intermédiaires (notamment pn et qp0)
|
|
156
|
+
/*m.generateur_chauffage_collection.generateur_chauffage?.map((n) => {
|
|
146
157
|
delete n.donnee_intermediaire;
|
|
147
|
-
})
|
|
158
|
+
});*/
|
|
148
159
|
delete m.donnee_intermediaire;
|
|
149
160
|
});
|
|
150
161
|
delete dpe.logement.production_elec_enr?.donnee_intermediaire;
|