82 lines
3.0 KiB
Markdown
82 lines
3.0 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`.
|
|
|
|
## ERP Enrichment Dry Run
|
|
|
|
Der ERP Enrichment Dry Run ist unter `docs/erp-enrichment.md` dokumentiert. Er ist kein vollständiger ERP-Importer, sondern erzeugt ein internes Dry-Run-Artefakt mit separatem `erp`-Objekt und einen CSV-Report.
|