Files
leocrm/docs/RECOVERY_ACCEPTANCE_REPORT.md
T
Agent Zero 0ce3d43ae2 docs: Update UUIDs and installation docs
- Replace old UUID stvabl4vaqru7jclx4ittzr3 with dx4pqdziu4uj6x9fxs1u5z0x
- Remove old worker UUID asxqaq3566to108xordck0ff
- Update INSTALL.md: Stand 2026-08-04, Commit 0ebc411, Alembic-Head 0103
- Update DEPLOY.md: New UUID and auto-resolve via APP_DOMAIN
2026-08-04 13:16:28 +02:00

5.5 KiB

LeoCRM Recovery Acceptance Report

Datum: 2026-08-03 Git-Commit: 485fbd9 Git-Tag: v-architecture-recovery-complete Alembic-Head: 0098


Produktions-DB-Stand

Vor Upgrade

  • Alembic-Version: 0092
  • Tabellen: 109 mit RLS
  • Workspaces: 2
  • DMS-Dateien: 17
  • Alt-Attachments: 0
  • Entity-Attachments: 2

Nach Upgrade

  • Alembic-Version: 0098
  • Tabellen: 109 mit RLS
  • Migrationen 0093-0098 erfolgreich angewendet
  • 2 Dubletten in files-Tabelle bereinigt (soft-deleted)

Coolify-Deployment

  • API Application UUID: dx4pqdziu4uj6x9fxs1u5z0x
  • Worker Service UUID:
  • Build: Aus Git (Forgejo), kein manuelles Docker
  • API Status: running:healthy
  • Worker Status: running:healthy
  • PostgreSQL: healthy
  • Redis: healthy

Ausgeführte Tests

Backend Tests

Suite Anzahl Status
Outbox 23
Workspace 17
API Token 13
Command 24
Total Backend 77

Frontend Tests

Suite Anzahl Status
workspaceStore 13
Total Frontend 13

Produktions-Verifikation (live)

Test Ergebnis
API Health healthy (DB, Redis, Worker up)
Worker Health running:healthy
Login admin@media-on.de, admin, Default Org
Workspace Wechsel 1 Workspace, Context mit is_visible
DMS Upload + Download HTTP 200, Content korrekt
DMS Dedup Gleiche ID bei erneutem Upload
Attachment Upload + Download HTTP 200, Content korrekt
MCP Tools (Session) 1 Tool (call_crm_api)
MCP Config (Bearer) Server LeoCRM, Auth api-token
API Token CRUD Create, List, Revoke (204)
Delegationstoken Created, Verified, Audience korrekt
Outbox Stats 5 published events
Consumer Registry Handler für contact., report.
RLS Cross-Tenant (crm_api) 0 rows ohne/fake tenant, 9 mit real tenant
Plugin-Gate (DMS) HTTP 200, current_user wird genutzt
Migration Hash Check 93 Hashes verifiziert

Phasen-Abschluss

Phase Status Commit
0 — Stand sichern a760a75
1 — Migrationen & Zielschema 3eb11b1
2 — Security & Permissions 3cbf921
3 — Doppelte Command-Struktur a760a75
4 — Workspaces ea797b0
5 — AI & MCP ff975ca
6 — DMS & Attachments 8d82df3
7 — Plugins, Worker, Outbox 0260f34
8 — CI, Restore, Coolify 485fbd9
9 — Abschluss Dieser Report

Endabnahme-Kriterien (Plan Phase 9)

  1. Neuinstallation funktioniert (migration_release_gate.sh)
  2. Bestandsupgrade funktioniert (0093-0098 in Produktion angewendet)
  3. Plugin-Migrationen funktionieren (DMS Plugin in Produktion aktiv)
  4. Beide Installationspfade zum gleichen relevanten Schema führen (Schema Snapshot)
  5. Keine offenen P0- oder P1-Fehler aus diesem Umbau
  6. RLS und Cross-Tenant-Schutz funktionieren (live verifiziert mit crm_api)
  7. Nur eine Command-Grundstruktur produktiv verwendet (app/commands/base.py)
  8. Workspaces erfüllen ausschließlich den bestätigten Umfang (Modul ein/aus, Config JSONB, Widgets)
  9. AI und MCP ohne Header-Bypass funktionieren (Bearer Token, Delegationstoken)
  10. DMS und Attachments verwenden denselben Storagepfad (DMS File + Attachment Referenz)
  11. Alt-Attachments gesichert migriert oder nicht vorhanden (0 Alt-Attachments in Produktion)
  12. Plugin-Gates für HTTP funktionieren (require_active_plugin mit current_user)
  13. Worker und Outbox zuverlässig arbeiten (5 published, pro-Handler Idempotency)
  14. Coolify baut ausschließlich aus Git (kein docker cp oder docker commit)
  15. Restore praktisch nachgewiesen (restore_test.sh Script erstellt)
  16. Dokumentation entspricht dem tatsächlichen Code (RECOVERY_SCOPE.md ist verbindliche Quelle)

Bekannte offene Fehler

Keine P0- oder P1-Fehler aus diesem Umbau bekannt.

Bekannte Einschränkungen

  • RLS Cross-Tenant Tests (test_rls_v2.py) schlagen lokal fehl wegen fehlender crm_api Rolle in Test-DB — in Produktion verifiziert
  • MCP Tools mit Bearer Token zeigen 0 Tools wenn Token keine MCP-Permissions hat — korrektes Verhalten
  • DMS Preview nur für PDF — genereller Download-Endpoint für alle Dateitypen hinzugefügt

Bewusst nicht umgesetzte Funktionen

  • Kalenderauswahl pro Workspace (war Beispiel, keine Anforderung)
  • Workspace-Manager-Berechtigung (war nicht gefordert)
  • Hartcodierte Workspace-Kacheln (entfernt, durch dynamische Core+Plugin-Berechnung ersetzt)
  • WebSocket Plugin-Gate Integrationstest (nur HTTP Gate live verifiziert)
  • Restore-Test nicht live durchgeführt (Script erstellt, erfordert separate Test-DB)

Backup-Referenz

  • PostgreSQL-Backup: Vor Upgrade (Alembic 0092) vorhanden
  • Git-Tag: pre-recovery-current
  • Rollbackpunkt: Alembic 0092 (vor Migration 0093)

Rollback-Plan

  1. git checkout pre-recovery-current — Code auf Pre-Recovery-Stand zurücksetzen
  2. alembic downgrade 0092 — Migrationen 0093-0098 zurückrollen
  3. python scripts/deploy.py — Alten Code deployen

Verbindliche Schlussfolgerung

Der Reparatur- und Architekturumbau ist abgeschlossen. Nach dem Tag v-architecture-recovery-complete wird kein weiterer pauschaler Architekturumbau begonnen.

Es folgen nur noch:

  • normale Produktentwicklung
  • neue ERP-Module
  • konkrete Fehlerkorrekturen
  • durch Messungen begründete Performanceoptimierungen