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)
|
ocr_gemacht = pdf_result.get("ocr_durchgefuehrt", False)
|
||||||
|
|
||||||
# ZUGFeRD behandeln basierend auf Einstellung
|
# 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 ist_zugferd:
|
||||||
if zugferd_modus == "ignorieren":
|
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)
|
ist_zugferd = pdf_result.get("ist_zugferd", False)
|
||||||
ocr_gemacht = pdf_result.get("ocr_durchgefuehrt", 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?
|
# Direkt verschieben?
|
||||||
if quell_ordner["direkt_verschieben"]:
|
if quell_ordner["direkt_verschieben"]:
|
||||||
ziel_basis.mkdir(parents=True, exist_ok=True)
|
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)
|
datei.rename(neuer_pfad)
|
||||||
gesamt_stats["sortiert"] += 1
|
gesamt_stats["sortiert"] += 1
|
||||||
datei_info["neuer_name"] = neuer_pfad.name
|
datei_info["neuer_name"] = neuer_pfad.name
|
||||||
datei_info["status"] = "verschoben"
|
datei_info["status"] = "direkt_verschoben"
|
||||||
|
|
||||||
session.add(VerarbeiteteDatei(
|
session.add(VerarbeiteteDatei(
|
||||||
original_pfad=str(datei),
|
original_pfad=str(datei),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue