@open3cl/engine 1.6.0 → 1.6.2
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/10_besoin_fr.spec.js +122 -0
- package/10_clim.spec.js +116 -0
- package/11_besoin_ecs.spec.js +69 -0
- package/11_ecs.spec.js +282 -0
- package/11_nadeq.spec.js +37 -0
- package/12.4_pac.spec.js +131 -0
- package/13.2_generateur_combustion.js +2 -0
- package/13.2_generateur_combustion.spec.js +537 -0
- package/13.2_generateur_combustion_bouilleur.js +4 -1
- package/13.2_generateur_combustion_bouilleur.spec.js +74 -0
- package/13.2_generateur_combustion_ch.spec.js +323 -0
- package/13.2_generateur_combustion_chaudiere.spec.js +85 -0
- package/13.2_generateur_pac.spec.js +64 -0
- package/13_rendement_distribution_ecs.spec.js +38 -0
- package/14_generateur_ecs.js +4 -4
- package/14_generateur_ecs.spec.js +745 -0
- package/15_conso_aux.spec.js +225 -0
- package/16.2_production_enr.spec.js +188 -0
- package/16_conso_eclairage.spec.js +62 -0
- package/2021_04_13_confort_ete.spec.js +159 -0
- package/2021_04_13_qualite_isolation.js +1 -1
- package/2021_04_13_qualite_isolation.spec.js +286 -0
- package/3.1_b.js +1 -1
- package/3.1_b.spec.js +367 -0
- package/3.2.1_mur.spec.js +812 -39
- package/3.2.2_plancher_bas.spec.js +643 -78
- package/3.2.3_plancher_haut.spec.js +452 -0
- package/3.3.1.4_porte.spec.js +114 -0
- package/3.3_baie_vitree.spec.js +449 -295
- package/3.4_pont_thermique.spec.js +890 -0
- package/3_deperdition.spec.js +397 -0
- package/4_ventilation.js +1 -1
- package/4_ventilation.spec.js +406 -0
- package/5_conso_ventilation.spec.js +186 -0
- package/6.2_surface_sud_equivalente.spec.js +138 -0
- package/8_intermittence.spec.js +33 -0
- package/9_besoin_ch.js +2 -2
- package/9_besoin_ch.spec.js +381 -0
- package/9_chauffage.js +4 -0
- package/9_chauffage.spec.js +478 -92
- package/9_conso_ch.spec.js +502 -248
- package/9_emetteur_ch.spec.js +339 -0
- package/9_generateur_ch.spec.js +467 -81
- package/README.md +18 -9
- package/apport_et_besoin.spec.js +126 -0
- package/conso.js +1 -1
- package/conso.spec.js +471 -82
- package/core/assets/domain/add-additionnal-ue-values-tables.spec.js +53 -0
- package/core/assets/domain/synchronize-solicitations-tables.spec.js +25 -0
- package/core/assets/domain/synchronize-valeur-tables.spec.js +48 -0
- package/core/conf/infrastructure/application.config.spec.js +35 -0
- package/core/file/infrastructure/adapter/csv-parser.store.spec.js +31 -13
- package/core/file/infrastructure/adapter/file.store.spec.js +148 -12
- package/core/tv/infrastructure/assets/additional-ue-values.spec.js +36 -0
- package/core/util/infrastructure/object-util.spec.js +20 -0
- package/core/util/logger/log-service.js +16 -7
- package/core/util/logger/log-service.spec.js +101 -0
- package/dpe-sanitizer.service.spec.js +138 -0
- package/engine.js +7 -5
- package/engine.spec.js +854 -0
- package/enums.spec.js +46 -0
- package/features/dpe/domain/models/type-generateur.model.js +1 -2
- package/features/dpe/domain/models/type-generateur.model.spec.js +25 -0
- package/features/dpe/domain/models/type-habitation.model.spec.js +41 -0
- package/features/dpe/domain/models/type-stockage.model.spec.js +18 -0
- package/features/dpe/domain/models/type-ventilation.model.spec.js +19 -0
- package/features/dpe/infrastructure/ch/chTv.store.spec.js +4 -4
- package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.js +14 -2
- package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.spec.js +16 -0
- package/features/dpe/infrastructure/tv.store.js +28 -9
- package/features/dpe/infrastructure/tv.store.spec.js +44 -0
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.spec.js +2 -1
- package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.spec.js +18 -0
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +33 -1
- package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.spec.js +21 -1
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.spec.js +41 -1
- package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.spec.js +44 -1
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +2 -1
- package/features/engine/domain/ch/generateur-ch.service.js +2 -0
- package/features/engine/domain/ch/generateur-ch.service.spec.js +117 -2
- package/features/engine/domain/ch/installation-ch.service.spec.js +14 -0
- package/features/engine/domain/conso/froid/conso-froid.service.spec.js +82 -1
- package/features/engine/domain/constants.spec.js +14 -0
- package/features/engine/domain/contexte.builder.spec.js +21 -0
- package/features/engine/domain/ecs/generateur-ecs.service.spec.js +11 -0
- package/features/engine/domain/ecs/installation-ecs.service.spec.js +55 -2
- package/features/engine/domain/engine.service.spec.js +227 -4
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.spec.js +124 -1
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.spec.js +270 -2
- package/features/engine/domain/enveloppe/deperdition.service.spec.js +141 -0
- package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.spec.js +2 -1
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.spec.js +117 -1
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +134 -1
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.spec.js +126 -1
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +18 -1
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.spec.js +2 -1
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +67 -1
- package/features/normalizer/domain/dpe-normalizer.service.js +1 -1
- package/features/normalizer/domain/dpe-normalizer.service.spec.js +53 -2
- package/ficheTechnique.spec.js +26 -0
- package/index.spec.js +54 -0
- package/package.json +5 -2
- package/preprocessor/index.js +20 -0
- package/preprocessor/index.spec.js +15 -0
- package/tv.spec.js +38 -0
- package/utils.js +43 -1
- package/utils.spec.js +518 -2
- package/output.js +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Dépendances mockées pour isoler `apport_et_besoin.js` (pur assembleur) :
|
|
5
|
+
* - `enums` : mapping zone/altitude/inertie ;
|
|
6
|
+
* - besoins ECS / froid, apports internes / solaires, surface sud équivalente :
|
|
7
|
+
* simples délégations dont on contrôle le retour ;
|
|
8
|
+
* - `Nadeq` : service de calcul du nombre d'adultes équivalents, remplacé par
|
|
9
|
+
* une classe factice via `vi.hoisted`.
|
|
10
|
+
*/
|
|
11
|
+
const { calculateNadeq } = vi.hoisted(() => ({ calculateNadeq: vi.fn() }));
|
|
12
|
+
|
|
13
|
+
vi.mock('./enums.js', () => ({
|
|
14
|
+
default: {
|
|
15
|
+
zone_climatique: { 0: 'h1a' },
|
|
16
|
+
classe_altitude: { 0: 'ca1' },
|
|
17
|
+
classe_inertie: { 0: 'moyenne' }
|
|
18
|
+
}
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
vi.mock('./6.2_surface_sud_equivalente.js', () => ({ calc_sse: vi.fn() }));
|
|
22
|
+
vi.mock('./10_besoin_fr.js', () => ({ default: vi.fn() }));
|
|
23
|
+
vi.mock('./11_besoin_ecs.js', () => ({ default: vi.fn() }));
|
|
24
|
+
vi.mock('./6.1_apport_gratuit.js', () => ({ calc_ai: vi.fn(), calc_as: vi.fn() }));
|
|
25
|
+
vi.mock('./11_nadeq.js', () => ({ Nadeq: vi.fn(() => ({ calculateNadeq })) }));
|
|
26
|
+
|
|
27
|
+
const { default: calc_apport_et_besoin } = await import('./apport_et_besoin.js');
|
|
28
|
+
const { calc_sse } = await import('./6.2_surface_sud_equivalente.js');
|
|
29
|
+
const { default: calc_besoin_fr } = await import('./10_besoin_fr.js');
|
|
30
|
+
const { default: calc_besoin_ecs } = await import('./11_besoin_ecs.js');
|
|
31
|
+
const { calc_ai, calc_as } = await import('./6.1_apport_gratuit.js');
|
|
32
|
+
|
|
33
|
+
/** Logement minimal contenant les collections lues par l'assembleur. */
|
|
34
|
+
function logementFixture() {
|
|
35
|
+
return {
|
|
36
|
+
enveloppe: {
|
|
37
|
+
inertie: { enum_classe_inertie_id: 0 },
|
|
38
|
+
baie_vitree_collection: { baie_vitree: ['bv'] },
|
|
39
|
+
ets_collection: { ets: ['ets'] }
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
beforeEach(() => {
|
|
45
|
+
calculateNadeq.mockReset().mockReturnValue(2.5);
|
|
46
|
+
vi.mocked(calc_sse).mockReset().mockReturnValue(7);
|
|
47
|
+
vi.mocked(calc_besoin_ecs).mockReset().mockReturnValue({ besoin_ecs: 1 });
|
|
48
|
+
vi.mocked(calc_besoin_fr)
|
|
49
|
+
.mockReset()
|
|
50
|
+
.mockImplementation(() => ({ besoin_fr: 5, besoin_fr_depensier: 6 }));
|
|
51
|
+
vi.mocked(calc_ai)
|
|
52
|
+
.mockReset()
|
|
53
|
+
.mockImplementation(() => ({ apport_interne_ch: 10, apport_interne_fr: 20 }));
|
|
54
|
+
vi.mocked(calc_as)
|
|
55
|
+
.mockReset()
|
|
56
|
+
.mockImplementation(() => ({ apport_solaire_ch: 30, apport_solaire_fr: 40 }));
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Calcul des apports et besoins (assembleur chauffage / froid / ECS)
|
|
61
|
+
* @see : Methode_de_calcul_3CL_DPE_2021-338.pdf
|
|
62
|
+
*/
|
|
63
|
+
describe('calc_apport_et_besoin', () => {
|
|
64
|
+
test('agrège les besoins, apports et volumes ECS (climatisation présente)', () => {
|
|
65
|
+
const ret = calc_apport_et_besoin(
|
|
66
|
+
logementFixture(),
|
|
67
|
+
'maison',
|
|
68
|
+
[],
|
|
69
|
+
['clim'],
|
|
70
|
+
100,
|
|
71
|
+
1,
|
|
72
|
+
250,
|
|
73
|
+
0,
|
|
74
|
+
0,
|
|
75
|
+
0
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
expect(ret.nadeq).toBe(2.5);
|
|
79
|
+
// volumes d'ECS journaliers : 56 L et 79 L (dépensier) par adulte équivalent
|
|
80
|
+
expect(ret.v40_ecs_journalier).toBe(140);
|
|
81
|
+
expect(ret.v40_ecs_journalier_depensier).toBe(197.5);
|
|
82
|
+
expect(ret.surface_sud_equivalente).toBe(7);
|
|
83
|
+
// fusion des retours délégués
|
|
84
|
+
expect(ret.besoin_ecs).toBe(1);
|
|
85
|
+
expect(ret.besoin_fr).toBe(5);
|
|
86
|
+
expect(ret.besoin_fr_depensier).toBe(6);
|
|
87
|
+
expect(ret.apport_interne_fr).toBe(20);
|
|
88
|
+
expect(ret.apport_solaire_fr).toBe(40);
|
|
89
|
+
expect(ret.apport_interne_ch).toBe(10);
|
|
90
|
+
expect(ret.apport_solaire_ch).toBe(30);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
test('délègue avec les bons libellés (altitude/zone/inertie) et collections', () => {
|
|
94
|
+
const logement = logementFixture();
|
|
95
|
+
calc_apport_et_besoin(logement, 'maison', [], ['clim'], 100, 1, 250, 4, 0, 0);
|
|
96
|
+
|
|
97
|
+
expect(calculateNadeq).toHaveBeenCalledWith(logement);
|
|
98
|
+
expect(calc_besoin_ecs).toHaveBeenCalledWith('ca1', 'h1a', 2.5);
|
|
99
|
+
expect(calc_besoin_fr).toHaveBeenCalledWith(
|
|
100
|
+
'ca1',
|
|
101
|
+
'h1a',
|
|
102
|
+
100,
|
|
103
|
+
2.5,
|
|
104
|
+
250,
|
|
105
|
+
'moyenne',
|
|
106
|
+
['bv'],
|
|
107
|
+
['ets']
|
|
108
|
+
);
|
|
109
|
+
// les apports internes/solaires reçoivent l'indicateur ilpa
|
|
110
|
+
expect(calc_ai).toHaveBeenCalledWith(4, 'ca1', 'h1a', 100, 2.5);
|
|
111
|
+
expect(calc_as).toHaveBeenCalledWith(4, 'ca1', 'h1a', ['bv'], ['ets']);
|
|
112
|
+
expect(calc_sse).toHaveBeenCalledWith('ca1', 'h1a', ['bv'], ['ets']);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test('sans climatisation : besoins de froid et apports de froid remis à zéro', () => {
|
|
116
|
+
const ret = calc_apport_et_besoin(logementFixture(), 'maison', [], [], 100, 1, 250, 0, 0, 0);
|
|
117
|
+
|
|
118
|
+
expect(ret.besoin_fr).toBe(0);
|
|
119
|
+
expect(ret.besoin_fr_depensier).toBe(0);
|
|
120
|
+
expect(ret.apport_interne_fr).toBe(0);
|
|
121
|
+
expect(ret.apport_solaire_fr).toBe(0);
|
|
122
|
+
// les apports de chauffage restent inchangés
|
|
123
|
+
expect(ret.apport_interne_ch).toBe(10);
|
|
124
|
+
expect(ret.apport_solaire_ch).toBe(30);
|
|
125
|
+
});
|
|
126
|
+
});
|
package/conso.js
CHANGED
|
@@ -98,7 +98,7 @@ const coef_cout = {
|
|
|
98
98
|
* @param destination {'ch' | 'ecs' | 'éclairage'}
|
|
99
99
|
* @return {string} la clef à utiliser pour récupérer le coefficient depuis la table `coef_ges`
|
|
100
100
|
*/
|
|
101
|
-
function getCoefKey(type_energie, destination) {
|
|
101
|
+
export function getCoefKey(type_energie, destination) {
|
|
102
102
|
if (type_energie === 'électricité') {
|
|
103
103
|
if (!['ch', 'ecs', 'éclairage'].includes(destination)) {
|
|
104
104
|
console.error(`Type d'électricité inconnu: ${destination}`);
|