Ticket Plausibilitätsprüfung

This commit is contained in:
Carl Mahnke
2024-03-18 11:45:05 +01:00
parent df8fa9cce1
commit cc5032e0e1
13 changed files with 323 additions and 109 deletions

View File

@@ -1,17 +1,22 @@
import { GebaeudeAufnahmeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
export function auditBedarfsausweisBenoetigt(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeAufnahmeClient): boolean {
if (ausweis.ausstellgrund == "Neubau" || ausweis.ausstellgrund == "Modernisierung") {
return true;
}
if (gebaeude.saniert == true && ( gebaeude.dachgeschoss_gedaemmt == false || gebaeude.oberste_geschossdecke_gedaemmt == false)){
return true;
}
if (gebaeude.baujahr_gebaeude && gebaeude.baujahr_gebaeude.length > 0) {
return (
(gebaeude.baujahr_gebaeude[0] < 1978 &&
(gebaeude.einheiten || 0) <= 4 &&
gebaeude.saniert == false &&
(gebaeude.saniert == false ) &&
(ausweis.ausstellgrund == "Vermietung" ||
ausweis.ausstellgrund == "Sonstiges" ||
ausweis.ausstellgrund == "Verkauf")) ||
ausweis.ausstellgrund == "Neubau" ||
ausweis.ausstellgrund == "Modernisierung"
ausweis.ausstellgrund == "Verkauf"))
);
}

View File

@@ -0,0 +1,27 @@
import { GebaeudeClient, VerbrauchsausweisWohnenClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types";
import { AuditType, hidden } from "./hidden";
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
import { getKlimafaktoren } from "#lib/Klimafaktoren";
export async function auditEndEnergie(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeClient, gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient): Promise<boolean> {
if (hidden.has(AuditType.END_ENERGIE)) {
return false;
}
//sobald Fläche, Klimafaktoren und alle Verbrauchsjahre eingegeben wurden.
if (gebaeude_aufnahme_allgemein){
if (gebaeude_aufnahme_allgemein.flaeche && ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
try {
const response = await getKlimafaktoren(ausweis.startdatum, gebaeude.plz);
// Alle Klimfaktoren konnten abgefragt werden.
const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016({...ausweis, gebaeude_aufnahme_allgemein: {...gebaeude_aufnahme_allgemein, gebaeude_stammdaten: gebaeude}});
if (eevva){
if (eevva?.endEnergieVerbrauchGesamt <= 45 || eevva?.endEnergieVerbrauchGesamt >= 500) {
return true;
}
}
} catch (e) {
}
}
}
return false;
}

View File

@@ -1,11 +1,14 @@
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
import { AuditType, hidden } from "../audits/hidden";
export function auditHeizungJuengerDreiJahre(gebaeude: GebaeudeAufnahmeClient ): boolean {
export function auditHeizungJuengerDreiJahre(gebaeude: GebaeudeAufnahmeClient): boolean {
if (gebaeude.baujahr_heizung && gebaeude.baujahr_heizung.length > 0) {
return (
(gebaeude.baujahr_heizung.sort()[0] >= (new Date().getFullYear())-3)
);
if (!hidden.has(AuditType.HEIZUNG_JUENGER_DREI_JAHRE)) {
return (
(gebaeude.baujahr_heizung.sort()[0] >= (new Date().getFullYear()) - 3)
);
}
}
return false

View File

@@ -1,8 +1,5 @@
import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { AuditType, hidden } from "./hidden";
import { prisma } from "@ibcornelsen/database/server";
import { client } from "src/trpc";
import moment from "moment";
import { getKlimafaktoren } from "#lib/Klimafaktoren";
export async function auditKlimaFaktoren(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeClient): Promise<boolean> {

View File

@@ -1,7 +1,8 @@
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
import { AuditType, hidden } from "./hidden";
export function auditLeerStand(gebaeude: GebaeudeAufnahmeClient ): boolean {
if (gebaeude.leerstand ) {
export function auditLeerStand(gebaeude: GebaeudeAufnahmeClient): boolean {
if (gebaeude.leerstand && !hidden.has(AuditType.LEER_STAND)) {
return (
(gebaeude.leerstand > 30)
);

View File

@@ -0,0 +1,22 @@
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
import { client } from "src/trpc";
import { memoize } from "src/lib/Memoization";
import { AuditType, hidden } from "../audits/hidden";
export const auditPlzNichtErkannt = memoize(async (gebaeude: GebaeudeAufnahmeClient) => {
if (gebaeude.plz) {
if (gebaeude.plz.length == 5) {
try {
const result = await client.v1.postleitzahlen.query({ plz: gebaeude.plz, limit: 1 });
if (result.length > 0) {
return false;
}
} catch (e) {
if (!hidden.has(AuditType.PLZ_NICHT_ERKANNT)){
return true;
}
}
}
}
return false
});

View File

@@ -10,19 +10,19 @@ export function auditVerbrauchAbweichung(ausweis: VerbrauchsausweisWohnenClient,
return [];
}
if (getAbweichung(ausweis.verbrauch_1 || 0, ausweis.verbrauch_2 || 0) > 0.25) {
if (getAbweichung(ausweis.verbrauch_1 || 0, ausweis.verbrauch_2 || 0) > 0.30) {
return [1, 2];
}
if (getAbweichung(ausweis.verbrauch_2 || 0, ausweis.verbrauch_3 || 0) > 0.25) {
if (getAbweichung(ausweis.verbrauch_2 || 0, ausweis.verbrauch_3 || 0) > 0.30) {
return [2, 3];
}
if (getAbweichung(ausweis.verbrauch_4 || 0, ausweis.verbrauch_5 || 0) > 0.25) {
if (getAbweichung(ausweis.verbrauch_4 || 0, ausweis.verbrauch_5 || 0) > 0.30) {
return [4, 5];
}
if (getAbweichung(ausweis.verbrauch_5 || 0, ausweis.verbrauch_6 || 0) > 0.25) {
if (getAbweichung(ausweis.verbrauch_5 || 0, ausweis.verbrauch_6 || 0) > 0.30) {
return [5, 6];
}

View File

@@ -1,11 +1,14 @@
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { AuditType, hidden } from "./hidden";
export function auditWarmWasser(ausweis: VerbrauchsausweisWohnenClient): boolean {
if (ausweis.warmwasser_anteil_bekannt && ausweis.warmwasser_enthalten && ausweis.anteil_warmwasser_1) {
return (
ausweis.anteil_warmwasser_1 <= 6 || ausweis.anteil_warmwasser_1 >= 35
);
if (!hidden.has(AuditType.WARM_WASSER)){
return (
ausweis.anteil_warmwasser_1 <= 6 || ausweis.anteil_warmwasser_1 >= 35
);
}
}
return false

View File

@@ -1,11 +1,13 @@
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
import { AuditType, hidden } from "./hidden";
export function auditWohnFlaeche(gebaeude: GebaeudeAufnahmeClient ): boolean {
if (gebaeude.einheiten && gebaeude.flaeche ) {
return (
(gebaeude.flaeche < gebaeude.einheiten * 30)
);
if (!hidden.has(AuditType.WOHN_FLAECHE)){
return (
(gebaeude.flaeche < gebaeude.einheiten * 30)
);
}
}
return false

View File

@@ -0,0 +1,10 @@
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
import { AuditType, hidden } from "../audits/hidden";
export function auditWohnflaecheGroesserGesamtflaeche(gebaeude: GebaeudeAufnahmeClient ): boolean {
if (gebaeude.flaeche && gebaeude.nutzflaeche){
return (gebaeude.flaeche > gebaeude.nutzflaeche && !hidden.has(AuditType.WOHNFLAECHE_GROESSER_GESAMTFLAECHE));
}
return false;
}

View File

@@ -8,5 +8,8 @@ export enum AuditType {
KLIMA_FAKTOREN,
WOHN_FLAECHE,
WARM_WASSER,
LEER_STAND
LEER_STAND,
PLZ_NICHT_ERKANNT,
END_ENERGIE,
WOHNFLAECHE_GROESSER_GESAMTFLAECHE
}