52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
# Test Report — T07: KI-Copilot
|
|
|
|
## Backend Tests
|
|
|
|
**Command:** `cd backend && python -m pytest tests/test_copilot.py tests/test_copilot_coverage.py --cov=app.services.copilot_service --cov=app.routers.copilot --cov-report=term-missing -v`
|
|
|
|
**Result:** 48 passed, 0 failed
|
|
|
|
### Coverage
|
|
|
|
| Module | Stmts | Miss | Cover |
|
|
|--------|-------|------|-------|
|
|
| app/routers/copilot.py | 33 | 8 | 76% |
|
|
| app/services/copilot_service.py | 149 | 10 | 93% |
|
|
| **TOTAL** | **182** | **18** | **90%** |
|
|
|
|
Coverage exceeds the 80% requirement.
|
|
|
|
### Test Categories
|
|
|
|
- **TestCopilotChat** (7 tests): POST /copilot/chat — valid message, empty message 422, no actions, DB persistence, contact search action, auth required, session continuation
|
|
- **TestCopilotAction** (5 tests): POST /copilot/action — search_vehicles, search_contacts, invalid action 400, get_sale_overview, auth required
|
|
- **TestCopilotHistory** (4 tests): GET /copilot/history — pagination, empty, auth required, session filter
|
|
- **TestCopilotVoice** (3 tests): POST /copilot/voice — transcription+response, empty audio 422, auth required
|
|
- **TestCopilotServiceUnit** (9 tests): _parse_ai_response, system prompt, action registry, execute_action, _get_or_create_session
|
|
- **TestCopilotServiceCoverage** (20 tests): Direct service-level tests for chat(), get_history(), get_sessions(), execute_confirmed_action(), transcribe_audio(), voice_chat(), _call_openrouter_chat()
|
|
|
|
## Frontend Tests
|
|
|
|
**Command:** `cd frontend && npx vitest run tests/copilot.test.tsx`
|
|
|
|
**Result:** 24 passed, 0 failed
|
|
|
|
### Test Categories
|
|
|
|
- **ChatInput** (5 tests): renders, sends, clears, empty prevention, disabled state
|
|
- **MessageList** (4 tests): placeholder, user/assistant messages, loading indicator, action proposals
|
|
- **ActionPreview** (5 tests): renders, confirm, dismiss, null when empty, action labels
|
|
- **ChatHistory** (4 tests): title, empty state, session grouping, session selection
|
|
- **ChatInterface** (6 tests): renders, sends+displays, action preview, action execution, error display, history toggle
|
|
|
|
## Smoke Test
|
|
|
|
- Backend import verified: `from app.main import app` succeeds
|
|
- Copilot router registered in main.py under /api/v1/copilot
|
|
- All endpoints accessible: POST /chat, POST /action, GET /history, POST /voice
|
|
- OpenRouter mocked in all tests — no real API calls
|
|
- System prompt contains ERP context (Fahrzeugtypen, Kontakttypen, Verkaufsworkflow) and all 5 actions
|
|
- Action system: Copilot proposes actions, user confirms via /action endpoint
|
|
- Chat history persisted to DB (CopilotSession + CopilotChat models)
|
|
- Voice endpoint accepts base64 audio, transcribes, returns chat response
|