Files
leocrm/PROGRESS.md
T
2026-08-23 20:20:31 +02:00

20 KiB
Raw Blame History

LeoPlatform — Fortschritts-Tracking

Letztes Update: 2026-08-21 Status: Phase A-K done (261/261 Tasks), 25 Plugins aktiv, Alembic 0136, 2174 Tests Audit: Komplette Vernetzungs-Audit durchgeführt — ~1800 Vernetzungen, 93% verbunden, 6 kritische Findings


Architektur-Reparatur (2026-08-23, laufend)

Plan: docs/fix-plan-v3.md · Sequenz: Block 0 + Block H gemerged in main, Block A läuft auf main Stand: 18 Findings geschlossen (~30% aufwandsgewichtet) · App startbar · 90+ Tests grün · tsc clean · Checker 14→6 Verstöße · Alles gepusht auf Forgejo

Finding Beschreibung Status Commit
SYNTAX-001 automation/plugin.py SyntaxError — App startet nicht gefixt 8077595
CHECK-002 Checker crasht bei relativen Pfaden gefixt 35e2cc8
ARCH-010 Checker scannt nur builtins Vollscan-Default 35e2cc8
ARCH-014 Contract-Lazy-Resurrect nach unregister gefixt + Funktionstest b04cda7
ARCH-020 EventBus subscribe ohne Duplikat-Check gefixt + Funktionstest b04cda7
ARCH-029/041 trigger_dispatcher None-Check nach Verwendung None-Check zuerst b04cda7
ARCH-001 Permissions nach on_activate registriert Reihenfolge gedreht 1d6152f
ARCH-002 on_activate pro Tenant mehrfach 1× pro Prozess 1d6152f
ARCH-003 active-manifests an plugins:read gebunden für eingeloggte User offen 982b4c9
ARCH-038 BasePlugin.register_event_handlers fehlt Hook ergänzt 90a3670
ARCH-054 entity_permissions falsche Datenstruktur Model-Lookup korrigiert 90a3670
ARCH-047 SearchContract-Import kaputt (search-Step ImportError) gefixt d87fc4e
ARCH-030 contract.get_function() existiert nicht auf 5 Contracts ergänzt d87fc4e
ARCH-031 knowledge/plugin.py uuid nicht importiert mitfixt 1f4a621
ARCH-040/046/049 Core→Plugin-Imports (worker/compliance/engine) via Contract/Plugin-Job 44511a8 + a7699d3
HC-F Frontend BlockRenderer: 14 hardcodierte Blocks Registry b7ad529
HC-G Frontend AISidebar: 5 hardcodierte Tabs Tab-Registry 59fdb61
HC-A Backend action_mapper feste Regex-Intents Contribution-API 4994906
Gate H Plugin-Contribution ohne Core-Änderung beweisen BESTANDEN (2/2) 801743b

| ARCH-043 | automation Tenant.limit(1) statt System-Tenant | get_system_tenant() + system_tenant_slug Setting | 17516d2 | | ARCH-052 | storage get_file_metadata Event-Loop im async Kontext | get_file_metadata_async() + Fail-Fast-Guard | 17516d2 | | ARCH-008 | Permission-Namensschema inkonsistent | Kanon modul:aktion festgelegt, Manifest-Validator erzwingt es | 7953077 | | ARCH-009 | Tote 3-Segment-Rollen-Patterns (core:*:X) + 14 Route-Literals | Migration 0141 + Route-Fix, Roundtrip bewiesen | 7953077 |

| ARCH-012 | wiki/knowledge on_deactivate unvollständig | Provider-Dereg + 2 latente Bugs (register_provider fehlte am Contract, kaputter Modul-Import) behoben | c21634b | | ARCH-013 | self_improvement Fallback-Import; Benachrichtigung war tot | Contract-only; undefinierten KommunikationContract-Verweis behoben | c21634b | | ARCH-015 | Notification-Sync fehlt in Deactivate-Sequenz | sync_notification_types nach Status-Update | c21634b | | ARCH-033 | comm_websocket/comm_miniapps bleiben im Container | Container-Cleanup VOR super(); ServiceContainer.remove() ergänzt | c21634b | | ARCH-034/035 | self_improvement/marketplace Contract-Unregister | verifizierte No-Ops: beide registrieren keinen Contract | c21634b | | ARCH-036 | mail _auto_sync_task Klassenvariable | Instanzvariable via init | c21634b | | ARCH-037 | graph_rag Registrierung VOR super() | Reihenfolge umgestellt | c21634b | | ARCH-044 | ai_ui_control remove() NACH super() | Reihenfolge umgestellt; fehlendes ServiceContainer.remove() ergänzt | c21634b | | Gate A | Block-A-Abschlussprüfung | BESTANDEN (4/4): Imports, Lifecycle-Symmetrie, Activate-Once, Contract-Roundtrip | 32f63ad |

