feat: Bereinigung (PURGE) vor Sivas-Export und zusammengefasste CSV je Dispogruppe

EXPORTSIVAS bereinigt die Zeichnung vorab per -PURGE (abschaltbar ueber
*csv-bereinigen-vor-export*). export_sivas.py schreibt zusaetzlich je
Dispogruppe eine Datei <stamm>_zusammengefasst_dispo<N>.csv.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-27 13:29:43 +01:00
parent f2a5f6ca75
commit e2237fde10
4 changed files with 41 additions and 0 deletions
+20
View File
@@ -58,6 +58,7 @@ items_zusammenfassen. output.csv selbst bleibt unveraendert.
import json
import sys
import os
import re
from export_blockpatterns import (load_patterns, load_export_cfg, cfg_path_from_env,
matches_any, csv_quote, safe_float, safe_int)
@@ -1184,6 +1185,13 @@ def zusammengefasster_dateiname(output_csv):
return f"{stamm}_zusammengefasst{endung}"
def dispogruppen_dateiname(output_csv, dispo):
"""z.B. "500651_sivas.csv", "10" -> "500651_sivas_zusammengefasst_dispo10.csv"."""
stamm, endung = os.path.splitext(output_csv)
sauber = re.sub(r"[^0-9A-Za-z_-]", "_", str(dispo)) or "leer"
return f"{stamm}_zusammengefasst_dispo{sauber}{endung}"
def items_zusammenfassen(items):
"""Fasst Zeilen zusammen, die sich nur in Nr, Anzahl und IDs
unterscheiden: Anzahl wird addiert, die IDs werden (ohne Dubletten, in
@@ -1261,6 +1269,18 @@ def main():
print(f"[export_sivas] Zusammengefasste CSV geschrieben: {output_csv_zus} "
f"({len(items_zus)} Zeilen)")
# Je Dispogruppe eine eigene zusammengefasste Datei, z.B.
# "<stamm>_zusammengefasst_dispo10.csv" (Nr je Datei neu gezaehlt).
for dispo in sorted({str(i["dispgruppe"]) for i in items_zus}):
teil = [i for i in items_zus if str(i["dispgruppe"]) == dispo]
teil = [dict(i, nr=n) for n, i in enumerate(teil, 1)]
pfad = dispogruppen_dateiname(output_csv, dispo)
with open(pfad, "w", encoding="utf-8") as f:
f.write(header + "\n")
for item in teil:
f.write(format_csv_line(item) + "\n")
print(f"[export_sivas] Dispogruppe {dispo}: {pfad} ({len(teil)} Zeilen)")
# Zweite, lesbare Kopie fuer die manuelle Pruefung (Merkmalnummer +
# Bezeichnung aus cfg/Merkmalsstamm_in_Sivas.xlsx) - wird von Sivas
# selbst NICHT eingelesen, nur output_csv ist der eigentliche Import.