docs(progress): W4a Phase 1+2 dokumentiert — Backend-Kern + Frontend-Dialog deployed, Funktionserhalt 45/45 bewiesen, Vorbestand-Failures Stash-geprueft (#359)

This commit is contained in:
Agent Zero
2026-08-27 21:35:56 +02:00
parent 38df597f11
commit 9c62d35047
+18 -1
View File
@@ -20,7 +20,24 @@
**Abgelöst:** `export_service.py` (78 Z., CSV-only, alter /export-Endpoint) + contact-spezifische Logik in `import_export_service.py` (504 Z.) — der bewiesene Doppel-Weg wird konsolidiert. **Abgelöst:** `export_service.py` (78 Z., CSV-only, alter /export-Endpoint) + contact-spezifische Logik in `import_export_service.py` (504 Z.) — der bewiesene Doppel-Weg wird konsolidiert.
**Phasen:** 1 Backend (Format-Registry, Standard-Formate-Plugin, Contract-Protokoll, Orchestrator, Contacts migriert) → 2 Frontend (Dialog, Toolbars, alte Seite → Übersicht) → 3 PDF separat. ### Phase 1 — Backend-Kern ✅ (cd8ef75, deployed 21:14)
- Format-Registry `app/core/importexport_registry.py` (FormatHandler-Protokoll, `available_for()` Schnittmenge)
- `importexport_formats`-Plugin (csv/json/xlsx), lifecycle-korrekt (on_activate registriert, on_deactivate entfernt)
- ContactsContract `importexport_entities()` + `ie_*`-Methoden (Columns, Validatoren, Normalizer, Fetch, Persist mit Audit)
- `import_export_service.py` generische Engine — iteriert über `registry.list_discovered()`, keine hartcodierten Plugin-Namen
- **Funktionserhalt: 45/45 import_export-Suite passed** (inkl. Fehler-Multiplizität: 2 failed rows → 3 total_errors via ie_required + ie_row_valid-Trennung; Zwischenstand mit 2 Failures live gefangen und korrigiert)
### Phase 2 — Frontend-Dialog ✅ (38df597, deployed 21:34)
- `ImportExportDialog.tsx` (neu): Modal lg/xl, Export-Tab (1 Schritt) + Import-Tab (4 Schritte: Datei → Mapping-Editor → Dry-Run → Ausführung+Report inkl. Background-Job-Polling)
- 24 `importexport.*`-i18n-Keys (de + en, keine hardcoded Strings)
- ContactsList: Toolbar-Button (contacts:read-Gate, Upload-Icon, entityType vorgewählt) über pluginToolbarStore
- **Verifikation: Vitest 12/12** (importExportDialog 6/6 + routePermissions 6/6) · tsc exit 0 · Production-Build exit 0 · 6 contacts/shell-Failures per Stash-Test als Vorbestand bewiesen (identisch auf clean HEAD) · frontend-only Deploy FE_EXIT=0
### Phase 3 — PDF (separat, offen)
PDF als weiteres Format-Plugin — eigener Design-Baustein (Library-Choice, Templates pro Modul).
## Welle 3a — Route-Permission-Wahrheit (2026-08-27) ## Welle 3a — Route-Permission-Wahrheit (2026-08-27)