From d8a4063c48dae3e52b3bbb4294a8ea0beb9181c0 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Thu, 27 Aug 2026 20:47:00 +0200 Subject: [PATCH] =?UTF-8?q?docs(progress):=20W4a=20Import/Export=20Contrib?= =?UTF-8?q?ution-Architektur=20=E2=80=94=20finale=20Spec=20(#359)=20festge?= =?UTF-8?q?halten,=20zentraler=20Dialog=20per=20Toolbar-Button,=20Formate?= =?UTF-8?q?=20als=20Plugins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROGRESS.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/PROGRESS.md b/PROGRESS.md index 565f3ed..6090906 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -12,6 +12,16 @@ **Gates:** ruff exit=0 · tsc --noEmit exit=0 · pytest 11 passed · Vitest 2 passed +## W4a — Import/Export Contribution-Architektur (2026-08-27, SPECS final) + +**Spec:** [#359](https://forgejo.media-on.de/Leopoldadmin/leocrm/issues/359) (user-abgestimmt) + +**Kernentscheidungen:** Zentraler Dialog (Modal lg/xl) geöffnet per Toolbar-Button in jeder Modulliste, deren Plugin Import/Export anbietet; /import-export-Seite wird zur Übersicht aller Angebote (Variante b). Formate als Plugins (CSV/JSON/XLSX bundled; PDF später separat). Module = Contributors via Contract (`importexport_meta`); Core = Orchestrator + Sicherheits-Policy-Layer (Sensitive-Filter, Tenant-Scoping, Audit unabhängig vom Modul erzwungen). Modul-native Formate (ICS/EML/ZIP) registrieren sich nur anzeigend. + +**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. + ## Welle 3a — Route-Permission-Wahrheit (2026-08-27) | Finding | Issue | Fix | Verifikation (Live-Messung) |