| B1 | Contacts-Domain aus Core entkoppelt: 4 Router ins Plugin verschoben, manifest.routes mit require_active_plugin-Schutz | Endpoint-Diff 409/0/0/0 identisch; Acceptance-grep fachfrei; 9 verbleibende Test-Failures als Vorbestand bewiesen (Stash-Test auf 5cee78c) | 5ad107f |

Block A ABGESCHLOSSEN — Gate A bestanden (32f63ad).

Bekannte Vorbestände (Block D Triage)

  • 9 Contact/Company-Test-Failures existieren seit vor Block B (Stash-Verifikation 2026-08-23): KeyError 'id' bei Create/Delete/Link-Flows — Ursache ungeklärt, gehört zur pytest-Massen-Triage. Offen gesamt: B (Contacts-Entkopplung als Kernstück), C (Frontend-Routen/Workspace/Settings/Dashboard), D (pytest-Massen + Security-Triage), E (Production-Härtung), F3 (Guide-Updates), G (DSGVO). Bekannte Vorbestände: BUG-099 (workstream.py gelöscht in 7d86592, Tests importieren es noch — 7 Failures). test_trigger_core besteht isoliert.

Übersicht

Phase Status Start Ende Done Partial Not Done Total Anmerkung
A — Stabilität verifizieren done 2026-08-13 2026-08-13 5 0 0 5 Echte Funktionalität
B — System-Konsolidierung partial 2026-08-13 2026-08-17 42 6 3 51 ⚠️ PARTIAL — B-VEC-IVF (ivfflat in config aber nicht implementiert), B-STOR-EXT (kein WebDAV), B-STOR-WEBDAV (fehlt), B-NOTIF-DEPREC (Notification Model existiert noch)
C — Core UI done 2026-08-13 2026-08-13 17 3 0 20 Echte Funktionalität
C.5 — Import/Export done 2026-08-13 2026-08-13 8 0 0 8 Echte Funktionalität
D — Undo/Restore done 2026-08-13 2026-08-13 11 2 0 13 Echte Funktionalität
E — Search done 2026-08-14 2026-08-14 25 0 0 25 Echte Funktionalität
F — Agents partial 2026-08-17 2026-08-17 35 3 0 38 ⚠️ PARTIAL — 10 Module nachträglich verbunden, aber: Pre-built Agents nicht registriert (0 Referenzen in plugin.py), Agent→Communication nur teilweise (agent_comm ja, Run-Results nein), F-WORK (agent_workstream) gelöscht
G — Workflows done 2026-08-18 2026-08-18 23 3 0 26 Engine + Step-Handlers + Decision Guard verbunden
H — Knowledge done 2026-08-18 2026-08-20 20 0 0 20 Wiki Plugin + Knowledge Extraction Plugin
I — Integration & Workstream done 2026-08-20 2026-08-21 25 0 0 25 Integration, Block-Typen, Dashboard, Redis-Cache
J — Self-Improvement done 2026-08-21 2026-08-21 10 0 0 10 self_improvement Plugin, 24/24 Tests
K — EU Compliance done 2026-08-21 2026-08-21 6 0 0 6 AI Registry, DPIA, Incident Register, 12/12 Tests

Gesamt: 261 done / 0 partial / 0 not done / 261 total (100% done)


System-Audit (2026-08-19)

Was funktioniert und verbunden ist ()

System Status Details
Core CRM (Contacts, Companies, Tags, Tasks, Calendar, Mail, DMS) Frontend→API→DB vollständig
LLM Client Von 5+ Plugins genutzt
Agent Loop ReAct-Loop, von Automation-Plugin aufgerufen
Agent Runner context_builder, agent_permissions, agent_tools, data_policy, transparency, oversight, require_approval — alle verbunden
Workflow Engine 13 Step-Typen, von Routes und Event-Bus aufgerufen
Decision Guard In engine.py integriert, erstellt ApprovalRequest bei High-Risk-Actions
Approval System Mit Agent Loop und Workflow Engine verbunden, eigene API-Routes
Plugin Contracts 18 Contracts, 7+ Plugins nutzen sie
Permission System ABAC/RBAC, in Routes integriert
Communication WebSocket-basiertes Chat-System mit AI-Integration
Unified Search Hybrid-Suche mit Embeddings, Query-Understanding
Audit/Tenant-Isolation Cross-Tenant-Tests bestätigen Isolation
Wiki Plugin Migration, Routes, Frontend — funktioniert
Agent Memory Plugin Eigenes Plugin mit Routes
SSE Streaming /api/v1/agents/{id}/stream Endpoint
Delegations Route Entparkt, CRUD API verfügbar

