Automatische Berechnung Test
Automatische Prüfung der Berechnung durch Vergleich mit alten Ergebnissen auf alten Ausweisen.
This commit is contained in:
@@ -4,7 +4,7 @@ import * as fs from "fs";
|
||||
|
||||
const start = moment().set("year", 2019).set("month", 8).set("date", 1);
|
||||
|
||||
const end = moment().set("year", 2022).set("month", 10).set("date", 1);
|
||||
const end = moment().set("year", 2023).set("month", 1).set("date", 1);
|
||||
|
||||
let current = start.clone();
|
||||
|
||||
|
||||
133
src/lib/altes-system/import.ts
Normal file
133
src/lib/altes-system/import.ts
Normal file
@@ -0,0 +1,133 @@
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { faker } from "@faker-js/faker";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
import moment from "moment";
|
||||
|
||||
export async function importVerbrauchsausweisWohnenAltesSystem(count: number = 5) {
|
||||
const response = await fetch("https://online-energieausweis.org/user/ausweis-import.php", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
i: count,
|
||||
offset: 0,
|
||||
q: {}
|
||||
})
|
||||
})
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
export function verbrauchsausweisWohnenImportTranslate(ausweis: Record<string, any>) {
|
||||
const ausweisTranslated: VerbrauchsausweisWohnenClient = {
|
||||
rechnungen: null,
|
||||
gebaeude_aufnahme_allgemein: {
|
||||
baujahr_gebaeude: [ausweis.baujahr_gebaeude],
|
||||
baujahr_heizung: [ausweis.baujahr_anlage],
|
||||
baujahr_klima: [ausweis.baujahr_klimaanlage],
|
||||
adresse: ausweis.objekt_strasse,
|
||||
plz: ausweis.objekt_plz,
|
||||
ort: ausweis.objekt_ort,
|
||||
nutzflaeche: ausweis.nutzflaeche,
|
||||
einheiten: ausweis.anzahl_einheiten,
|
||||
saniert: ausweis.objekt_saniert,
|
||||
keller: ausweis.keller_beheizt == "Beheizt" ? Enums.Heizungsstatus.BEHEIZT : ausweis.keller_beheizt == "Unbeheizt" ? Enums.Heizungsstatus.UNBEHEIZT : Enums.Heizungsstatus.NICHT_VORHANDEN,
|
||||
dachgeschoss: ausweis.dachgeschoss == "Beheizt" ? Enums.Heizungsstatus.BEHEIZT : ausweis.dachgeschoss == "Unbeheizt" ? Enums.Heizungsstatus.UNBEHEIZT : Enums.Heizungsstatus.NICHT_VORHANDEN,
|
||||
flaeche: ausweis.wohnflaeche,
|
||||
gebaeudetyp: ausweis.objekt_typ,
|
||||
gebaeudeteil: ausweis.objekt_gebaeudeteil,
|
||||
lueftung: ausweis.lueftungskonzept,
|
||||
kuehlung: ausweis.wird_gekuehlt,
|
||||
gebaeude_stammdaten: {
|
||||
adresse: ausweis.objekt_strasse,
|
||||
plz: ausweis.objekt_plz,
|
||||
ort: ausweis.objekt_ort,
|
||||
uid: faker.string.uuid(),
|
||||
gebaeude_bilder: [],
|
||||
latitude: null,
|
||||
longitude: null,
|
||||
},
|
||||
brennstoff_1: ausweis.energietraeger_1,
|
||||
brennstoff_2: ausweis.energietraeger_2,
|
||||
alternative_heizung: ausweis.alheizung,
|
||||
alternative_kuehlung: ausweis.alkuehlung,
|
||||
alternative_lueftung: ausweis.allueftung,
|
||||
alternative_warmwasser: ausweis.alwarmwasser,
|
||||
ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen,
|
||||
energieeffizienzklasse: "",
|
||||
aussenwand_gedaemmt: ausweis.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: ausweis.aussenwand_min_12cm_gedaemmt,
|
||||
bestellt: ausweis.bestellt,
|
||||
boxpruefung: ausweis.boxpruefung,
|
||||
brennwert_kessel: ausweis.brennwert_kessel,
|
||||
dachgeschoss_gedaemmt: ausweis.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: ausweis.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: ausweis.doppel_verglasung,
|
||||
dreifach_verglasung: ausweis.dreifach_verglasung,
|
||||
durchlauf_erhitzer: ausweis.durchlauf_erhitzer,
|
||||
einfach_verglasung: ausweis.einfach_verglasung,
|
||||
einzelofen: ausweis.einzelofen,
|
||||
erledigt: ausweis.erledigt,
|
||||
erstellungsdatum: ausweis.erstellungsdatum,
|
||||
fenster_dicht: ausweis.fenster_dicht,
|
||||
fenster_teilweise_undicht: ausweis.fenster_teilweise_undicht,
|
||||
heizungsrohre_gedaemmt: ausweis.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: ausweis.isolier_verglasung,
|
||||
keller_decke_gedaemmt: ausweis.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: ausweis.keller_wand_gedaemmt,
|
||||
niedertemperatur_kessel: ausweis.niedertemperatur_kessel,
|
||||
oberste_geschossdecke_gedaemmt: ausweis.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: ausweis.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
raum_temperatur_regler: ausweis.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: ausweis.rolllaeden_kaesten_gedaemmt,
|
||||
solarsystem_warmwasser: ausweis.solarsystem_warmwasser,
|
||||
standard_kessel: ausweis.standard_kessel,
|
||||
waermepumpe: ausweis.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: ausweis.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: ausweis.zentralheizung,
|
||||
zirkulation: ausweis.zirkulation,
|
||||
photovoltaik: ausweis.photovoltaik,
|
||||
leerstand: ausweis.leerstand,
|
||||
prueftext: ausweis["check-texts"],
|
||||
|
||||
storniert: false,
|
||||
tueren_dicht: ausweis.tueren_dicht,
|
||||
tueren_undicht: ausweis.tueren_undicht,
|
||||
zurueckgestellt: ausweis.zurueckGestellt,
|
||||
uid: faker.string.uuid(),
|
||||
events: []
|
||||
},
|
||||
verbrauch_1: parseInt(ausweis.energieverbrauch_1_heizquelle_1),
|
||||
verbrauch_2: parseInt(ausweis.energieverbrauch_2_heizquelle_1),
|
||||
verbrauch_3: parseInt(ausweis.energieverbrauch_3_heizquelle_1),
|
||||
verbrauch_4: parseInt(ausweis.energieverbrauch_1_heizquelle_2),
|
||||
verbrauch_5: parseInt(ausweis.energieverbrauch_2_heizquelle_2),
|
||||
verbrauch_6: parseInt(ausweis.energieverbrauch_3_heizquelle_2),
|
||||
einheit_1: ausweis.energietraeger_einheit_heizquelle_1,
|
||||
einheit_2: ausweis.energietraeger_einheit_heizquelle_2,
|
||||
warmwasser_enthalten: ausweis.warmwasser_enthalten,
|
||||
uid: faker.string.uuid(),
|
||||
alternative_heizung: ausweis.alheizung,
|
||||
alternative_kuehlung: ausweis.alkuehlung,
|
||||
alternative_lueftung: ausweis.allueftung,
|
||||
alternative_warmwasser: ausweis.alwarmwasser,
|
||||
anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
|
||||
anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
|
||||
ausstellgrund: ausweis.ausstellgrund,
|
||||
ausstellungsdatum: moment(ausweis.bestelldatum).toDate(),
|
||||
|
||||
erledigt: ausweis.erledigt,
|
||||
erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(),
|
||||
keller_beheizt: ausweis.keller_beheizt,
|
||||
registriernummer: ausweis.regnummer,
|
||||
startdatum: moment(`${ausweis.energieverbrauch_zeitraum_jahr}-01-${ausweis.energieverbrauch_zeitraum_monat}`).toDate(),
|
||||
|
||||
warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt,
|
||||
wird_gekuehlt: ausweis.wird_gekuehlt,
|
||||
zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle,
|
||||
}
|
||||
|
||||
return ausweisTranslated
|
||||
}
|
||||
118
src/lib/faker/verbrauchsausweis-wohnen.ts
Normal file
118
src/lib/faker/verbrauchsausweis-wohnen.ts
Normal file
@@ -0,0 +1,118 @@
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { faker } from "@faker-js/faker";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
|
||||
export function verbrauchsausweisWohnenFaker(seed: number = 42): VerbrauchsausweisWohnenClient {
|
||||
faker.seed(seed);
|
||||
|
||||
const tuerenDicht = faker.datatype.boolean();
|
||||
const verbrauch_1 = faker.number.int({ min: 5000, max: 20000 });
|
||||
const verbrauch_4 = faker.number.int({ min: 5000, max: 15000 });
|
||||
|
||||
const ausweis: VerbrauchsausweisWohnenClient = {
|
||||
rechnungen: null,
|
||||
gebaeude_aufnahme_allgemein: {
|
||||
baujahr_gebaeude: [faker.number.int({ min: 1960, max: 2014 })],
|
||||
baujahr_heizung: [faker.number.int({ min: 1960, max: 2014 })],
|
||||
baujahr_klima: [faker.number.int({ min: 1985, max: 2014 })],
|
||||
adresse: faker.location.streetAddress(),
|
||||
plz: faker.location.zipCode({ format: "#####" }),
|
||||
ort: faker.location.city(),
|
||||
nutzflaeche: faker.number.int({ min: 50, max: 300 }),
|
||||
einheiten: faker.number.int({ min: 1, max: 3 }),
|
||||
saniert: faker.datatype.boolean(),
|
||||
keller: faker.helpers.enumValue(Enums.Heizungsstatus),
|
||||
dachgeschoss: faker.helpers.enumValue(Enums.Heizungsstatus),
|
||||
flaeche: faker.number.int({ min: 50, max: 300 }),
|
||||
gebaeudetyp: "Einfamilienhaus",
|
||||
gebaeudeteil: "Gesamtgebäude",
|
||||
lueftung: "Fensterlüftung",
|
||||
kuehlung: "Vorhanden",
|
||||
gebaeude_stammdaten: {
|
||||
adresse: faker.location.streetAddress(),
|
||||
plz: faker.location.zipCode({ format: "#####" }),
|
||||
ort: faker.location.city(),
|
||||
uid: faker.string.uuid(),
|
||||
gebaeude_bilder: [],
|
||||
latitude: faker.location.latitude(),
|
||||
longitude: faker.location.longitude(),
|
||||
},
|
||||
brennstoff_1: "Erdgas H",
|
||||
alternative_heizung: faker.datatype.boolean(),
|
||||
alternative_kuehlung: faker.datatype.boolean(),
|
||||
alternative_lueftung: faker.datatype.boolean(),
|
||||
alternative_warmwasser: faker.datatype.boolean(),
|
||||
aussenwand_gedaemmt: faker.datatype.boolean(),
|
||||
aussenwand_min_12cm_gedaemmt: faker.datatype.boolean(),
|
||||
ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen,
|
||||
bestellt: faker.datatype.boolean(),
|
||||
boxpruefung: faker.datatype.boolean(),
|
||||
brennstoff_2: "Erdgas H",
|
||||
brennwert_kessel: faker.datatype.boolean(),
|
||||
dachgeschoss_gedaemmt: faker.datatype.boolean(),
|
||||
dachgeschoss_min_12cm_gedaemmt: faker.datatype.boolean(),
|
||||
doppel_verglasung: faker.datatype.boolean(),
|
||||
dreifach_verglasung: faker.datatype.boolean(),
|
||||
durchlauf_erhitzer: faker.datatype.boolean(),
|
||||
einfach_verglasung: faker.datatype.boolean(),
|
||||
einzelofen: faker.datatype.boolean(),
|
||||
energieeffizienzklasse: "",
|
||||
erledigt: faker.datatype.boolean(),
|
||||
erstellungsdatum: faker.date.past(),
|
||||
fenster_dicht: faker.datatype.boolean(),
|
||||
fenster_teilweise_undicht: faker.datatype.boolean(),
|
||||
heizungsrohre_gedaemmt: faker.datatype.boolean(),
|
||||
isolier_verglasung: faker.datatype.boolean(),
|
||||
keller_decke_gedaemmt: faker.datatype.boolean(),
|
||||
keller_wand_gedaemmt: faker.datatype.boolean(),
|
||||
leerstand: faker.number.int({ min: 0, max: 20 }),
|
||||
niedertemperatur_kessel: faker.datatype.boolean(),
|
||||
oberste_geschossdecke_gedaemmt: faker.datatype.boolean(),
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: faker.datatype.boolean(),
|
||||
photovoltaik: faker.datatype.boolean(),
|
||||
prueftext: faker.lorem.sentence(),
|
||||
raum_temperatur_regler: faker.datatype.boolean(),
|
||||
rolllaeden_kaesten_gedaemmt: faker.datatype.boolean(),
|
||||
solarsystem_warmwasser: faker.datatype.boolean(),
|
||||
standard_kessel: faker.datatype.boolean(),
|
||||
storniert: false,
|
||||
tueren_dicht: tuerenDicht,
|
||||
tueren_undicht: !tuerenDicht,
|
||||
waermepumpe: faker.datatype.boolean(),
|
||||
warmwasser_rohre_gedaemmt: faker.datatype.boolean(),
|
||||
zentralheizung: faker.datatype.boolean(),
|
||||
zirkulation: faker.datatype.boolean(),
|
||||
zurueckgestellt: faker.datatype.boolean(),
|
||||
uid: faker.string.uuid(),
|
||||
events: []
|
||||
},
|
||||
verbrauch_1: verbrauch_1,
|
||||
verbrauch_2: verbrauch_1 + faker.number.int({ min: -2000, max: 2000 }),
|
||||
verbrauch_3: verbrauch_1 + faker.number.int({ min: -2000, max: 2000 }),
|
||||
einheit_1: "kWh",
|
||||
warmwasser_enthalten: faker.datatype.boolean(),
|
||||
uid: faker.string.uuid(),
|
||||
alternative_heizung: faker.datatype.boolean(),
|
||||
alternative_kuehlung: faker.datatype.boolean(),
|
||||
alternative_lueftung: faker.datatype.boolean(),
|
||||
alternative_warmwasser: faker.datatype.boolean(),
|
||||
anteil_warmwasser_1: faker.number.int({ min: 0, max: 60 }),
|
||||
anteil_warmwasser_2: faker.number.int({ min: 0, max: 60 }),
|
||||
ausstellgrund: faker.helpers.enumValue(Enums.Ausstellgrund),
|
||||
ausstellungsdatum: faker.date.past(),
|
||||
einheit_2: "kWh",
|
||||
erledigt: faker.datatype.boolean(),
|
||||
erstellungsdatum: faker.date.past(),
|
||||
keller_beheizt: faker.datatype.boolean(),
|
||||
registriernummer: faker.string.uuid(),
|
||||
startdatum: faker.date.past({ years: 3 }),
|
||||
verbrauch_4: verbrauch_4,
|
||||
verbrauch_5: verbrauch_4 + faker.number.int({ min: -2000, max: 2000 }),
|
||||
verbrauch_6: verbrauch_4 + faker.number.int({ min: -2000, max: 2000 }),
|
||||
warmwasser_anteil_bekannt: faker.datatype.boolean(),
|
||||
wird_gekuehlt: faker.datatype.boolean(),
|
||||
zusaetzliche_heizquelle: faker.datatype.boolean(),
|
||||
}
|
||||
|
||||
return ausweis;
|
||||
}
|
||||
@@ -1,43 +1,13 @@
|
||||
import { test, describe } from "bun:test";
|
||||
import { test, describe, expect } from "bun:test";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { importVerbrauchsausweisWohnenAltesSystem, verbrauchsausweisWohnenImportTranslate } from "#lib/altes-system/import";
|
||||
|
||||
describe('Energieverbrauch', async () => {
|
||||
const ausweis: VerbrauchsausweisWohnenClient = {
|
||||
gebaeude_aufnahme_allgemein: {
|
||||
baujahr_heizung: [1989],
|
||||
baujahr_gebaeude: [1981],
|
||||
einheiten: 2,
|
||||
saniert: true,
|
||||
adresse: "Curslacker Deich 170",
|
||||
plz: "21039",
|
||||
ort: "Hamburg",
|
||||
nutzflaeche: 0,
|
||||
keller: "NICHT_VORHANDEN",
|
||||
dachgeschoss: "UNBEHEIZT",
|
||||
flaeche: 152,
|
||||
baujahr_klima: [],
|
||||
gebaeude_stammdaten: {
|
||||
adresse: "Curslacker Deich 170",
|
||||
plz: "21039",
|
||||
ort: "Hamburg"
|
||||
},
|
||||
brennstoff_1: "Erdgas H",
|
||||
gebaeudetyp: "Einfamilienhaus",
|
||||
gebaeudeteil: "Gesamtgebäude",
|
||||
lueftung: "Fensterlüftung",
|
||||
kuehlung: "NICHT_VORHANDEN"
|
||||
},
|
||||
verbrauch_1: 16000,
|
||||
verbrauch_2: 15000,
|
||||
verbrauch_3: 15500,
|
||||
einheit_1: "kWh",
|
||||
warmwasser_enthalten: false,
|
||||
}
|
||||
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
const alteAusweise = await importVerbrauchsausweisWohnenAltesSystem();
|
||||
const ausweis = verbrauchsausweisWohnenImportTranslate(alteAusweise.data[0]);
|
||||
|
||||
test("Endenergieverbrauch", async () => {
|
||||
console.log(berechnungen)
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
expect(berechnungen?.endEnergieVerbrauchGesamt).toBeCloseTo(alteAusweise.data[0].calculations.endEnergieVerbrauchGesamt, -1)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user