From 1cbb4e3345ed868390766c9282b8f2bedbf437ce Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 12 May 2025 18:51:59 +0000 Subject: [PATCH] bugfix --- brancheneinstufung.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index e49ae95c..ca816fef 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -7996,29 +7996,35 @@ class DataProcessor: results["plaus_ma_flag"] = "FEHLER_FORMAT" results["begruendungen"].append(f"Finale MA-Zahl ('{final_ma_str}') konnte nicht als gültige Zahl interpretiert werden.") - # Nur weiter prüfen, wenn Werte numerisch sind + # Nur weiter prüfen, wenn Werte numerisch sind (nicht NaN) if not pd.isna(umsatz_num): - if umsatz_num == 0: # Gilt für Fälle, wo z.B. "0 Tsd" zu 0.0 wird + if umsatz_num == 0 and final_umsatz_str.lower().strip() not in ['k.a.', '', 'n/a', '-', '0', '0.0', '0,00', '0.000']: # Gilt für Fälle, wo z.B. "0 Tsd" zu 0.0 wird results["plaus_umsatz_flag"] = "WARNUNG_NULL_WERT" results["begruendungen"].append(f"Finaler Umsatz ist numerisch 0 (ursprünglicher Wert: '{final_umsatz_str}').") - elif umsatz_num < getattr(Config, 'PLAUSI_UMSATZ_MIN_WARNUNG', 50000): - if umsatz_num > getattr(Config, 'PLAUSI_UMSATZ_MAX_WARNUNG', 200000000000): + elif umsatz_num < getattr(Config, 'PLAUSI_UMSATZ_MIN_WARNUNG', 50000) and umsatz_num != 0: # 0 wurde oben behandelt + results["plaus_umsatz_flag"] = "WARNUNG_NIEDRIG" + results["begruendungen"].append(f"Finaler Umsatz ({umsatz_num:,.0f} €) sehr niedrig (< {getattr(Config, 'PLAUSI_UMSATZ_MIN_WARNUNG', 50000):,.0f} €).") + elif umsatz_num > getattr(Config, 'PLAUSI_UMSATZ_MAX_WARNUNG', 200000000000): # Jetzt als elif oder separates if results["plaus_umsatz_flag"] = "WARNUNG_HOCH" results["begruendungen"].append(f"Finaler Umsatz ({umsatz_num:,.0f} €) sehr hoch (> {getattr(Config, 'PLAUSI_UMSATZ_MAX_WARNUNG', 200000000000):,.0f} €).") + # Wenn keine der obigen Bedingungen zutrifft und der Flag noch "OK" ist, bleibt er "OK". if not pd.isna(ma_num): - if ma_num < getattr(Config, 'PLAUSI_MA_MIN_WARNUNG_ABS', 1): + if ma_num == 0 and final_ma_str.lower().strip() not in ['k.a.', '', 'n/a', '-', '0', '0.0', '0,00', '0.000']: + results["plaus_ma_flag"] = "WARNUNG_NULL_WERT" + results["begruendungen"].append(f"Finale MA-Zahl ist numerisch 0 (ursprünglicher Wert: '{final_ma_str}').") + elif ma_num < getattr(Config, 'PLAUSI_MA_MIN_WARNUNG_ABS', 1) and ma_num != 0: # 0 wurde oben behandelt results["plaus_ma_flag"] = "WARNUNG_NIEDRIG" results["begruendungen"].append(f"Finale MA-Zahl ({ma_num:.0f}) < {getattr(Config, 'PLAUSI_MA_MIN_WARNUNG_ABS', 1)}.") - if ma_num > getattr(Config, 'PLAUSI_MA_MAX_WARNUNG', 1000000): + elif ma_num > getattr(Config, 'PLAUSI_MA_MAX_WARNUNG', 1000000): results["plaus_ma_flag"] = "WARNUNG_HOCH" results["begruendungen"].append(f"Finale MA-Zahl ({ma_num:.0f}) sehr hoch (> {getattr(Config, 'PLAUSI_MA_MAX_WARNUNG', 1000000)}).") # Spezifischer Check: Wenig MA bei signifikantem Umsatz if not pd.isna(umsatz_num) and umsatz_num > getattr(Config, 'PLAUSI_UMSATZ_MIN_SCHWELLE_FUER_MA_CHECK', 1000000) and \ - ma_num < getattr(Config, 'PLAUSI_MA_MIN_WARNUNG_BEI_UMSATZ', 3): + ma_num < getattr(Config, 'PLAUSI_MA_MIN_WARNUNG_BEI_UMSATZ', 3) and ma_num !=0 : # MA !=0 hier auch wichtig # Flag könnte auch 'WARNUNG_NIEDRIG' sein, aber Begründung ist spezifischer - if results["plaus_ma_flag"] == "OK": results["plaus_ma_flag"] = "WARNUNG_RATIO_IMPL" # Implizite Ratio Warnung + if results["plaus_ma_flag"] == "OK": results["plaus_ma_flag"] = "WARNUNG_RATIO_IMPL" results["begruendungen"].append(f"Wenige MA ({ma_num:.0f}) bei signifikantem Umsatz ({umsatz_num:,.0f} €).") # 3. Umsatz/MA Ratio