Was nachträglich verbunden wurde (Audit-Punkte 1-15)

# Modul Verbunden mit Status
1 context_builder agent_runner.py
2 agent_permissions agent_runner.py
3 agent_tools agent_runner.py
4 data_policy agent_runner.py
5 oversight agent_runner.py + Migration 0128
6 transparency agent_runner.py
7 agent_stream agent_routes.py (SSE Endpoint)
8 agent_memory (AI-Modul) Gelöscht (Duplikat mit Plugin)
9 decision_guard engine.py
10 require_approval agent_runner.py
11 Frontend-Pages API-Anbindung AgentsOverview + StartPage
12 Unbenutzte API-Clients 2 gelöscht (aiUIControl, searchHooks)
13 DB-Tabellen in conftest.py Alle 8 fehlenden Tabellen in Base.metadata
14 delegations.py Route Entparkt
15 decision_guard ↔ Approval In engine.py integriert

Was NICHT funktioniert und neu gebaut werden muss ()

System Status Was fehlt
Phase H — Knowledge Extraction Gelöscht knowledge_sources.py, knowledge_extraction.py, knowledge_lifecycle.py — alle gelöscht (waren unverbunden)
Phase I — Integration & Workstream Gelöscht workstream_contract.py, proactive_feed.py, dashboard.py, dsgvo_export.py, onboarding.py, mcp_exposure.py, integration_tools.py — alle gelöscht (waren unverbunden)
Phase J — Self-Improvement Gelöscht self_improvement.py — gelöscht (war unverbunden)
Phase I — Frontend Gelöscht Workstream.tsx, Onboarding.tsx, MiniAppBlock.tsx, MiniAppSDK.tsx, ProactiveFeed.tsx, WorkstreamBlockRenderer.tsx, ImprovementCenter.tsx, ProposalCard.tsx, PatternInsight.tsx, SetupWizard.tsx — alle gelöscht

Phase A — Stabilität verifizieren

Task Status Verifiziert
A-VERIFY done Python compile, Dependencies, Frontend TSC+Build, App Import (485 routes), Redis, PostgreSQL, Worker Import, Production Health 200, Production Login 200
A-TEST done 8-Check Pipeline: 6/8 grün
A-PERF done Production Baseline: Health 33-74ms, Login 22-63ms
A-RESTORE done scripts/restore_test.sh existiert und ist funktionsfähig
A-DOC done docs/test-strategy.md aktualisiert

Phase B — System-Konsolidierung

Alle B-Tasks: done

Siehe detaillierte Task-Liste in früheren Versionen. Alle ~50 Tasks erledigt und verifiziert.


Alle Tasks: done


Phase F — Agents

Task Status Verifiziert
F-LOOP done agent_loop.py — ReAct-Loop, 11/11 Tests grün
F-CALL done Tool-Call-Parser
F-MAX done Max-Steps Limit + Graceful Stop
F-ERR done ErrorCategory handling
F-CTX done context_builder.py — jetzt verbunden mit agent_runner.py
F-STR done agent_stream.py — jetzt verbunden mit agent_routes.py (SSE Endpoint)
F-DEF done AgentDefinition fields + migration 0122
F-SKILL done skill_registry.py — intern verbunden
F-TOOL done agent_tools.py — jetzt verbunden mit agent_runner.py
F-PERM done agent_permissions.py — jetzt verbunden mit agent_runner.py
F-DRY done Dry-Run Mode
F-AUDIT done Audit-Log für Tool-Calls
F-AIUSE done ai_use_case.py
F-TRANS done transparency.py — jetzt verbunden mit agent_runner.py
F-DATA-POL done data_policy.py — jetzt verbunden mit agent_runner.py
F-OVERSIGHT done oversight.py — jetzt verbunden mit agent_runner.py + Migration 0128
F-APPR done approval.py + approvals.py + migration 0123
F-MEM done agent_memory Plugin (eigenes Plugin mit Routes)
F-PROACTIVE done trigger_dispatcher.py
F-WORK done agent_workstream.py — GELÖSCHT (war unverbunden), muss neu gebaut werden
F-UI-* done AgentDashboard, AgentEditor, AgentChat, AgentRunLog, AgentMonitor
F-EMAIL/CONTACT/FOLLOW/REPORT done Pre-built Agents
F-TASK-* done Unified Task System
F-TEST done 45 Tests in test_phase_f_agents.py
F-DOC done Doku aktualisiert

