From 07760aa26aa52ac146babf5f01b928f8a54e4d18 Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Tue, 8 Apr 2025 15:13:17 -0400 Subject: [PATCH] Bugfix Process not defined --- .github/workflows/dev-pipeline.yml | 4 +- backup-database.bash | 13 +++++-- .../VerbrauchsausweisGewerbe_2016.ts | 32 +--------------- .../VerbrauchsausweisGewerbe_2016_Client.ts | 18 +++++++++ .../VerbrauchsausweisGewerbe_2016_Server.ts | 18 +++++++++ .../VerbrauchsausweisWohnen_2016.ts | 37 +------------------ .../VerbrauchsausweisWohnen_2016_Client.ts | 22 +++++++++++ .../VerbrauchsausweisWohnen_2016_Server.ts | 22 +++++++++++ src/lib/Berechnungen/endEnergieVerbrauch.ts | 13 ------- src/lib/Klimafaktoren.ts | 2 - .../pdfDatenblattVerbrauchsausweisGewerbe.ts | 4 +- .../pdfDatenblattVerbrauchsausweisWohnen.ts | 3 +- src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts | 4 +- src/lib/pdf/pdfVerbrauchsausweisWohnen.ts | 3 +- 14 files changed, 103 insertions(+), 92 deletions(-) create mode 100644 src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.ts create mode 100644 src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Server.ts create mode 100644 src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.ts create mode 100644 src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Server.ts delete mode 100644 src/lib/Berechnungen/endEnergieVerbrauch.ts diff --git a/.github/workflows/dev-pipeline.yml b/.github/workflows/dev-pipeline.yml index a7d0b8ea..c0de330f 100644 --- a/.github/workflows/dev-pipeline.yml +++ b/.github/workflows/dev-pipeline.yml @@ -26,8 +26,8 @@ jobs: export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH echo $PATH cd ~/online-energieausweis - git reset --hard origin/main + git reset --hard origin/dev git clean -f -d - git pull origin main + git pull origin dev git status make prod \ No newline at end of file diff --git a/backup-database.bash b/backup-database.bash index 420566aa..dca6ef52 100644 --- a/backup-database.bash +++ b/backup-database.bash @@ -2,20 +2,27 @@ FILE_NAME=data-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br FILE_NAME_COMPLETE=full-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br -# Wir exportieren die Datenbank und komprimieren sie. -docker exec -t online-energieausweis-database-1 pg_dump --data-only -U main main | brotli --best > $FILE_NAME -docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME_COMPLETE # Das wird benötigt für AWS Ionos Kompatibilität. export AWS_REQUEST_CHECKSUM_CALCULATION=when_required export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required +# Wir exportieren die Datenbank und komprimieren sie. # IMPORTANT: Dieser Befehl benötigt das `ionos` Profil, sonst wird er nicht funktionieren. # Das Profil kann mit `aws configure --profile ionos` erstellt werden. # Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management +docker exec -t online-energieausweis-database-1 pg_dump --data-only -U main main | brotli --best > $FILE_NAME + aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD + +echo "Uploaded $FILE_NAME" + +docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME_COMPLETE + aws s3 cp $FILE_NAME_COMPLETE s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD +echo "Uploaded $FILE_NAME_COMPLETE" + # Wir entfernen das Backup rm $FILE_NAME rm $FILE_NAME_COMPLETE \ No newline at end of file diff --git a/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts index 83d8373f..4df06efd 100644 --- a/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts +++ b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts @@ -60,42 +60,12 @@ function vergleichsWertNichtWohngebaeude(ausweis: VerbrauchsausweisGewerbeClient * @param Ausweis ausweis Ein Ausweis dessen Energiebedarf berechnet werden soll * @return VerbrauchsausweisGewerbeCalculationResult */ -export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient) { +export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, klimafaktoren: { month: number, year: number, klimafaktor: number }[]) { if (!aufnahme || !objekt || !ausweis) { return null; } const nutzflaeche = aufnahme.nutzflaeche || 0; - - let startdatum = moment(ausweis.startdatum); - - let klimafaktoren: Awaited> = [{ - month: startdatum.month(), - year: startdatum.year(), - klimafaktor: 1 - }, - { - month: startdatum.month(), - year: startdatum.year() + 1, - klimafaktor: 1 - }, - { - month: startdatum.month(), - year: startdatum.year() + 2, - klimafaktor: 1 - }]; - - try { - const response = await getKlimafaktorenServer(objekt.plz as string, moment(ausweis.startdatum).toDate(), moment(ausweis.startdatum).add(2, "years").toDate()) - - if (response) { - klimafaktoren = response - } - } catch (e) { - // TODO: Entweder setzen wir hier mit falschen Klimafaktoren fort, oder wir geben null zurück. - // Im Moment setzen wir einfach fort, aber das ist nicht unbedingt die beste Lösung. - // return null - } // Endenergieverbrauch // Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden. diff --git a/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.ts b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.ts new file mode 100644 index 00000000..a4bbf60c --- /dev/null +++ b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.ts @@ -0,0 +1,18 @@ +import moment from "moment"; +import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "./VerbrauchsausweisGewerbe_2016.js"; +import { Aufnahme, Objekt, VerbrauchsausweisGewerbe } from "#lib/server/prisma.js"; +import { getKlimafaktoren } from "#lib/Klimafaktoren.js"; + +export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server( + ausweis: VerbrauchsausweisGewerbe, + aufnahme: Aufnahme, + objekt: Objekt, +) { + const klimafaktoren = await getKlimafaktoren( + objekt.plz as string, + moment(ausweis.startdatum).toDate(), + moment(ausweis.startdatum).add(2, "years").toDate() + ) || []; + + return await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt, klimafaktoren) +} diff --git a/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Server.ts b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Server.ts new file mode 100644 index 00000000..444c5885 --- /dev/null +++ b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Server.ts @@ -0,0 +1,18 @@ +import moment from "moment"; +import { getKlimafaktorenServer } from "#lib/server/klimafaktoren.js"; +import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "./VerbrauchsausweisGewerbe_2016.js"; +import { Aufnahme, Objekt, VerbrauchsausweisGewerbe } from "#lib/server/prisma.js"; + +export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server( + ausweis: VerbrauchsausweisGewerbe, + aufnahme: Aufnahme, + objekt: Objekt, +) { + const klimafaktoren = await getKlimafaktorenServer( + objekt.plz as string, + moment(ausweis.startdatum).toDate(), + moment(ausweis.startdatum).add(2, "years").toDate() + ) || []; + + return await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt, klimafaktoren) +} diff --git a/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.ts b/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.ts index 80c4904a..cea67662 100644 --- a/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.ts +++ b/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.ts @@ -1,9 +1,6 @@ import { AufnahmeClient, ObjektClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js"; -import { getKlimafaktoren } from "#lib/Klimafaktoren.js"; import { getHeizwertfaktor } from "#lib/server/Heizwertfaktor.js"; import { Enums } from "#lib/client/prisma.js"; -import moment from "moment"; -import { getKlimafaktorenServer } from "#lib/server/klimafaktoren.js"; export function energetischeNutzflaecheVerbrauchsausweisWohnen_2016( ausweis: VerbrauchsausweisWohnenClient, @@ -25,43 +22,13 @@ export function energetischeNutzflaecheVerbrauchsausweisWohnen_2016( export async function endEnergieVerbrauchVerbrauchsausweis_2016( ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, - objekt: ObjektClient + objekt: ObjektClient, + klimafaktoren: {month: number, year: number, klimafaktor: number}[] ) { if (!aufnahme || !objekt || !ausweis) { return null; } - let startdatum = moment(ausweis.startdatum); - - let klimafaktoren: Awaited> = [{ - month: startdatum.month(), - year: startdatum.year(), - klimafaktor: 1 - }, - { - month: startdatum.month(), - year: startdatum.year() + 1, - klimafaktor: 1 - }, - { - month: startdatum.month(), - year: startdatum.year() + 2, - klimafaktor: 1 - }]; - - try { - const response = await getKlimafaktorenServer(objekt.plz as string, moment(ausweis.startdatum).toDate(), moment(ausweis.startdatum).add(2, "years").toDate()) - - if (response) { - klimafaktoren = response - } - } catch (e) { - // TODO: Entweder setzen wir hier mit falschen Klimafaktoren fort, oder wir geben null zurück. - // Im Moment setzen wir einfach fort, aber das ist nicht unbedingt die beste Lösung. - // return null - } - - // Endenergieverbrauch // Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden. let brennstoff_1 = getHeizwertfaktor( diff --git a/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.ts b/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.ts new file mode 100644 index 00000000..0d3882e7 --- /dev/null +++ b/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.ts @@ -0,0 +1,22 @@ +import { + VerbrauchsausweisWohnenClient, + AufnahmeClient, + ObjektClient, +} from "#components/Ausweis/types.js"; +import { getKlimafaktoren } from "#lib/Klimafaktoren.js"; +import moment from "moment"; +import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "./VerbrauchsausweisWohnen_2016.js"; + +export async function endEnergieVerbrauchVerbrauchsausweis_2016_Client( + ausweis: VerbrauchsausweisWohnenClient, + aufnahme: AufnahmeClient, + objekt: ObjektClient, +) { + const klimafaktoren = await getKlimafaktoren( + objekt.plz as string, + moment(ausweis.startdatum).toDate(), + moment(ausweis.startdatum).add(2, "years").toDate() + ) || []; + + return await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt, klimafaktoren) +} diff --git a/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Server.ts b/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Server.ts new file mode 100644 index 00000000..1ebaf566 --- /dev/null +++ b/src/lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Server.ts @@ -0,0 +1,22 @@ +import { + VerbrauchsausweisWohnenClient, + AufnahmeClient, + ObjektClient, +} from "#components/Ausweis/types.js"; +import moment from "moment"; +import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "./VerbrauchsausweisWohnen_2016.js"; +import { getKlimafaktorenServer } from "#lib/server/klimafaktoren.js"; + +export async function endEnergieVerbrauchVerbrauchsausweis_2016_Server( + ausweis: VerbrauchsausweisWohnenClient, + aufnahme: AufnahmeClient, + objekt: ObjektClient, +) { + const klimafaktoren = await getKlimafaktorenServer( + objekt.plz as string, + moment(ausweis.startdatum).toDate(), + moment(ausweis.startdatum).add(2, "years").toDate() + ) || []; + + return await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt, klimafaktoren) +} diff --git a/src/lib/Berechnungen/endEnergieVerbrauch.ts b/src/lib/Berechnungen/endEnergieVerbrauch.ts deleted file mode 100644 index 4edb4de2..00000000 --- a/src/lib/Berechnungen/endEnergieVerbrauch.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { VerbrauchsausweisWohnen } from "#lib/client/prisma"; -import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "./VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js"; -import { AufnahmeClient, ObjektClient } from "#components/Ausweis/types.js"; - -export async function endEnergieVerbrauch(ausweis: VerbrauchsausweisWohnen, aufnahme: AufnahmeClient, objekt: ObjektClient): Promise { - const result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt); - - if (!result) { - return 0; - } - - return result.endEnergieVerbrauchGesamt; -} \ No newline at end of file diff --git a/src/lib/Klimafaktoren.ts b/src/lib/Klimafaktoren.ts index 5326b948..9dbed741 100644 --- a/src/lib/Klimafaktoren.ts +++ b/src/lib/Klimafaktoren.ts @@ -18,8 +18,6 @@ export const getKlimafaktoren = memoize(async (date: Date, plz: string) => { }); return response; } catch (e) { - console.log(e); - return null; } }); diff --git a/src/lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.ts b/src/lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.ts index 6a9d4c56..e8fb7a80 100644 --- a/src/lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.ts +++ b/src/lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.ts @@ -4,8 +4,8 @@ import { PDFDocument, StandardFonts } from "pdf-lib"; import { xml2pdf } from "./elements/xml2pdf.js"; import moment from "moment"; import { Enums, Heizungsstatus } from "#lib/server/prisma.js"; -import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js"; import { copyPage } from "./utils/copyPage.js"; +import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.js"; /* -------------------------------- Pdf Tools ------------------------------- */ @@ -18,7 +18,7 @@ export async function pdfDatenblattVerbrauchsausweisGewerbe(ausweis: Verbrauchsa // const template = VerbrauchsausweisWohnen2016Template as Template; - const berechnungen = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt); + const berechnungen = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server(ausweis, aufnahme, objekt); const height = pages[0].getHeight() const width = pages[0].getWidth() diff --git a/src/lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.ts b/src/lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.ts index 54f69d4b..ea3d49ff 100644 --- a/src/lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.ts +++ b/src/lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.ts @@ -6,6 +6,7 @@ import { xml2pdf } from "./elements/xml2pdf.js"; import moment from "moment"; import { Enums, Heizungsstatus } from "#lib/server/prisma.js"; import { copyPage } from "./utils/copyPage.js"; +import { endEnergieVerbrauchVerbrauchsausweis_2016_Server } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Server.js"; /* -------------------------------- Pdf Tools ------------------------------- */ @@ -19,7 +20,7 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau // const template = VerbrauchsausweisWohnen2016Template as Template; - const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt); + const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016_Server(ausweis, aufnahme, objekt); const height = pages[0].getHeight() const width = pages[0].getWidth() diff --git a/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts b/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts index 85ee9bae..2b219e3c 100644 --- a/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts +++ b/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts @@ -1,5 +1,4 @@ import { AufnahmeClient, BenutzerClient, BildClient, ObjektClient, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types.js"; -import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js"; import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen.js"; import { Enums } from "#lib/server/prisma.js"; import * as fs from "fs" @@ -9,6 +8,7 @@ import { addCheckMark } from "./utils/checkbox.js"; import { addText } from "./utils/text.js"; import { addAnsichtsausweisLabel, addDatumGEG } from "./utils/helpers.js"; import { getS3File } from "#lib/s3.js"; +import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.js"; export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau = true) { @@ -18,7 +18,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe // const template = VerbrauchsausweisWohnen2016Template as Template; - const berechnungen = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt); + const berechnungen = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server(ausweis, aufnahme, objekt); const empfehlungen = getEmpfehlungen(ausweis, aufnahme, objekt) diff --git a/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts b/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts index ecce3379..83c34e51 100644 --- a/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts +++ b/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts @@ -9,6 +9,7 @@ import { addCheckMark } from "./utils/checkbox.js"; import { addText } from "./utils/text.js"; import { addAnsichtsausweisLabel, addDatumGEG } from "./utils/helpers.js"; import { getS3File } from "#lib/s3.js"; +import { endEnergieVerbrauchVerbrauchsausweis_2016_Server } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Server.js"; /* -------------------------------- Pdf Tools ------------------------------- */ @@ -19,7 +20,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne // const template = VerbrauchsausweisWohnen2016Template as Template; - const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt); + const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016_Server(ausweis, aufnahme, objekt); console.log(berechnungen?.klimafaktoren); const empfehlungen = getEmpfehlungen(ausweis, aufnahme, objekt)