5.0 KiB
Article Data Manager
Article Data Manager ist ein eigenständiges Python-Projekt zur Pflege, Validierung und späteren Erzeugung der statischen article-data.json für den bestehenden Roll Calculator.
Status: frühe Entwicklungsphase. Phase 0 legt Struktur, Dokumentation, Beispieldaten und erste technische Leitplanken an. Der produktive Merge-Prozess und eine Weboberfläche sind noch nicht implementiert.
Problemstellung
Die Artikeldaten für RollCalc sollen langfristig aus mehreren Quellen nachvollziehbar zusammengeführt werden:
- bestehende RollCalc-Artikeldaten
- ERP-Export im CSV-Format
- manuell gepflegte Zusatz- und Korrekturdaten
- später weitere technische oder produktionsbezogene Quellen
Das Projekt trennt Quelldaten, manuelle Daten und generierte Ergebnisse, damit keine stillen Datenkorrekturen oder unklare Überschreibungen entstehen.
Abgrenzung zum Roll Calculator
Der Roll Calculator bleibt externer Konsument der erzeugten article-data.json. Article Data Manager wird nicht in das RollCalc-Repository integriert. Importlogik, Datenvalidierung, Merge-Regeln und Reports werden hier entwickelt, damit RollCalc nicht mit Datenpflege- und ERP-Komplexität belastet wird.
Datenfluss
ERP-Export
+
bestehende RollCalc-Daten
+
manuelle Zusatzdaten
|
v
Import -> Normalisierung -> Validierung -> Merge -> Export
|
+--> Reports
|
+--> article-data.json fuer RollCalc
Verzeichnisstruktur
src/article_data_manager/ Python-Paket
tests/ Tests und nicht vertrauliche Fixtures
examples/ reduzierte Beispieldaten
data/source/ lokale echte Quelldaten, nicht versioniert
data/manual/ lokale manuelle Daten, nicht versioniert
data/generated/ generierte Artefakte, nicht versioniert
data/reports/ Reports, nicht versioniert
docs/ Architektur, Datenmodell und Regeln
scripts/ spaetere Hilfsskripte
Ausgangsdaten und Analyse
Die lokalen Ausgangsdateien wurden unter incoming/ gefunden und werden nicht versioniert:
incoming/article-data_.jsonincoming/Liste Schluesseldaten Produktion.csv
Beobachtungen:
- RollCalc-JSON: 274 Artikel, Felder
nr,name,thickness,area_weight,core_type. nrist im JSON durchgehend String; mindestens eine Artikelnummer beginnt mit0.- ERP-CSV: 1786 Datenzeilen, UTF-8 mit BOM, Delimiter
,. - ERP-CSV enthaelt deutsche Dezimalzahlen wie
"6,00"und Werte mit Punkt wie1.548. SL_ITEM_NOist in allen ERP-Zeilen befuellt; mindestens eine Artikelnummer beginnt mit0.- Es wurden 247 Artikelnummern mit mehrfachen ERP-Treffern erkannt. Die fachliche Bedeutung ist offen.
Installation
Voraussetzung: Python 3.12 oder neuer.
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[dev]"
Geplante CLI-Nutzung
article-data-manager inspect-csv data/source/erp/production-key-data.csv
article-data-manager merge
article-data-manager validate data/generated/article-data.json
Die CLI-Kommandos sind in Phase 0 nur als Platzhalter vorgesehen.
Implementierte Importer
Der RollCalc-JSON-Importer ist als Python-API verfügbar:
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"))
Er validiert die bestehende RollCalc-JSON-Struktur strikt, erhält Artikelnummern als Strings und verändert die Quelldatei nicht. Details stehen in docs/importers.md.
Interne Analysewerkzeuge
Der ERP Explorer profiliert einen ERP-CSV-Export, ohne daraus Import- oder Merge-Regeln abzuleiten:
from pathlib import Path
from article_data_manager.tools.erp_explorer import write_erp_profile_report
write_erp_profile_report(
Path("data/source/erp/production-key-data.csv"),
rollcalc_path=Path("data/source/rollcalc/article-data.json"),
)
Der Textreport wird standardmäßig unter data/reports/erp_profile_report.txt erzeugt. Die Quelldaten werden nicht verändert.
ERP Enrichment Dry Run
Der ERP Enrichment Dry Run ergänzt vorhandene RollCalc-Artikel um ein separates erp-Objekt mit ausgewählten ERP-Produktionsinformationen. Die RollCalc-Datei definiert die relevante Artikelmenge; ERP-Artikel ohne RollCalc-Entsprechung werden ignoriert.
Übernommen werden nur ROP_PRODUCT_WIDTH, ROP_RATE_OF_PRODUCTION, SL_MINIMUM_PRODUCTION_QUANTITY und WPL_WORKPLACE_TEXT. QC-Daten wie area_weight werden nicht aus dem ERP übernommen. SL_PRODUCTION_SPEED wird wegen artikelabhängiger Einheit nicht verwendet.
Details stehen in docs/erp-enrichment.md.
Tests
ruff check .
pytest
Umgang mit produktiven ERP-Daten
Produktive ERP-Exporte, RollCalc-Quelldateien, manuelle Arbeitsdateien, Reports und generierte Dateien duerfen nicht ungeprueft in Git eingecheckt werden. Versioniert werden nur anonymisierte oder reduzierte Beispiele und Fixtures.