Files
leocrm/COMPLETE_VERNETZUNGS_AUDIT.md
T

8.7 KiB
Raw Blame History

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