Files
leocrm/COMPLETE_VERNETZUNGS_AUDIT.md
T

232 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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*