Files
article-data-manager/docs/importers.md
T
2026-07-29 14:03:06 +02:00

78 lines
2.7 KiB
Markdown

# 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`.