docs: Test-Plan erweitert (31 Kategorien) + Bug-Sammel-Datei — keine Fixes während Testens
This commit is contained in:
@@ -0,0 +1,92 @@
|
|||||||
|
# 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)
|
||||||
|
|
||||||
|
*Wird während der Test-Ausführung gefüllt.*
|
||||||
+201
-1
@@ -596,6 +596,205 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 12. Frontend Component Tests (169 Components)
|
||||||
|
- [ ] Jede Component rendert ohne Fehler
|
||||||
|
- [ ] Props werden korrekt übergeben
|
||||||
|
- [ ] State changes funktionieren
|
||||||
|
- [ ] Event handlers reagieren
|
||||||
|
- [ ] Loading states zeigen Skeleton
|
||||||
|
- [ ] Error states zeigen Fehlermeldung
|
||||||
|
- [ ] Empty states zeigen EmptyState
|
||||||
|
|
||||||
|
## 13. Frontend Store Tests (19 Stores)
|
||||||
|
- [ ] authStore — Login/Logout/Session state
|
||||||
|
- [ ] commStore — Conversations/Messages/WebSocket
|
||||||
|
- [ ] calendarStore — Calendars/Events/Visibility
|
||||||
|
- [ ] uiStore — Sidebar/Theme/Notifications
|
||||||
|
- [ ] pluginStore — Plugin activation/deactivation
|
||||||
|
- [ ] workspaceStore — Workspace switching
|
||||||
|
- [ ] windowStore — Window management
|
||||||
|
- [ ] themeStore — Theme switching
|
||||||
|
- [ ] commandPaletteStore — Command palette
|
||||||
|
- [ ] onboardingStore — Onboarding tour
|
||||||
|
|
||||||
|
## 14. Frontend Hook Tests (11 Hooks)
|
||||||
|
- [ ] useAuth — Auth state management
|
||||||
|
- [ ] usePermission — Permission checking
|
||||||
|
- [ ] useCommWebSocket — WebSocket connection
|
||||||
|
- [ ] useAIContext — AI context building
|
||||||
|
- [ ] useWorkspace — Workspace management
|
||||||
|
- [ ] useUserPermissions — Permission loading
|
||||||
|
- [ ] useUserPreferences — Preferences loading
|
||||||
|
- [ ] useCommandPalette — Command palette
|
||||||
|
- [ ] useOnlineStatus — Online/offline detection
|
||||||
|
- [ ] useAIUIControl — AI UI control
|
||||||
|
- [ ] useTenant — Tenant context
|
||||||
|
|
||||||
|
## 15. Frontend API Client Tests (52 Clients)
|
||||||
|
- [ ] Jeder API Client function testen
|
||||||
|
- [ ] Request/Response handling
|
||||||
|
- [ ] Error handling
|
||||||
|
- [ ] Retry logic
|
||||||
|
- [ ] Cache invalidation (TanStack Query)
|
||||||
|
- [ ] Optimistic updates
|
||||||
|
|
||||||
|
## 16. WebSocket Tests
|
||||||
|
- [ ] `/api/v1/comm/ws` — Chat WebSocket
|
||||||
|
- [ ] Connection/Disconnection
|
||||||
|
- [ ] Message broadcasting
|
||||||
|
- [ ] Room joining/leaving
|
||||||
|
- [ ] Reconnection on disconnect
|
||||||
|
|
||||||
|
## 17. Background Worker Tests (ARQ)
|
||||||
|
- [ ] Mail IMAP Sync Job
|
||||||
|
- [ ] Notification Job
|
||||||
|
- [ ] Workflow Execution Job
|
||||||
|
- [ ] Backup Job
|
||||||
|
- [ ] Outbox Delivery Job
|
||||||
|
- [ ] Worker Queue processing
|
||||||
|
- [ ] Job retry logic
|
||||||
|
- [ ] Job failure handling
|
||||||
|
|
||||||
|
## 18. Plugin Lifecycle Tests
|
||||||
|
- [ ] Plugin aktivieren → Routes registriert
|
||||||
|
- [ ] Plugin deaktivieren → Routes entfernt
|
||||||
|
- [ ] Plugin neu aktivieren → State wiederhergestellt
|
||||||
|
- [ ] Plugin Migration Runner
|
||||||
|
- [ ] Plugin Signature Validation
|
||||||
|
- [ ] Plugin Quarantine Mode
|
||||||
|
|
||||||
|
## 19. Workflow Engine Tests
|
||||||
|
- [ ] Workflow erstellen mit Steps
|
||||||
|
- [ ] Workflow ausführen → Instance erstellt
|
||||||
|
- [ ] Step Handler: contact_create
|
||||||
|
- [ ] Step Handler: task_create
|
||||||
|
- [ ] Step Handler: send_notification
|
||||||
|
- [ ] Step Handler: send_mail
|
||||||
|
- [ ] Decision Steps (if/else)
|
||||||
|
- [ ] Loop Steps
|
||||||
|
- [ ] Parallel Steps
|
||||||
|
- [ ] Workflow Pause/Resume
|
||||||
|
- [ ] Workflow Cancel
|
||||||
|
|
||||||
|
## 20. AI System Tests (detailliert)
|
||||||
|
- [ ] AI Provider CRUD
|
||||||
|
- [ ] AI Model CRUD
|
||||||
|
- [ ] AI Preset CRUD
|
||||||
|
- [ ] AI Agent CRUD
|
||||||
|
- [ ] AI Agent mit Tools
|
||||||
|
- [ ] AI Streaming (SSE format validieren)
|
||||||
|
- [ ] AI Streaming mit langen Antworten
|
||||||
|
- [ ] AI Streaming mit Tool Calls
|
||||||
|
- [ ] AI Memory (speichern/abrufen/löschen)
|
||||||
|
- [ ] AI Context Builder
|
||||||
|
- [ ] AI Permission checks
|
||||||
|
- [ ] AI Cost tracking
|
||||||
|
- [ ] AI Rate limiting
|
||||||
|
|
||||||
|
## 21. Mail System Tests (detailliert)
|
||||||
|
- [ ] IMAP Sync (neue E-Mails abrufen)
|
||||||
|
- [ ] IMAP Sync (gelöschte E-Mails synchronisieren)
|
||||||
|
- [ ] SMTP Senden (mit Anhang)
|
||||||
|
- [ ] SMTP Senden (an mehrere Empfänger)
|
||||||
|
- [ ] Mail Ordner erstellen (IMAP)
|
||||||
|
- [ ] Mail Ordner umbenennen
|
||||||
|
- [ ] Mail als gelesen/ungelesen markieren
|
||||||
|
- [ ] Mail weiterleiten
|
||||||
|
- [ ] Mail mit Contact verknüpfen
|
||||||
|
- [ ] Mail Search
|
||||||
|
|
||||||
|
## 22. DMS Tests (detailliert)
|
||||||
|
- [ ] Datei Upload (PDF, DOCX, XLSX, Bild)
|
||||||
|
- [ ] Datei Download
|
||||||
|
- [ ] Datei Vorschau (PDF viewer)
|
||||||
|
- [ ] Ordner erstellen
|
||||||
|
- [ ] Datei verschieben
|
||||||
|
- [ ] Datei umbenennen
|
||||||
|
- [ ] Datei löschen (Trash)
|
||||||
|
- [ ] Trash wiederherstellen
|
||||||
|
- [ ] Datei teilen (Share Link)
|
||||||
|
- [ ] Datei Berechtigungen
|
||||||
|
- [ ] Dedup (gleiche Datei erkennen)
|
||||||
|
- [ ] Volltext-Suche in Dateien
|
||||||
|
|
||||||
|
## 23. Calendar Tests (detailliert)
|
||||||
|
- [ ] Kalender erstellen (verschiedene Farben)
|
||||||
|
- [ ] Termin erstellen (einmalig)
|
||||||
|
- [ ] Termin erstellen (wiederkehrend: täglich/wöchentlich/monatlich)
|
||||||
|
- [ ] Termin bearbeiten
|
||||||
|
- [ ] Termin löschen
|
||||||
|
- [ ] Kalender teilen (mit User/Group)
|
||||||
|
- [ ] ICS Export
|
||||||
|
- [ ] ICS Import
|
||||||
|
- [ ] Kalender Visibility Toggle
|
||||||
|
- [ ] Drag & Drop Termin verschieben
|
||||||
|
|
||||||
|
## 24. Search Tests (alle 14 Provider)
|
||||||
|
- [ ] Contact Search Provider
|
||||||
|
- [ ] Company Search Provider
|
||||||
|
- [ ] DMS Search Provider
|
||||||
|
- [ ] Wiki Search Provider
|
||||||
|
- [ ] AI Chat Search Provider (comm_messages)
|
||||||
|
- [ ] Tag Search Provider
|
||||||
|
- [ ] Mail Search Provider
|
||||||
|
- [ ] Calendar Search Provider
|
||||||
|
- [ ] Task Search Provider
|
||||||
|
- [ ] Audit Search Provider
|
||||||
|
- [ ] Notification Search Provider
|
||||||
|
- [ ] Workflow Search Provider
|
||||||
|
- [ ] Agent Search Provider
|
||||||
|
- [ ] Report Search Provider
|
||||||
|
|
||||||
|
## 25. Compliance Tests
|
||||||
|
- [ ] Incident erstellen
|
||||||
|
- [ ] Incident Status ändern
|
||||||
|
- [ ] Incident Report generieren
|
||||||
|
- [ ] Compliance Check
|
||||||
|
- [ ] GDPR Delete (hard delete mit ?gdpr=true)
|
||||||
|
- [ ] Audit Trail Integrität
|
||||||
|
|
||||||
|
## 26. Backup/Restore Tests
|
||||||
|
- [ ] Backup erstellen (pg_dump)
|
||||||
|
- [ ] Backup mit Files
|
||||||
|
- [ ] Backup auf S3
|
||||||
|
- [ ] Backup auf Nextcloud
|
||||||
|
- [ ] Restore (DB + Files)
|
||||||
|
- [ ] Backup Retention
|
||||||
|
|
||||||
|
## 27. MCP (Model Context Protocol) Tests
|
||||||
|
- [ ] MCP Server starten
|
||||||
|
- [ ] MCP Client verbinden
|
||||||
|
- [ ] MCP Tool aufrufen
|
||||||
|
- [ ] MCP Resource abrufen
|
||||||
|
|
||||||
|
## 28. Dedup/Merge Tests
|
||||||
|
- [ ] Duplicate Contacts erkennen
|
||||||
|
- [ ] Merge Contacts
|
||||||
|
- [ ] Merge Preview
|
||||||
|
- [ ] Merge Rollback
|
||||||
|
|
||||||
|
## 29. Import/Export Tests
|
||||||
|
- [ ] Contacts CSV Import
|
||||||
|
- [ ] Contacts CSV Export
|
||||||
|
- [ ] Companies Import
|
||||||
|
- [ ] Tasks Import
|
||||||
|
- [ ] Mail Export
|
||||||
|
|
||||||
|
## 30. Custom Fields Tests
|
||||||
|
- [ ] Custom Field Definition erstellen (text/number/date/select/multiselect)
|
||||||
|
- [ ] Custom Field zu Contact hinzufügen
|
||||||
|
- [ ] Custom Field validieren
|
||||||
|
- [ ] Custom Field suchen/filtern
|
||||||
|
|
||||||
|
## 31. Onboarding/Tour Tests
|
||||||
|
- [ ] Onboarding Tour starten
|
||||||
|
- [ ] Tour Steps durchlaufen
|
||||||
|
- [ ] Tour abschließen
|
||||||
|
- [ ] Tour überspringen
|
||||||
|
- [ ] Welcome Dialog
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Ausführungs-Reihenfolge
|
## Ausführungs-Reihenfolge
|
||||||
|
|
||||||
1. Smoke Tests (1.) — schnell, prüft ob System läuft
|
1. Smoke Tests (1.) — schnell, prüft ob System läuft
|
||||||
@@ -629,5 +828,6 @@
|
|||||||
- **Datenbank-Tests via SSH → psql auf Produktions-DB**
|
- **Datenbank-Tests via SSH → psql auf Produktions-DB**
|
||||||
- **Frontend-Tests mit vitest + Playwright + Browser**
|
- **Frontend-Tests mit vitest + Playwright + Browser**
|
||||||
- **Test-Daten werden nach Tests gelöscht**
|
- **Test-Daten werden nach Tests gelöscht**
|
||||||
- **Jeder Bug wird sofort gefixt und deployt**
|
- **Alle Fehler werden in `docs/test-bugs.md` gesammelt** — KEINE Fixes während des Testens
|
||||||
- **Ergebnisse werden dokumentiert**
|
- **Ergebnisse werden dokumentiert**
|
||||||
|
- **Fixes werden erst nach Abschluss aller Tests gesammelt durchgeführt**
|
||||||
|
|||||||
Reference in New Issue
Block a user