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