diff --git a/Source/backend/app/routes/api.py b/Source/backend/app/routes/api.py index dc017c5..86843b7 100755 --- a/Source/backend/app/routes/api.py +++ b/Source/backend/app/routes/api.py @@ -778,7 +778,7 @@ def verarbeite_ordner(id: int, db: Session = Depends(get_db)): ocr_gemacht = pdf_result.get("ocr_durchgefuehrt", False) # ZUGFeRD behandeln basierend auf Einstellung - zugferd_modus = getattr(quell_ordner, 'zugferd_behandlung', 'separieren') or 'separieren' + zugferd_modus = getattr(quell_ordner, 'zugferd_behandlung', 'normal') or 'normal' if ist_zugferd: if zugferd_modus == "ignorieren": @@ -1047,6 +1047,52 @@ async def grobsortierung_stream(db: Session = Depends(get_db)): ist_zugferd = pdf_result.get("ist_zugferd", False) ocr_gemacht = pdf_result.get("ocr_durchgefuehrt", False) + # ZUGFeRD-Behandlung prüfen + zugferd_behandlung = quell_ordner.get("zugferd_behandlung", "normal") + + if zugferd_behandlung == "separieren": + if not ist_zugferd: + # Nur ZUGFeRD-PDFs verarbeiten, Rest überspringen + datei_info["status"] = "kein_zugferd_ignoriert" + yield send_event({"type": "datei_fertig", **datei_info}) + await asyncio.sleep(0) + continue + # ZUGFeRD-PDF direkt in Zielordner verschieben + ziel_basis.mkdir(parents=True, exist_ok=True) + neuer_pfad = ziel_basis / datei.name + counter = 1 + while neuer_pfad.exists(): + neuer_pfad = ziel_basis / f"{datei.stem}_{counter}{datei.suffix}" + counter += 1 + datei.rename(neuer_pfad) + gesamt_stats["sortiert"] += 1 + gesamt_stats["zugferd"] += 1 + datei_info["neuer_name"] = neuer_pfad.name + datei_info["status"] = "zugferd_verschoben" + datei_info["zugferd"] = True + session.add(VerarbeiteteDatei( + original_pfad=str(datei), + original_name=datei.name, + neuer_pfad=str(neuer_pfad), + neuer_name=neuer_pfad.name, + ist_zugferd=True, + ocr_durchgefuehrt=ocr_gemacht, + status="zugferd" + )) + yield send_event({"type": "datei_fertig", **datei_info}) + await asyncio.sleep(0) + continue + + elif zugferd_behandlung == "ignorieren" and ist_zugferd: + # ZUGFeRD-PDFs überspringen + datei_info["status"] = "zugferd_ignoriert" + gesamt_stats["zugferd"] += 1 + yield send_event({"type": "datei_fertig", **datei_info}) + await asyncio.sleep(0) + continue + + # Bei "normal" oder "regel": weiter mit Regeln/direkt_verschieben + # Direkt verschieben? if quell_ordner["direkt_verschieben"]: ziel_basis.mkdir(parents=True, exist_ok=True) @@ -1072,7 +1118,7 @@ async def grobsortierung_stream(db: Session = Depends(get_db)): datei.rename(neuer_pfad) gesamt_stats["sortiert"] += 1 datei_info["neuer_name"] = neuer_pfad.name - datei_info["status"] = "verschoben" + datei_info["status"] = "direkt_verschoben" session.add(VerarbeiteteDatei( original_pfad=str(datei),