diff --git a/docs/test-bugs.md b/docs/test-bugs.md index 01b9f51..d050e7a 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -3056,3 +3056,87 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Problem:** `from app.core.redis import get_redis` — aber es gibt keine `app/core/redis.py`. Redis wird über `app.core.auth.get_redis` importiert. Das wird einen ImportError geben. - **Schweregrad:** High - **Status:** ⏳ Nicht gefixt + +### ARCH-376: registry.py — `from app.core.redis import get_redis` aber app/core/redis.py existiert nicht +- **Datei:** app/plugins/registry.py:600, 650 +- **Problem:** `from app.core.redis import get_redis` — aber es gibt keine `app/core/redis.py`. Redis wird über `app.core.auth.get_redis` importiert. ImportError bei Cache-Invalidation. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-377: registry.py — sync_notification_types löscht Types nicht vollständig bei Deaktivierung +- **Datei:** app/plugins/registry.py:181 +- **Problem:** sync_notification_types löscht nur Types wenn das Plugin nicht mehr aktiv ist. Aber die Reihenfolge ist: on_deactivate() → sync_notification_types(). Wenn on_deactivate fehlschlägt, bleiben Types. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-378: registry.py — activate() ruft on_activate() vor sync_notification_types() auf +- **Datei:** app/plugins/registry.py:580 +- **Problem:** Reihenfolge: on_activate() → register_contributions() → sync_notification_types(). Wenn on_activate Event-Handler registriert die Notification-Types verwenden, sind die Types noch nicht in DB. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-379: contracts.py — _try_lazy_load lädt deaktivierte Plugins neu +- **Datei:** app/plugins/builtins/contracts.py:109 +- **Problem:** `get_contract()` macht `_try_lazy_load()` auch nach `unregister()`. `unregister()` entfernt Contract und setzt `_loaded`, aber `_try_lazy_load` kann ihn wiederherstellen. Problem 14 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-380: base.py — on_activate registriert Event-Handler ohne Duplikatsprüfung +- **Datei:** app/plugins/base.py:59 +- **Problem:** `event_bus.subscribe(event_name, handler)` wird bei jedem `on_activate()` aufgerufen. Bei mehrfachem `on_activate()` (pro Tenant) werden Handler doppelt registriert. Problem 2 und 20 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-381: base.py — on_deactivate überschreibt _event_handlers nicht +- **Datei:** app/plugins/base.py:75 +- **Problem:** `on_deactivate()` ruft `self._event_handlers.clear()` auf, aber wenn eine Subclass `on_deactivate()` überschreibt und `super().on_deactivate()` nicht aufruft, werden Event-Handler nicht deregistriert. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-382: contacts/plugin.py — Routes=[] aber Core hat contacts routes (Doppelarchitektur) +- **Datei:** app/plugins/builtins/contacts/plugin.py:40 +- **Problem:** `routes=[]` mit Kommentar 'Routes are registered as core routes in main.py'. Contacts ist halb Plugin halb Core — Problem 5 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-383: ai_assistant/plugin.py — menu_items und page_routes für AIAssistant (Phase 2 entfernt) +- **Datei:** app/plugins/builtins/ai_assistant/plugin.py:80 +- **Problem:** Manifest hat noch `menu_items` und `page_routes` für `/ai-assistant` — aber AIAssistant.tsx wurde in Phase 2 entfernt. Frontend wird versuchen eine nicht existierende Seite zu laden. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-384: knowledge/plugin.py — uuid wird verwendet aber nicht importiert +- **Datei:** app/plugins/builtins/knowledge/plugin.py:40 +- **Problem:** `uuid.UUID(str(tenant_id))` wird verwendet, aber `import uuid` fehlt am Datei-Anfang. Problem 12 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-385: wiki/plugin.py — Cross-Plugin Import (unified_search) +- **Datei:** app/plugins/builtins/wiki/plugin.py:30 +- **Problem:** `from app.plugins.builtins.unified_search.providers.wiki_provider import WikiSearchProvider` — direkter Plugin→Plugin Import. Sollte über Contract gehen. Problem 6/15 bestätigt. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-386: wiki/plugin.py — on_deactivate ruft unregister_actions_by_owner aber nicht base on_deactivate +- **Datei:** app/plugins/builtins/wiki/plugin.py:35 +- **Problem:** `unregister_actions_by_owner('wiki')` wird aufgerufen, dann `await super().on_deactivate()`. Aber wenn super().on_deactivate() fehlschlägt, sind Actions bereits deregistriert. Reihenfolge sollte umgekehrt sein. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-387: system_notif/plugin.py — Legacy Notifications parallel zu Kommunikation +- **Datei:** app/plugins/builtins/system_notif/plugin.py +- **Problem:** system_notif konvertiert System-Events in Chat-Nachrichten über kommunikation. Aber es gibt auch noch die Legacy Notification Routes (notifications.py). Doppelarchitektur. Problem 18 bestätigt. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-388: self_improvement/plugin.py — dependencies deklariert ai_proactive aber nicht kommunikation +- **Datei:** app/plugins/builtins/self_improvement/plugin.py:30 +- **Problem:** `dependencies=['permissions', 'automation', 'ai_proactive']` — aber services.py importiert von kommunikation. Nicht deklariert. Problem 13/29 bestätigt. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-389: tasks/plugin.py — dependencies deklariert nicht kommunikation +- **Datei:** app/plugins/builtins/tasks/plugin.py +- **Problem:** `dependencies=['permissions']` — aber tasks/workstream.py importiert von kommunikation. Nicht deklariert. Problem 29 bestätigt. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt