Fix: ZUGFeRD-Behandlung im Streaming-Endpoint + Default-Korrektur
- Streaming-Endpoint /grobsortierung/stream hatte keine ZUGFeRD-Prüfung, dadurch wurden alle PDFs (inkl. Lieferscheine) bei direkt_verschieben in den ZUGFeRD-Ordner verschoben statt nur ZUGFeRD-konforme - ZUGFeRD-Logik sauber im if ist_pdf Block mit eigenem Verschiebe-Block, korrektem Status "zugferd" und Statistik-Zählung - Inkonsistenten Default 'separieren' auf 'normal' in verarbeite_ordner korrigiert (konsistent mit Scheduler und Streaming-Endpoint) - Status "verschoben" auf "direkt_verschoben" im Streaming-Endpoint angepasst (konsistent mit DB-Status) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
bb84f200d0
commit
8d0e73b62c
1 changed files with 48 additions and 2 deletions
|
|
@ -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),
|
||||
|
|
|
|||
Loading…
Reference in a new issue