# Importer ## RollCalc-JSON-Importer Der RollCalc-JSON-Importer liest die bestehende RollCalc-Datei `article-data.json` ein und überführt gültige Datensätze in typisierte `RollCalcArticle`-Objekte. Öffentliche API: ```python from pathlib import Path from article_data_manager.importers.rollcalc_json import load_rollcalc_articles articles = load_rollcalc_articles(Path("data/source/rollcalc/article-data.json")) ``` ## Eingabeformat Erwartet wird eine UTF-8-Datei mit einem JSON-Array. Jeder Array-Eintrag muss ein JSON-Objekt sein. Pflichtfelder: - `nr` - `name` - `thickness` - `area_weight` - `core_type` Datentypen: - `nr`: String, nicht leer, ohne führende oder nachgestellte Leerzeichen - `name`: String - `thickness`: JSON-Zahl, kein Boolean - `area_weight`: JSON-Zahl, kein Boolean - `core_type`: JSON-Zahl, kein Boolean Integer-Zahlen aus JSON werden intern als Python-`float` gespeichert, sofern sie in numerischen Feldern stehen. Strings wie `"6.722"`, `null` und Booleans werden nicht als Zahlen akzeptiert. ## Unbekannte Felder Zusätzliche unbekannte Felder werden akzeptiert und ignoriert. Sie werden nicht in das aktuelle interne Modell übernommen. Dadurch bleibt der Importer kompatibel mit möglichen RollCalc-Erweiterungen, validiert die bekannten Felder aber weiterhin strikt. ## Dubletten Doppelte Artikelnummern innerhalb einer Datei sind ein Validierungsfehler. Maßgeblich ist die exakte Stringdarstellung, daher sind `"00001"` und `"1"` unterschiedliche Artikelnummern. ## Fehlerverhalten Der Importer verwendet eigene Exceptions: - `RollCalcImportError` - `RollCalcFileError` - `RollCalcJsonSyntaxError` - `RollCalcValidationError` Fehlermeldungen enthalten Datei, Datensatzindex und Feldname, soweit anwendbar. Vollständige Datensätze werden nicht in Fehlermeldungen ausgegeben. ## Quelldatei Der Importer liest die Quelldatei nur. Er schreibt, verändert oder repariert die Datei nicht und erzeugt keine Ausgabe auf stdout oder stderr. ## ERP Explorer Der ERP Explorer unter `article_data_manager.tools.erp_explorer` ist ein internes Analysewerkzeug und kein ERP-Importer. Er liest einen ERP-CSV-Export, profiliert alle Spalten, zählt doppelte Artikelnummern in `SL_ITEM_NO` und kann optional RollCalc-Artikelnummern gegen den ERP-Export abgleichen. Öffentliche API: ```python from pathlib import Path from article_data_manager.tools.erp_explorer import profile_erp_csv, write_erp_profile_report profile = profile_erp_csv(Path("data/source/erp/production-key-data.csv")) write_erp_profile_report(Path("data/source/erp/production-key-data.csv")) ``` Der Report wird standardmäßig als `data/reports/erp_profile_report.txt` geschrieben. Der Explorer verändert weder ERP-CSV noch RollCalc-JSON und erzeugt keine `article-data.json`.