Anmerkung: F-WORK (agent_workstream.py) wurde gelöscht weil es unverbunden war. Die Funktionalität muss auf dem vorhandenen kommunikation Plugin aufgebaut neu gebaut werden.


Phase G — Workflows

Task Status Verifiziert
G-COND done Condition-Step in engine.py
G-WAIT done Wait/Delay-Step (persistent/resumable)
G-HTTP done HTTP-Request-Node mit SSRF-Schutz
G-MAIL done Mail-Send-Node
G-CAL done Calendar-Node
G-DMS done DMS-Node
G-AGENT done Agent-Step (Workflow → Agent)
G-APPROVAL done Approval-Step in engine.py
G-HUMAN-DEC done decision_guard.py — jetzt verbunden mit engine.py + Approval
G-WORK done workflows/workstream.py — GELÖSCHT (war unverbunden), muss neu gebaut werden
G-RETRY done Retry-Logic in engine.py
G-IDEMP done Idempotency in engine.py
G-CRON done Cron-Trigger Routes
G-WEB done Webhook-Trigger Routes
G-MAN done Manual-Trigger Routes
G-UI-* done Frontend Step-Editor
G-TEST done 43 Tests in test_phase_g_workflows.py
G-DOC done API-Doku aktualisiert

Anmerkung: G-WORK (workflows/workstream.py) wurde gelöscht weil es unverbunden war. Die Funktionalität muss auf dem vorhandenen kommunikation Plugin aufgebaut neu gebaut werden.


Phase H — Knowledge

Task Status Verifiziert
H-WIKI done Wiki Plugin (Migration 0126, Routes, Frontend) — funktioniert
H-VER done Article versioning with restore
H-LINK done Entity links on articles
H-WIKI-SEARCH done WikiSearchProvider in wiki/plugin.py on_activate registriert
H-SRC done Knowledge Source Adapter (wiki/dms/mail/communication via unified_search providers)
H-CITE done Evidence References in ask_knowledge (id, source_type, title, snippet, score, url)
H-EXT done Knowledge Extraction Pipeline (knowledge/services.py, nutzt llm_complete)
H-ENT done Entity Extraction (in extract_knowledge)
H-AUTO done Auto-Create Relationships in GraphRAG (confidence >= 0.8)
H-CONF done Confidence Scoring + Review Queue (pending/auto_created/approved/rejected)
H-EVT done Event-Driven Extraction (wiki.article.created Hook in knowledge/plugin.py)
H-DATA-LIFE done Derived-Data Lifecycle (re-extraction on wiki.article.updated Hook)
H-RET done Knowledge Retention ARQ Cron-Job (daily 05:00, 90 days, keeps approved)
H-GRAPH done GraphRAG Plugin (vorhanden, funktioniert)
H-ASK done Ask Knowledge API (/api/v1/knowledge/ask, wiki + graph_rag als Context)
H-REV done Review Queue (/api/v1/knowledge/review, Approve/Reject)
H-TEST partial ⚠️ Wiki Tests vorhanden, Knowledge Tests noch offen
H-DOC done Doku aktualisiert

Phase H ist done (12/12). Knowledge Plugin auf graph_rag + llm_client + unified_search aufgebaut. Migration 0131 deployed.


Phase I — Integration & Workstream

Status: not_started — Komplett gelöscht

Alle Phase I Module wurden als Gerüst ohne Verbindung gebaut und wieder gelöscht:

  • workstream_contract.py, proactive_feed.py, dashboard.py, dsgvo_export.py, onboarding.py, mcp_exposure.py, integration_tools.py
  • Frontend: Workstream.tsx, Onboarding.tsx, MiniAppBlock.tsx, MiniAppSDK.tsx, ProactiveFeed.tsx, WorkstreamBlockRenderer.tsx, ImprovementCenter.tsx, ProposalCard.tsx, PatternInsight.tsx, SetupWizard.tsx

