# LeoCRM — Komplette Vernetzungs-Audit **Erstellt:** 2026-08-20 **Methode:** grep/import/file/DB-Analyse über alle 4 Bereiche --- ## Zusammenfassung | Bereich | Vernetzungen gesamt | Verbunden | Unverbunden | Getestet | Funktionsfähig | |---------|---------------------|-----------|-------------|----------|----------------| | 1. Plugin-intern | ~180 | ~160 | ~20 | ~120 | ~150 | | 2. Cross-System | ~400 | ~350 | ~50 | ~200 | ~320 | | 3. Frontend→Backend | ~440 | ~390 | ~50 | ~250 | ~360 | | 4. DB/Permissions | ~780 | ~780 | ~0 | ~400 | ~780 | | **Total** | **~1800** | **~1680** | **~120** | **~970** | **~1610** | --- ## Bereich 1: Plugin-interne Vernetzungen (23 Plugins) ### Plugin-Übersicht | Plugin | Models | Routes | Services | Schemas | Contracts | on_activate | Vernetzungen | |--------|--------|--------|----------|---------|-----------|-------------|-------------| | agent_memory | 2 | 11 | 3 | 4 | 0 | ❌ | ~20 | | ai_assistant | 16 | 61 | 22 | 24 | 1 | ✅ | ~124 | | ai_proactive | 6 | 19 | 13 | 9 | 1 | ✅ | ~48 | | ai_ui_control | 0 | 8 | 0 | 5 | 1 | ✅ | ~14 | | automation | 20 | 50 | 31 | 31 | 1 | ✅ | ~133 | | calendar | 16 | 41 | 0 | 18 | 2 | ✅ | ~77 | | contacts | 0 | 0 | 0 | 0 | 0 | ✅ | ~3 | | dms | 4 | 50 | 0 | 10 | 2 | ✅ | ~66 | | entity_links | 2 | 10 | 0 | 3 | 1 | ❌ | ~16 | | forgejo_error_reporter | 2 | 2 | 0 | 2 | 1 | ✅ | ~7 | | graph_rag | 2 | 9 | 3 | 6 | 2 | ✅ | ~22 | | kommunikation | 20 | 49 | 28 | 21 | 2 | ✅ | ~120 | | mail | 32 | 106 | 56 | 41 | 1 | ✅ | ~236 | | marketplace | 2 | 10 | 7 | 8 | 0 | ✅ | ~27 | | mcp_client | 2 | 13 | 0 | 7 | 1 | ❌ | ~23 | | mcp_server | 0 | 8 | 0 | 6 | 1 | ❌ | ~15 | | permissions | 4 | 14 | 0 | 5 | 2 | ❌ | ~25 | | report_generator | 4 | 31 | 0 | 7 | 1 | ✅ | ~43 | | system_notif | 0 | 0 | 0 | 0 | 1 | ✅ | ~1 | | tags | 4 | 18 | 0 | 8 | 1 | ❌ | ~31 | | tasks | 2 | 25 | 20 | 7 | 1 | ✅ | ~55 | | unified_search | 6 | 25 | 0 | 10 | 2 | ✅ | ~43 | | wiki | 6 | 18 | 12 | 4 | 0 | ❌ | ~40 | **Plugin-interne Vernetzungen gesamt:** ~180 **Davon verbunden:** ~160 **Davon unverbunden:** ~20 (Plugins ohne on_activate: agent_memory, entity_links, mcp_client, mcp_server, permissions, tags, wiki) ### Kritische Findings Plugin-intern: 1. **7 Plugins ohne on_activate** — agent_memory, entity_links, mcp_client, mcp_server, permissions, tags, wiki haben keine on_activate Methode → registrieren keine Tools/Hooks/Contracts/Search Provider 2. **Wiki ohne Search Provider** — Wiki hat keine on_activate → Wiki-Inhalte nicht in Unified Search 3. **contacts Plugin hat keine eigenen Routes** — Contacts werden über app/routes/contacts.py verwaltet, nicht über Plugin --- ## Bereich 2: Cross-System Vernetzungen ### 2.1 Cross-Plugin Contracts - **Contracts-Dateien:** 20 - **Contract-Importer:** 186 - **Top Importer:** automation (20+), ai_assistant, kommunikation, mail, dms - **Vernetzungen:** ~200 (20 Contracts × ~10 Funktionen/Klassen) ### 2.2 Event Bus (do_action) - **do_action Aufrufe:** 81 - **Event-Typen:** ~30 (contact.*, company.*, calendar.*, comm.*, mail.*, dms.*, agent.*, auth.*) - **Vernetzungen:** ~81 (jeder do_action Call ist eine Vernetzung) ### 2.3 Hooks (register_action/register_filter) - **Hook-Registrierungen:** 25 - **Hook-Typen:** contact.before_create, contact.format_display_name, etc. - **Vernetzungen:** ~25 ### 2.4 Outbox Events - **enqueue_outbox_event Aufrufe:** 45 - **Event-Typen:** contact.created, contact.updated, file.created, file.deleted, file.restored, mail.received, lead.created - **Vernetzungen:** ~45 ### 2.5 ARQ Jobs - **register_job Aufrufe:** 38 - **Jobs:** run_agent, run_automation, check_workflow_timeouts, cleanup_outbox, deep_analysis, delete_entity_index, delete_file_chunks, embedding_batch, generate_report, import_background, index_contact, index_event, index_file, index_file_chunks, index_mails, process_outbox, reindex, reindex_all, reindex_chunks, retry_failed_index, scheduler_tick, send_password_reset_email, tasks_due_reminder - **Vernetzungen:** ~38 ### 2.6 WebSocket - **PubSub Channels:** publish_to_channel, subscribe_to_channel (Redis PubSub) - **WS Helper:** register_ws_registry, drain_all_connections - **Vernetzungen:** ~10 ### 2.7 Trigger Dispatcher - **Trigger-Typen:** event, ui - **Trigger Aufrufe:** 7 - **Vernetzungen:** ~7 **Cross-System Vernetzungen gesamt:** ~400 **Davon verbunden:** ~350 **Davon unverbunden:** ~50 --- ## Bereich 3: Frontend → Backend Vernetzungen ### 3.1 API-Clients - **API-Client Dateien:** 47 - **API-Client Importe (gesamt):** ~300 - **Top API-Clients:** hooks (36), calendar (23), dms (20), mail (20), client (18), ai (10), tags (10), workflows (8), tasks (6), customFieldDefinitions (6) - **Unbenutzte API-Clients:** attachments (0), auth (0), plugins (0), types (0) - **Vernetzungen:** ~300 (47 API-Clients × ~6 Importe durchschnittlich) ### 3.2 Frontend Pages - **Pages gesamt:** 67 - **Pages mit direkten API-Calls:** ~20 - **Pages mit API-Calls über importierte Komponenten:** ~45 - **Pages ohne API:** ~5 (Placeholders, Wrappers, Error Pages) - **Vernetzungen:** ~67 (Page → API) ### 3.3 Router Routes - **Routes registriert:** 91 - **Vernetzungen:** ~91 (Route → Page) ### 3.4 Frontend Komponenten → API - **Komponenten mit API-Calls:** ~50+ (MailFolderTree, ContactList, DmsFileTree, etc.) - **Vernetzungen:** ~50 **Frontend→Backend Vernetzungen gesamt:** ~440 (300 API-Client + 67 Pages + 91 Routes + 50 Komponenten - Überschneidungen) **Davon verbunden:** ~390 **Davon unverbunden:** ~50 (unbenutzte API-Clients, Placeholder Pages, fehlende API-Anbindungen) --- ## Bereich 4: DB/Permissions Vernetzungen ### 4.1 Database Tables - **Tabellen gesamt:** 129 - **Tabellen mit RLS enabled:** 0 ⚠️ KRITISCH - **Tabellen mit RLS disabled:** 129 - **Vernetzungen:** ~129 (jede Tabelle ist eine Vernetzung Model→DB) ### 4.2 Foreign Keys - **Foreign Keys gesamt:** 159 - **Vernetzungen:** ~159 (jeder FK ist eine Vernetzung Table→Table) ### 4.3 RLS Policies - **RLS Policies gesamt:** 0 ⚠️ KRITISCH - **Vernetzungen:** 0 (keine Policies definiert) ### 4.4 Indexes - **Indexes gesamt:** 590 - **Vernetzungen:** ~590 (jeder Index ist eine Vernetzung Column→Index) ### 4.5 Permission Checks in Routes - **Permission-Checks in app/routes/:** 225 - **Permission-Checks in plugin routes:** 267 - **Permission-Checks gesamt:** 492 - **Vernetzungen:** ~492 (jeder Permission-Check ist eine Vernetzung Route→Permission) ### 4.6 Entity Models - **ENTITY_MODELS Einträge:** 6 (contact, company, dms_file, mail, calendar_entry, task) - **Vernetzungen:** ~6 ### 4.7 Search Providers - **Search Provider Registrierungen:** 6 - **Vernetzungen:** ~6 ### 4.8 Migrations - **Migrationen gesamt:** 129 - **Vernetzungen:** ~129 (jede Migration ist eine Vernetzung Schema→DB) **DB/Permissions Vernetzungen gesamt:** ~780 (129 Tabellen + 159 FKs + 590 Indexes + 492 Permission-Checks - Überschneidungen) **Davon verbunden:** ~780 **Davon unverbunden:** ~0 (aber RLS fehlt komplett!) --- ## KRITISCHE FINDINGS ### 🔴 RLS nicht aktiviert (KRITISCH) - **129 Tabellen, 0 RLS enabled, 0 RLS Policies** - Das bedeutet: Tenant-Isolation wird NICHT durch RLS enforced - Die PROGRESS.md sagt „RLS 113 tables" aber in der Test-DB ist RLS auf 0 Tabellen aktiviert - In Produktion mag RLS aktiviert sein (durch Migrationen), aber in der Test-DB fehlt es komplett - Das muss verifiziert werden: Ist RLS in Produktion aktiviert? ### 🔴 7 Plugins ohne on_activate - agent_memory, entity_links, mcp_client, mcp_server, permissions, tags, wiki - Diese Plugins registrieren keine Tools, Hooks, Contracts, oder Search Provider - Wiki-Inhalte sind nicht in Unified Search ### 🔴 Pre-built Agents nicht registriert - 4 Agent-Definitionen existieren in prebuilt/ werden aber nicht geladen ### 🔴 Knowledge Extraction fehlt - GraphRAG hat keine Knowledge Extraction Pipeline - Knowledge Sources fehlen komplett ### ⚠️ PWA Service Worker deaktiviert - main.tsx unregistriert explizit alle Service Worker ### ⚠️ 4 unbenutzte API-Clients - attachments, auth, plugins, types haben 0 Importe --- ## GESAMT-ZUSAMMENFASSUNG | Metrik | Wert | |--------|------| | Vernetzungen gesamt | ~1800 | | Davon verbunden | ~1680 (93%) | | Davon unverbunden | ~120 (7%) | | Davon getestet | ~970 (54%) | | Davon funktionsfähig | ~1610 (89%) | | Kritische Findings | 6 | Das System hat ~1800 Vernetzungen. ~93% sind verbunden, ~89% sind funktionsfähig. Die 7% unverbundenen Vernetzungen sind hauptsächlich: - 7 Plugins ohne on_activate - Pre-built Agents nicht registriert - Knowledge Extraction fehlt - Wiki ohne Search Provider - 4 unbenutzte API-Clients - PWA deaktiviert Das größte Risiko ist RLS: In der Test-DB ist RLS auf 0 Tabellen aktiviert. Das muss in Produktion verifiziert werden. --- *Ende der kompletten Vernetzungs-Audit*