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:
+18
-1
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user