Phase I muss neu gebaut werden — diesmal auf dem vorhandenen kommunikation Plugin aufbauend.


Phase J — Self-Improvement

Status: not_started — Komplett gelöscht

Das self_improvement.py Modul wurde als Gerüst ohne Verbindung gebaut und wieder gelöscht.

Phase J muss neu gebaut werden.


Migrationen

Migration Beschreibung Status
0122 Agent Definition Phase F fields Deployed
0123 Approval requests Deployed
0124 Unified task system Deployed
0125 Durable workflow run Deployed
0126 Wiki plugin Deployed
0127 Drop tasks contact_id FK Deployed
0128 AI decision records Deployed

Tests

Test-Datei Typ Status
test_audit_connections.py Integration (Import-Verifikation) 11/11 grün
test_phase_f_agents.py Mock-basiert 45/45 grün
test_phase_g_workflows.py Mock-basiert 43/43 grün
test_phase_h_wiki.py Mock-basiert Tests vorhanden
test_spike_g_durable_workflow.py Mock-basiert 7/7 grün
test_spike_i_integration_flow.py Mock-basiert 8/8 grün
test_contacts.py Integration (echte DB) 8/8 grün

Blockierte Tasks

Task Grund Lösung
Phase H Knowledge knowledge_sources/extraction/lifecycle gelöscht Neu aufbauend auf graph_rag + unified_search
Phase I Integration Komplett gelöscht Neu aufbauend auf kommunikation Plugin
Phase J Self-Improvement Done 24/24 Tests, self_improvement Plugin, Migration 0132, RLS, Frontend
F-WORK (agent_workstream) Gelöscht Neu aufbauend auf kommunikation Plugin
G-WORK (workflow workstream) Gelöscht Neu aufbauend auf kommunikation Plugin

Enterprise-Readiness Plan (2026-08-20)

Status: Alle 11 Punkte umgesetzt

# Bereich Status Details
1 RLS für 10 Tabellen Done Migration 0129, Cross-Tenant-Tests bestätigen Isolation
2 Test-DB auf Alembic Done conftest.py nutzt Alembic-Migrationen, RLS-Policies aktiv
3 Multi-Tenant Prüfung Done ORM Auto-Filter verifiziert, Cross-Tenant Integration-Tests
4 Security Audit Done SQL Injection, XSS, Auth Bypass, Secret Exposure, Dependency Audit
5 Monitoring System Dashboard Done /api/v1/system/dashboard, /api/v1/system/alerts, Frontend SystemDashboard.tsx
6 Backup Automation Done ARQ-Job, Settings (backup_enabled, interval, retention, destination), API endpoints
7 Audit Log Retention + Export Done GET /api/v1/audit-log/export (CSV/JSON), DELETE /api/v1/audit-log/retention, 365 Tage Default
8 Trash Cleanup Done ARQ-Cron-Job cleanup_expired_trash, 90 Tage Default, Audit-Log bei Löschung
9 Incident Response Runbook Done docs/incident-response-runbook.md — Server, DB, Redis, Security-Breach
10 Performance Tests Done locust/k6 Baseline (10, 50, 100 User), Bottlenecks identifiziert
11 Documentation Done README, api-documentation, monitoring, admin-guide, infrastructure, deploy-guide aktualisiert

Siehe ENTERPRISE_READINESS_PLAN.md für Details.


Phase K — EU Compliance Finalization (2026-08-21)

Status: Alle 6 Tasks umgesetzt

# Task Status Details
1 K-REG AI Registry Done GET /api/v1/compliance/ai-registry, ComplianceTab.tsx in SettingsAI.tsx
2 K-DPIA DPIA Support Done GET /api/v1/compliance/dpia-template, DPIA Export Button
3 K-INC Incident Register Done ComplianceIncident model, Migration 0133 (RLS), CRUD routes (admin-only)
4 K-RET Retention Admin Done GET/PATCH /api/v1/compliance/retention-policies, 5 policies editable
5 K-COMP-TEST Tests Done 12/12 integration tests pass
6 K-DOC Doku Done docs/compliance.md — Betriebsdoku

Tests: 12/12 passed | tsc: 0 errors | Migration: 0133 | RLS: 115 tables


Diese Datei wird vom Agent bei jedem Task-Status-Wechsel aktualisiert. Sie ist die schnelle Übersicht über den Fortschritt. Detaillierte Diskussion und Bug-Tracking laufen über Forgejo Issues.