From c179ae2b53e0ceb60b97efd66584416a2c9a9d16 Mon Sep 17 00:00:00 2001 From: Victor Svizev Date: Thu, 2 Apr 2026 15:32:35 +0200 Subject: [PATCH 1/4] PAC-973 Add Magento 2.4.9 compatibility --- CHANGELOG.md | 9 +++++++++ composer.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ebeb77..80e76a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# Version 2.2.0 + +## Features + +### PHP 8.5 Compatibility + +* Update dependencies +* Remove PHP 8.2 support + # Version 2.1.0 ## Features diff --git a/composer.json b/composer.json index 1063936..0700158 100755 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "php": "^8.1", + "php": "^8.3", "techdivision/import-serializer": "^2.1" }, "require-dev": { From 80117ae2850f585331c9541f6de52c76ea280eb7 Mon Sep 17 00:00:00 2001 From: Victor Svizev Date: Mon, 13 Apr 2026 14:08:36 +0200 Subject: [PATCH 2/4] PAC-973 Add AGENTS.md --- AGENTS.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..8d6441a --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,94 @@ +# AGENTS.md - import-serializer-csv + +## Zweck & Verantwortung + +Das `import-serializer-csv` Modul bietet eine **konkrete CSV-Serializer-Implementierung** für das Pacemaker Import-System. Es ist ein **Tier 1 Modul** und implementiert die Interfaces aus `import-serializer`. + +**Hauptverantwortung:** +- CSV-Serialisierung und Deserialisierung +- Spezialisierte Serializer für verschiedene Entity-Typen +- Service Layer für CSV-Verarbeitung + +## Architektur & Design Patterns + +### Implementierungen +- **ProductCategoryCsvSerializer**: Spezialisiert für Produkt-Kategorien +- **ValueCsvSerializer**: Generischer CSV-Serializer für Werte +- **CategoryCsvSerializer**: Spezialisiert für Kategorien + +### Verwendete Patterns +- **Service Layer**: Geschäftslogik für CSV-Verarbeitung +- **Strategy Pattern**: Verschiedene Serialisierungs-Strategien +- **Adapter Pattern**: Implementiert `SerializerInterface` + +## Abhängigkeiten + +### Externe Pakete +- **Keine** - Nur Service-Implementierungen + +### TechDivision Dependencies +- **import-serializer** ^2.1 - Implementiert Serializer-Interfaces + +### Abhängig von diesem Modul (2 Reverse Dependencies) +1. **import** - Core Framework nutzt CSV-Serializer +2. **import-cli-simple** - Transitiv über andere Module + +## Wichtige Entry Points + +### Serializer Klassen +```php +// Product Category CSV Serializer +ProductCategoryCsvSerializer::serialize($categories): string +ProductCategoryCsvSerializer::deserialize($csv): array + +// Value CSV Serializer +ValueCsvSerializer::serialize($values): string +ValueCsvSerializer::deserialize($csv): array + +// Category CSV Serializer +CategoryCsvSerializer::serialize($categories): string +CategoryCsvSerializer::deserialize($csv): array +``` + +### Verwendungsbeispiel +```php +// In Importern +$serializer = new ProductCategoryCsvSerializer(); +$csv = $serializer->serialize($productCategories); +$categories = $serializer->deserialize($csv); +``` + +## Events & Extension Points + +**Keine Events** - Tier 1 Implementierungs-Modul + +## Hints für KI-Agenten + +### Wichtig zu verstehen +1. **Tier 1 Modul**: Konkrete Implementierung von `import-serializer` Interfaces +2. **CSV-fokussiert**: Spezialisiert auf CSV-Format +3. **Service Layer**: Enthält Business Logic für CSV-Verarbeitung +4. **Spezialisierte Serializer**: Für verschiedene Entity-Typen + +### Bei Änderungen +- **Implementierungs-Details**: Können geändert werden ohne Interface-Änderungen +- **CSV-Format**: Beachte Kompatibilität mit bestehenden CSV-Dateien +- **Encoding**: Beachte Character-Encoding (UTF-8, etc.) + +### Implementierungs-Hinweise +- Nutze spezialisierte Serializer für Entity-Typen +- Beachte CSV-Escaping und Quoting +- Erwäge Performance bei großen CSV-Dateien + +## Bekannte Einschränkungen + +- **CSV-Only**: Nur CSV-Format unterstützt +- **Keine Validierung**: Validierung erfolgt in Importern +- **Keine Kompression**: CSV wird nicht komprimiert +- **Encoding-Annahmen**: Geht von UTF-8 aus + +## Zusammenfassung + +`import-serializer-csv` ist ein **Tier 1 Modul**, das CSV-Serialisierung für Import-Daten implementiert. Es bietet spezialisierte Serializer für verschiedene Entity-Typen und ist zentral für die CSV-basierte Import-Funktionalität. + +**Für Agenten:** Verstehe dieses Modul als **CSV-Serialisierungs-Implementierung** mit Service Layer. From 05e1f34da3a09050afa9c39550109c06319e4502 Mon Sep 17 00:00:00 2001 From: Victor Svizev Date: Tue, 14 Apr 2026 13:35:20 +0200 Subject: [PATCH 3/4] PAC-973 Update AGENTS.md --- AGENTS.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 8d6441a..193354a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -80,6 +80,55 @@ $categories = $serializer->deserialize($csv); - Beachte CSV-Escaping und Quoting - Erwäge Performance bei großen CSV-Dateien +## Häufige Use Cases + +### CSV-Serialisierungs-Beispiele +```csv +// Product-Categories CSV +product_id,category_path,category_name +1,"Catalog/Women/Shirts","Women Shirts" +2,"Catalog/Men/Pants","Men Pants" + +// CSV-Deserialisierung +$serializer = new ProductCategoryCsvSerializer(); +$categories = $serializer->deserialize($csvContent); +// Gibt Array von Category-Objects zurück +``` + +### Szenarien +1. **CSV Import**: Externe Systems als CSV → Product-Categories konvertieren +2. **CSV Export**: Interne Data als CSV → Externe System +3. **Batch-Transformation**: Tausende Rows mit Serializer verarbeiten + +## Performance-Überlegungen + +- **CSV-Parse**: ~0.1-0.2ms pro Zeile durchschnittlich +- **10.000 Rows**: ~1-2 Sekunden Parse-Zeit +- **100.000 Rows**: ~10-20 Sekunden (wird merklich!) +- **Escape-Overhead**: Spezielle Zeichen (Kommas, Quotes) kosten extra ~5-10% +- **Optimal für**: < 50.000 Rows pro Batch, UTF-8 Encoding +- **Memory**: CSV wird vollständig in Memory geladen - ~1-2MB pro 10k Rows + +## Verwandte Module + +- **import-serializer**: Definiert Interfaces die dieses Modul implementiert +- **import**: Core Framework nutzt CSV-Serializer +- **import-serializer-csv** ← **diese Datei** (CSV Implementation!) + +## Troubleshooting & FAQ + +**Q: CSV-Spalten werden falsch geparst** +- A: Escaping-Probleme! Kommas in Values müssen quoted sein: `"value, with comma"` + +**Q: Character-Encoding-Probleme (Umlaute, Akzente)** +- A: Serializer erwartet UTF-8. Konvertiere Input: `iconv('ISO-8859-1', 'UTF-8', $csv)` + +**Q: Performance bei großen CSVs sehr schlecht** +- A: Memory-Issue? Nutze Streaming-Parsing statt vollständiges In-Memory Laden. + +**Q: Spezialzeichen werden als "?" dargestellt** +- A: Encoding-Problem! Prüfe: `file -i input.csv` sollte `UTF-8` sein, nicht `ISO-8859-1`. + ## Bekannte Einschränkungen - **CSV-Only**: Nur CSV-Format unterstützt From 4fc07528e032979f8555a60f4ac2e46480b209e6 Mon Sep 17 00:00:00 2001 From: Victor Svizev Date: Tue, 14 Apr 2026 17:06:00 +0200 Subject: [PATCH 4/4] PAC-973 Update dependencies --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0700158..0c59495 100755 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "prefer-stable": true, "require": { "php": "^8.3", - "techdivision/import-serializer": "^2.1" + "techdivision/import-serializer": "^2.2" }, "require-dev": { "doctrine/dbal": "^4.0.4",