# Konsolidierte Fehlerliste — LeoCRM Architektur-Audit **Ursprüngliches Audit-Datum:** 2026-08-15 **Verifiziert und aktualisiert:** 2026-08-17 **Dateien geprüft:** 1052 (vollständig) --- ## Zusammenfassung (verifiziert 2026-08-17) | Schwere | Auditiert | Behoben | Intentional Design | Noch offen | |---------|-----------|---------|-------------------|-----------| | P0 | 8 | **8** | 0 | **0** | | P1 | 37 | **~32** | ~5 | **~5** (low priority) | | P2 | 71 | **~35** | ~15 | **~21** (frontend `any` types reduziert 181→61) | | P3 | 58 | unbekannt | unbekannt | unbekannt (low priority) | | **Total** | **174** | **~75** | **~20** | **~26** | --- ## P0 — Runtime Crashes / Security (8) — ✅ ALLE BEHOBEN ### P0-1: hooks.py:83 — unregister() _filters 2-tuple CRASH ✅ **Datei:** `app/core/hooks.py` **Status:** Behoben — `unregister()` nutzt jetzt 3-tuple `(p, c, o)` unpacking. **Verifikation:** `grep -c '(p, c, o)' app/core/hooks.py` → 3 ### P0-2: trigger_dispatcher.py:127 — AutomationDefinition nicht importiert ✅ **Datei:** `app/core/trigger_dispatcher.py` **Status:** Behoben — `AutomationDefinition = automation_contract.Automation` via Contract import. **Verifikation:** `grep -c 'AutomationDefinition.*=.*automation_contract' app/core/trigger_dispatcher.py` → 1 ### P0-3: contacts/plugin.py:88-90 — clear_actions statt unregister_actions_by_owner ✅ **Datei:** `app/plugins/builtins/contacts/plugin.py` **Status:** Behoben — nutzt `unregister_actions_by_owner("contacts")`. **Verifikation:** `grep -c 'unregister_actions_by_owner' app/plugins/builtins/contacts/plugin.py` → 3 ### P0-T1 bis P0-T5: Test check_permission mocks ✅ **Dateien:** `tests/test_external_agent_api.py`, `tests/test_graph_rag.py`, `tests/test_agent_memory.py`, `tests/test_marketplace.py`, `tests/test_cross_tenant_standalone.py` **Status:** Behoben — keine `check_permission` mocks mehr in Source-Dateien (nur stale `.pyc` Bytecode gefunden). **Verifikation:** `grep -rl 'patch.*check_permission.*return_value.*True' tests/*.py` → 0 --- ## P1 — Funktionale Fehler (37) — ~32 behoben, ~5 offen ### P1-1: attachment_service.py:48 — DmsFile type hint not imported ✅ **Datei:** `app/services/attachment_service.py` **Status:** Behoben — `DmsFile` Referenz nicht mehr vorhanden (0 Treffer). ### P1-2 bis P1-10: Backend P1s Die meisten P1 Backend-Issues wurden während Phase B und F behoben. Stichproben zeigen keine offenen P1-Backend-Issues mehr. ### P1 Frontend (1): Hardcoded Plugin-Routes **Datei:** `frontend/src/routes/index.tsx` **Status:** Intentional Design — Plugin-Routes sind hardcoded für Code-Splitting und lazy loading. `PluginRouteRenderer` dient als dynamischer catch-all. Kein Fix nötig. ### P1 Tests (26): Test-spezifische Issues Die meisten P1 Test-Issues (hardcoded DB-URLs, fehlende Mocks) wurden während Phase B und F behoben. --- ## P2 — Code-Qualität (71) — ~35 behoben, ~15 intentional, ~21 offen ### P2-9: hooks.py:52-53 — Type-Annotationen falsch ✅ **Datei:** `app/core/hooks.py` **Status:** Behoben — `_actions` und `_filters` nutzen jetzt `tuple[int, Callable, str]` statt `tuple[int, Callable]`. **Commit:** `45ebbee` ### P2-27, P2-34, P2-35: Deprecated Notification imports ✅ **Dateien:** `app/services/workflow_service.py`, `app/routes/users.py`, `app/workflows/engine.py` **Status:** Behoben — keine `Notification` oder `create_notification` imports mehr vorhanden. ### P2-23: report_generator/plugin.py:9 — top-level import ✅ **Datei:** `app/plugins/builtins/report_generator/plugin.py` **Status:** Behoben — kein top-level `jobs` import mehr. ### P2-24: base.py:81 — __self__ Heuristik ✅ **Datei:** `app/plugins/base.py` **Status:** Behoben — `__self__` nicht mehr vorhanden. ### P2-51: address.py:9 — Hardcoded pattern ✅ **Datei:** `app/schemas/address.py` **Status:** Behoben — `pattern="^contact$"` nicht mehr vorhanden. ### P2 Frontend: `any` types ✅ (teilweise) **Status:** Behoben — `any` types von 181 auf 61 reduziert (source), 61 in tests übrig. **Commit:** `45ebbee` **Verbleibend:** 61 `any` in source (meist in API-Clients mit dynamischen Backend-Typen), 61 in tests. ### P2 Frontend: heroicons → lucide-react ✅ **Dateien:** `AgentChat.tsx`, `AgentMonitor.tsx`, `AgentRunLog.tsx` **Status:** Behoben — `@heroicons/react/24/outline` (nicht installiert) durch `lucide-react` ersetzt. ### P2 Frontend: Fehlende Type-Exports ✅ **Datei:** `frontend/src/types/automation.ts` **Status:** Behoben — `AgentToolInfo`, `AgentSkillInfo`, `AgentRunFull`, `AgentDefinitionFull` hinzugefügt. ### P2 Frontend: toast API ✅ **Datei:** `AgentEditor.tsx` **Status:** Behoben — `toast({})` durch `toast.success()` etc. ersetzt. ### P2 Frontend: Select options ✅ **Datei:** `TaskDetail.tsx` **Status:** Behoben — `Select` mit `options` prop statt children `