@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.
- package/10_besoin_fr.spec.js +1 -1
- package/10_clim.js +1 -1
- package/10_clim.spec.js +5 -9
- package/11_besoin_ecs.spec.js +1 -1
- package/11_ecs.js +2 -1
- package/11_ecs.spec.js +2 -2
- package/11_nadeq.js +1 -0
- package/11_nadeq.spec.js +1 -1
- package/11_rdim_ecs_individuelle_unique.js +78 -0
- package/11_rdim_ecs_individuelle_unique.spec.js +136 -0
- package/12.4_pac.js +5 -3
- package/12.4_pac.spec.js +10 -18
- package/13.2_generateur_combustion.js +19 -16
- package/13.2_generateur_combustion.spec.js +10 -10
- package/13.2_generateur_combustion_bouilleur.js +5 -2
- package/13.2_generateur_combustion_bouilleur.spec.js +1 -1
- package/13.2_generateur_combustion_ch.js +8 -7
- package/13.2_generateur_combustion_ch.spec.js +7 -7
- package/13.2_generateur_combustion_chaudiere.js +5 -2
- package/13.2_generateur_combustion_chaudiere.spec.js +2 -2
- package/13.2_generateur_combustion_pdim.js +6 -6
- package/13.2_generateur_combustion_pdim.spec.js +1 -1
- package/13.2_generateur_combustion_pn.spec.js +1 -1
- package/13.2_generateur_pac.js +4 -1
- package/13.2_generateur_pac.spec.js +1 -1
- package/13_rendement_distribution_ecs.spec.js +1 -1
- package/14_generateur_ecs.js +2 -1
- package/14_generateur_ecs.spec.js +4 -4
- package/15_conso_aux.js +19 -17
- package/15_conso_aux.spec.js +8 -8
- package/16.2_production_enr.js +4 -3
- package/16.2_production_enr.spec.js +1 -1
- package/16_conso_eclairage.spec.js +1 -1
- package/2021_04_13_confort_ete.spec.js +1 -1
- package/2021_04_13_qualite_isolation.js +1 -1
- package/2021_04_13_qualite_isolation.spec.js +2 -2
- package/3.1_b.spec.js +1 -1
- package/3.2.1_mur.js +10 -9
- package/3.2.1_mur.spec.js +11 -19
- package/3.2.2_plancher_bas.js +4 -3
- package/3.2.2_plancher_bas.spec.js +10 -20
- package/3.2.3_plancher_haut.js +1 -1
- package/3.2.3_plancher_haut.spec.js +2 -2
- package/3.3.1.4_porte.js +1 -1
- package/3.3.1.4_porte.spec.js +2 -2
- package/3.3_baie_vitree.js +2 -2
- package/3.3_baie_vitree.spec.js +3 -3
- package/3.4_pont_thermique.js +6 -4
- package/3.4_pont_thermique.spec.js +7 -7
- package/3_deperdition.js +1 -0
- package/3_deperdition.spec.js +3 -3
- package/4_ventilation.js +2 -2
- package/4_ventilation.spec.js +1 -1
- package/5_conso_ventilation.spec.js +1 -1
- package/6.1_apport_gratuit.spec.js +2 -2
- package/6.2_surface_sud_equivalente.js +12 -9
- package/6.2_surface_sud_equivalente.spec.js +3 -3
- package/7_inertie.js +7 -4
- package/7_inertie.spec.js +1 -1
- package/8_intermittence.spec.js +1 -1
- package/9_besoin_ch.js +5 -3
- package/9_besoin_ch.spec.js +3 -3
- package/9_chauffage.js +12 -11
- package/9_chauffage.spec.js +7 -7
- package/9_conso_ch.spec.js +3 -3
- package/9_emetteur_ch.js +5 -5
- package/9_emetteur_ch.spec.js +1 -1
- package/9_generateur_ch.js +16 -13
- package/9_generateur_ch.spec.js +6 -6
- package/README.md +19 -19
- package/apport_et_besoin.spec.js +1 -1
- package/conso.js +18 -14
- package/conso.spec.js +3 -3
- package/core/assets/domain/synchronize-assets.js +2 -0
- package/core/assets/domain/synchronize-c1-tables.js +2 -0
- package/core/assets/domain/synchronize-dpe-ges-limit-values-tables.js +2 -0
- package/core/assets/domain/synchronize-enum-tables.js +2 -0
- package/core/assets/domain/synchronize-solicitations-tables.js +2 -0
- package/core/assets/domain/synchronize-valeur-tables.js +6 -0
- package/core/file/infrastructure/adapter/csv-parser.store.js +2 -1
- package/dpe-sanitizer.service.js +1 -0
- package/engine.js +11 -2
- package/engine.spec.js +23 -2
- package/enums.d.ts +1257 -0
- package/features/dpe/domain/models/baie-ets.model.ts +8 -11
- package/features/dpe/domain/models/baie-vitree.model.ts +28 -96
- package/features/dpe/domain/models/climatisation.model.ts +13 -23
- package/features/dpe/domain/models/dpe-xsd.generated.ts +2797 -0
- package/features/dpe/domain/models/dpe.model.ts +105 -181
- package/features/dpe/domain/models/ets.model.ts +10 -18
- package/features/dpe/domain/models/installation-chauffage.model.ts +92 -99
- package/features/dpe/domain/models/installation-ecs.model.ts +45 -77
- package/features/dpe/domain/models/mur.model.ts +10 -38
- package/features/dpe/domain/models/plancher.model.ts +22 -63
- package/features/dpe/domain/models/pont-thermique.model.ts +10 -20
- package/features/dpe/domain/models/porte.model.ts +10 -30
- package/features/dpe/domain/models/production-elec-enr.model.ts +13 -27
- package/features/dpe/domain/models/sortie.model.ts +32 -176
- package/features/dpe/domain/models/type-generateur.model.js +4 -3
- package/features/dpe/domain/models/type-habitation.model.js +8 -6
- package/features/dpe/domain/models/type-stockage.model.js +4 -3
- package/features/dpe/domain/models/type-ventilation.model.js +4 -3
- package/features/dpe/domain/models/ventilation.model.ts +15 -25
- package/features/dpe/infrastructure/ch/chTv.store.js +2 -2
- package/features/dpe/infrastructure/ecs/ecsTv.store.js +3 -3
- package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.js +1 -1
- package/features/dpe/infrastructure/froid/frTv.store.js +3 -3
- package/features/dpe/infrastructure/froid/frTv.store.spec.js +1 -1
- package/features/dpe/infrastructure/tv.store.js +1 -1
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.js +3 -0
- package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.js +9 -3
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +1 -1
- package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.js +2 -1
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.js +4 -1
- package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.js +7 -2
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +1 -1
- package/features/engine/domain/ch/emetteur-ch.service.js +3 -1
- package/features/engine/domain/ch/emetteur-ch.service.spec.js +1 -1
- package/features/engine/domain/ch/generateur-ch.service.js +4 -1
- package/features/engine/domain/ch/generateur-ch.service.spec.js +3 -3
- package/features/engine/domain/ch/installation-ch.service.js +2 -0
- package/features/engine/domain/conso/conso.service.js +2 -0
- package/features/engine/domain/conso/froid/conso-froid.service.js +5 -1
- package/features/engine/domain/contexte.builder.js +2 -0
- package/features/engine/domain/ecs/generateur-ecs.service.js +1 -0
- package/features/engine/domain/ecs/installation-ecs.service.js +3 -0
- package/features/engine/domain/engine.service.js +1 -0
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.js +4 -1
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.js +3 -0
- package/features/engine/domain/enveloppe/deperdition.service.js +8 -4
- package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.js +4 -1
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.js +3 -1
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.js +3 -1
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +2 -2
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.js +4 -2
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.js +9 -1
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +1 -1
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.js +3 -1
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.js +3 -1
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +1 -1
- package/features/engine/domain/logement/nadeq.service.js +1 -1
- package/features/engine/domain/logement/nadeq.service.spec.js +1 -1
- package/features/engine/domain/models/contexte.model.ts +2 -2
- package/features/normalizer/domain/dpe-normalizer.service.js +1 -0
- package/ficheTechnique.js +4 -2
- package/globals.d.ts +14 -0
- package/package.json +3 -2
- package/preprocessor/index.js +1 -0
- package/tv.d.ts +759 -0
- package/tvs.d.ts +2 -7
- package/utils.js +8 -6
package/conso.spec.js
CHANGED
|
@@ -78,7 +78,7 @@ const { tv } = await import('./utils.js');
|
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
* Classe énergétique (bilan DPE)
|
|
81
|
-
* @see
|
|
81
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf
|
|
82
82
|
*/
|
|
83
83
|
describe('classe_bilan_dpe - seuils de classe énergétique', () => {
|
|
84
84
|
test('consommation nulle (null) : aucune classe', () => {
|
|
@@ -121,7 +121,7 @@ describe('classe_bilan_dpe - seuils de classe énergétique', () => {
|
|
|
121
121
|
|
|
122
122
|
/**
|
|
123
123
|
* Classe climat (émissions GES)
|
|
124
|
-
* @see
|
|
124
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf
|
|
125
125
|
*/
|
|
126
126
|
describe('classe_emission_ges - seuils de classe climat', () => {
|
|
127
127
|
test('émission nulle (null) : aucune classe', () => {
|
|
@@ -758,7 +758,7 @@ describe('calc_conso - agrégation des consommations', () => {
|
|
|
758
758
|
|
|
759
759
|
/**
|
|
760
760
|
* Ligne « électricité » de sortie_par_energie (issue #34).
|
|
761
|
-
* @see
|
|
761
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15, §16.2 ; arrêté DPE habitation du 31/03/2021 §3.a, §4.a
|
|
762
762
|
*/
|
|
763
763
|
describe('sortie_par_energie - ligne électricité (issue #34)', () => {
|
|
764
764
|
const elecDe = (res) =>
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { ApplicationConfig } from '../../conf/infrastructure/application.config.js' */
|
|
2
|
+
/** @import { FileStore } from '../../file/infrastructure/adapter/file.store.js' */
|
|
1
3
|
/**
|
|
2
4
|
* Download the `enum_tables.xlsx` file from the official ademe repository and generates a new `enums.js` file
|
|
3
5
|
* Please see @link https://gitlab.com/observatoire-dpe/observatoire-dpe/-/tree/master
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/** @import { ApplicationConfig } from '../../conf/infrastructure/application.config.js' */
|
|
2
|
+
/** @import { FileStore } from '../../file/infrastructure/adapter/file.store.js' */
|
|
3
|
+
/** @import { AddAdditionnalUeValuesTables } from './add-additionnal-ue-values-tables.js' */
|
|
4
|
+
/** @import { SynchronizeC1Tables } from './synchronize-c1-tables.js' */
|
|
5
|
+
/** @import { SynchronizeDpeGesLimitValuesTables } from './synchronize-dpe-ges-limit-values-tables.js' */
|
|
6
|
+
/** @import { SynchronizeSolicitationsTables } from './synchronize-solicitations-tables.js' */
|
|
1
7
|
import { ObjectUtil } from '../../util/infrastructure/object-util.js';
|
|
2
8
|
|
|
3
9
|
/**
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
/** @import { ReadStream } from 'node:fs' */
|
|
1
2
|
import { parse } from 'fast-csv';
|
|
2
3
|
|
|
3
4
|
export default class CsvParserStore {
|
|
4
5
|
/**
|
|
5
6
|
* @param stream {ReadStream}
|
|
6
7
|
* @param opts {import('fast-csv').ParserOptionsArgs}
|
|
7
|
-
* @param transform {import('fast-csv').
|
|
8
|
+
* @param transform {import('fast-csv').ParserRowTransformFunction<any, any>}
|
|
8
9
|
* @return Promise<object[]>
|
|
9
10
|
*/
|
|
10
11
|
parseFromStream(stream, opts, transform) {
|
package/dpe-sanitizer.service.js
CHANGED
package/engine.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @import { FullDpe } from './features/dpe/domain/models/dpe.model.js' */
|
|
1
2
|
import enums from './enums.js';
|
|
2
3
|
import calc_deperdition from './3_deperdition.js';
|
|
3
4
|
import calc_apport_et_besoin from './apport_et_besoin.js';
|
|
@@ -34,9 +35,12 @@ import getFicheTechnique from './ficheTechnique.js';
|
|
|
34
35
|
import { ProductionENR, ratioProrataPvLogement } from './16.2_production_enr.js';
|
|
35
36
|
import DpeSanitizerService from './dpe-sanitizer.service.js';
|
|
36
37
|
import { reconstituerRdimDpeGenereImmeuble } from './17.2_rdim_dpe_genere_immeuble.js';
|
|
37
|
-
import {
|
|
38
|
+
import {
|
|
39
|
+
reconstituerRdimEcsIndividuelleUnique,
|
|
40
|
+
reconstituerRdimEcsIndividuellesMultiples
|
|
41
|
+
} from './11_rdim_ecs_individuelle_unique.js';
|
|
38
42
|
|
|
39
|
-
const LIB_VERSION = '1.11.
|
|
43
|
+
const LIB_VERSION = '1.11.4';
|
|
40
44
|
|
|
41
45
|
const dpeSanitizerService = new DpeSanitizerService();
|
|
42
46
|
|
|
@@ -305,6 +309,11 @@ export function calcul_3cl(inputDpe, options) {
|
|
|
305
309
|
* @see https://github.com/Open3CL/engine/issues/288
|
|
306
310
|
*/
|
|
307
311
|
reconstituerRdimEcsIndividuelleUnique(th, ecs, cg.surface_habitable_immeuble);
|
|
312
|
+
/**
|
|
313
|
+
* Immeuble avec plusieurs installations ECS individuelles décrites chacune pour un logement type
|
|
314
|
+
* (Σ Sh_i × nombre_logement_i ≈ SH, sans rdim) : rdim_i = nombre_logement_i.
|
|
315
|
+
*/
|
|
316
|
+
reconstituerRdimEcsIndividuellesMultiples(th, ecs, cg.surface_habitable_immeuble);
|
|
308
317
|
const Nb_lgt = cg.nombre_appartement || 1;
|
|
309
318
|
|
|
310
319
|
/**
|
package/engine.spec.js
CHANGED
|
@@ -75,7 +75,8 @@ vi.mock('./17.2_rdim_dpe_genere_immeuble.js', () => ({
|
|
|
75
75
|
reconstituerRdimDpeGenereImmeuble: vi.fn()
|
|
76
76
|
}));
|
|
77
77
|
vi.mock('./11_rdim_ecs_individuelle_unique.js', () => ({
|
|
78
|
-
reconstituerRdimEcsIndividuelleUnique: vi.fn()
|
|
78
|
+
reconstituerRdimEcsIndividuelleUnique: vi.fn(),
|
|
79
|
+
reconstituerRdimEcsIndividuellesMultiples: vi.fn()
|
|
79
80
|
}));
|
|
80
81
|
|
|
81
82
|
// Les instances Inertie / ProductionENR sont créées au chargement du module.
|
|
@@ -129,7 +130,7 @@ const calc_confort_ete = (await import('./2021_04_13_confort_ete.js')).default;
|
|
|
129
130
|
const calc_qualite_isolation = (await import('./2021_04_13_qualite_isolation.js')).default;
|
|
130
131
|
const getFicheTechnique = (await import('./ficheTechnique.js')).default;
|
|
131
132
|
const { reconstituerRdimDpeGenereImmeuble } = await import('./17.2_rdim_dpe_genere_immeuble.js');
|
|
132
|
-
const { reconstituerRdimEcsIndividuelleUnique } =
|
|
133
|
+
const { reconstituerRdimEcsIndividuelleUnique, reconstituerRdimEcsIndividuellesMultiples } =
|
|
133
134
|
await import('./11_rdim_ecs_individuelle_unique.js');
|
|
134
135
|
|
|
135
136
|
/** Objet conso renvoyé par le mock de `calc_conso` (mêmes réf pour les 3 appels). */
|
|
@@ -1326,6 +1327,26 @@ describe('calcul_3cl - rdim de l’installation ECS individuelle unique d’un i
|
|
|
1326
1327
|
});
|
|
1327
1328
|
});
|
|
1328
1329
|
|
|
1330
|
+
describe('calcul_3cl - rdim des installations ECS individuelles multiples d’un immeuble', () => {
|
|
1331
|
+
test('reconstitution appelée avec le type de bâtiment, les installations ECS et SH, avant le calcul ECS', () => {
|
|
1332
|
+
const dpe = makeDpe();
|
|
1333
|
+
dpe.logement.caracteristique_generale.surface_habitable_immeuble = 566.16;
|
|
1334
|
+
vi.mocked(reconstituerRdimEcsIndividuellesMultiples).mockImplementationOnce(() => {
|
|
1335
|
+
expect(calc_ecs).not.toHaveBeenCalled();
|
|
1336
|
+
return false;
|
|
1337
|
+
});
|
|
1338
|
+
|
|
1339
|
+
calcul_3cl(dpe, { sanitize: false });
|
|
1340
|
+
|
|
1341
|
+
expect(reconstituerRdimEcsIndividuellesMultiples).toHaveBeenCalledWith(
|
|
1342
|
+
'maison',
|
|
1343
|
+
dpe.logement.installation_ecs_collection.installation_ecs,
|
|
1344
|
+
566.16
|
|
1345
|
+
);
|
|
1346
|
+
expect(calc_ecs).toHaveBeenCalled();
|
|
1347
|
+
});
|
|
1348
|
+
});
|
|
1349
|
+
|
|
1329
1350
|
describe('get_conso_coeff_1_7_2027', () => {
|
|
1330
1351
|
test('projette la conso EP 2027 pour une maison', () => {
|
|
1331
1352
|
vi.mocked(classe_bilan_dpe).mockReturnValue('C');
|