# 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 ```text ERP-Export + bestehende RollCalc-Daten + manuelle Zusatzdaten | v Import -> Normalisierung -> Validierung -> Merge -> Export | +--> Reports | +--> article-data.json fuer RollCalc ``` ## Verzeichnisstruktur ```text 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_.json` - `incoming/Liste Schluesseldaten Produktion.csv` Beobachtungen: - RollCalc-JSON: 274 Artikel, Felder `nr`, `name`, `thickness`, `area_weight`, `core_type`. - `nr` ist im JSON durchgehend String; mindestens eine Artikelnummer beginnt mit `0`. - ERP-CSV: 1786 Datenzeilen, UTF-8 mit BOM, Delimiter `,`. - ERP-CSV enthaelt deutsche Dezimalzahlen wie `"6,00"` und Werte mit Punkt wie `1.548`. - `SL_ITEM_NO` ist in allen ERP-Zeilen befuellt; mindestens eine Artikelnummer beginnt mit `0`. - Es wurden 247 Artikelnummern mit mehrfachen ERP-Treffern erkannt. Die fachliche Bedeutung ist offen. ## Installation Voraussetzung: Python 3.12 oder neuer. ```bash python3 -m venv .venv . .venv/bin/activate python -m pip install -e ".[dev]" ``` ## Geplante CLI-Nutzung ```bash 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: ```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")) ``` 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`. ## Tests ```bash 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.