Files
leocrm/docs/test-bugs.md
T

5.0 KiB

LeoCRM — Test Bug-Sammlung

Erstellt: 2026-08-21 Regel: Alle Fehler werden hier gesammelt. KEINE Fixes während des Testens. Fixes werden erst nach Abschluss aller Tests gesammelt durchgeführt.


Bug-Format

Jeder Bug wird wie folgt dokumentiert:

### BUG-XXX: <Kurze Beschreibung>
- **Kategorie:** API | Frontend | DB | Rechte | Security | Plugin | Performance
- **Modul:** <Modul-Name>
- **Endpoint:** <HTTP Method + Path>
- **Erwartet:** <Was sollte passieren>
- **Tatsächlich:** <Was passiert ist>
- **Status Code:** <HTTP Status Code>
- **Response:** <Fehlermeldung / Response Body>
- **Schweregrad:** Critical | High | Medium | Low
- **Getestet von:** Admin | Sales | Reader
- **Trace-ID:** <trace_id falls verfügbar>

Gefundene Bugs

BUG-001: Tag Delete 500 — current_user["id"] KeyError

  • Kategorie: API
  • Modul: Tags
  • Endpoint: DELETE /api/v1/tags/{tag_id}
  • Erwartet: 204 No Content
  • Tatsächlich: 500 Internal Server Error
  • Status Code: 500
  • Response: {"code":"internal_error","detail":"Internal server error","trace_id":"7d902485"}
  • Schweregrad: High
  • Getestet von: Admin
  • Trace-ID: 7d902485
  • Ursache: current_user["id"] in tags/routes.py:282 — Key heißt user_id nicht id
  • Status: Bereits gefixt (Commit c02fc75)

BUG-002: AI Agents list 500 — apply_visibility_filter ImportError

  • Kategorie: API
  • Modul: AI Assistant
  • Endpoint: GET /api/v1/ai/agents
  • Erwartet: 200 mit Agent-Liste
  • Tatsächlich: 500 Internal Server Error
  • Status Code: 500
  • Response: {"code":"internal_error","detail":"Internal server error"}
  • Schweregrad: High
  • Getestet von: Admin
  • Ursache: apply_visibility_filter nicht importiert in ai_assistant/routes.py
  • Status: Bereits gefixt (Commit d3618d8)

BUG-003: create_provider/model/preset/agent 500 — flush vor refresh

  • Kategorie: API
  • Modul: AI Assistant
  • Endpoint: POST /api/v1/ai/providers, /models, /presets, /agents, /folders
  • Erwartet: 201 Created
  • Tatsächlich: 500 Internal Server Error
  • Status Code: 500
  • Schweregrad: High
  • Getestet von: Admin
  • Ursache: db.commit() vor db.refresh() — muss db.flush() vor db.refresh() sein
  • Status: Bereits gefixt (Commit 37f6868)

BUG-004: OwnedMixin Import fehlt in unified_search/models.py

  • Kategorie: Code-Logik
  • Modul: Unified Search
  • Erwartet: Import funktioniert
  • Tatsächlich: NameError: name 'OwnedMixin' is not defined
  • Schweregrad: Medium
  • Ursache: OwnedMixin verwendet aber nicht importiert
  • Status: Bereits gefixt (Commit f0bf53f)

BUG-005: Test-Dateien importieren entfernte AI Models

  • Kategorie: Tests
  • Modul: test_ai_proactive, test_ai_copilot, conftest, test_permission_system_live
  • Erwartet: Tests laufen ohne ImportError
  • Tatsächlich: ImportError für AIChatSession, AIChatMessage, AIConversation, AIMessage
  • Schweregrad: Low
  • Ursache: Models wurden in Phase 2 entfernt, Test-Dateien nicht aktualisiert
  • Status: Bereits gefixt (Commit f0bf53f)

Neue Bugs (während Test-Ausführung gefunden)

BUG-006: wiki/plugin.py hat verbotene Cross-Plugin Imports

  • Kategorie: Architektur
  • Modul: Wiki
  • Datei: app/plugins/builtins/wiki/plugin.py Zeile 28-29
  • Erwartet: Plugins kommunizieren über Contracts, nicht über direkte Imports
  • Tatsächlich: Direkte Imports aus unified_search Plugin
  • Code:
    from app.plugins.builtins.unified_search.provider_registry import get_search_registry
    from app.plugins.builtins.unified_search.providers.wiki_provider import WikiSearchProvider
    
  • Schweregrad: Medium
  • Ursache: Wiki Plugin importiert direkt aus Unified Search Plugin statt über get_contract("unified_search")
  • Lösung: Contract-basierten Zugriff verwenden
  • Status: Nicht gefixt — wird gesammelt nach Test-Abschluss gefixt

BUG-008: POST /contacts mit leerem Body erstellt Contact statt 422

  • Kategorie: API / Validierung
  • Modul: Contacts
  • Endpoint: POST /api/v1/contacts
  • Erwartet: 422 Unprocessable Entity (fehlende Pflichtfelder)
  • Tatsächlich: 201 Created — Contact mit leerem displayname wird erstellt
  • Status Code: 201
  • Response: {"id":"...","type":"company","displayname":"","status":"lead",...}
  • Schweregrad: Medium
  • Ursache: ContactCreate Schema hat keine required fields (type, displayname etc. sind optional)
  • Status: Nicht gefixt

BUG-010: GET /attachments mit nicht existierender entity_id gibt 500 statt 404

  • Kategorie: API / Error Handling
  • Modul: Attachments
  • Endpoint: GET /api/v1/attachments?entity_type=contact&entity_id=00000000-0000-0000-0000-000000000000
  • Erwartet: 404 Not Found (Entity existiert nicht)
  • Tatsächlich: 500 Internal Server Error
  • Status Code: 500
  • Schweregrad: Medium
  • Ursache: Route gibt 500 statt 404 wenn Entity nicht gefunden wird
  • Status: Nicht gefixt