From b7194f0d58d47d15bdb469753a52910f2d633019 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Fri, 28 Aug 2026 13:25:44 +0200 Subject: [PATCH] =?UTF-8?q?docs(progress):=20W4c=20Custom-Fields-Routen=20?= =?UTF-8?q?in=20ContactsPlugin=20migriert=20dokumentiert=20=E2=80=94=20Fun?= =?UTF-8?q?ktionserhalt=2011/11=20bewiesen=20(#357)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROGRESS.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/PROGRESS.md b/PROGRESS.md index 230d51a..fe3ee7e 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -12,6 +12,14 @@ **Gates:** ruff exit=0 · tsc --noEmit exit=0 · pytest 11 passed · Vitest 2 passed +## W4c — Custom-Fields-Routen in ContactsPlugin migriert (2026-08-28) ✅ + +**Verify-first:** `app/routes/custom_fields.py` war 100% Contact-spezifisch (importiert Contact, nutzt contacts:read/write, Route /{contact_id}/custom-fields) — lag aber als scheinbar generischer Core-Service (Kritikpunkt 14). + +**Fix (c6decf5):** Die komplette Logik (2 Endpoints GET/PATCH, `_collect_custom_field_definitions`, `_merge_definitions_with_values`, `CustomFieldUpdateRequest`) wandert in `app/plugins/builtins/contacts/routes.py` (gleicher Router-Prefix /api/v1/contacts, bereits via manifest.routes gemounted). `app/routes/custom_fields.py` gelöscht, main.py bereinigt. Der generische `custom_field_definitions.py`-Endpoint bleibt im Core. + +**Verifikation:** tests/test_custom_fields.py **11/11 passed** (Funktionserhalt) · create_app OK · ruff grün · Full Deploy SUCCESS · Health healthy + ## W3b — Settings Contribution-Wahrheit (2026-08-28) ✅ **Verify-first (Live-Messung):** 7 Plugins liefern `settings_pages` via Manifest (mail, ai_assistant, ai_proactive, automation, permissions ×3, system_notif) — die hardcoded Items in `Settings.tsx` für mail/ai/notifications waren identische Duplikate.