Implementation plan: testy endpointów Ollama
Cel
Dodać automatyczne testy dla endpointów Ollama i zapisać finalny stan jako checkpoint l12:
GET /api/v1/ollama/chat/tools/definitions,POST /api/v1/ollama/generate,POST /api/v1/ollama/chat,POST /api/v1/ollama/chat/tools.
Założenia po eksploracji
- Endpointy POST zwracają
text/event-stream. - Endpoint definitions zwraca zwykły JSON.
- Testy POST powinny wysyłać
Accept: text/event-stream. - Kontrolowany mock Ollama ma stabilne prompty i odpowiedzi.
- Brakujący model w mocku zwraca
200, więc nie dodajemy testów404mimo dokumentacji OpenAPI. /chat/toolswymaga niepustegotools.
Plan implementacji
- Dodać typy w
types/ollama.ts. - Dodać klienta
OllamaClientwhttpclients/ollama-client.ts. - Dodać parser SSE w
support/sse.ts. - Dodać dane testowe mocka w
support/ollama-test-data.ts. - Dodać wspólną asercję
expectEventStreamResponse. - Dodać test
chat-tools-definitions.get.spec.ts. - Dodać test
generate.post.spec.ts. - Dodać test
chat.post.spec.ts. - Dodać test
chat-tools.post.spec.ts. - Uruchomić nowe testy.
- Uruchomić pełny suite.
- Zaktualizować
api-test-plan.md. - Skopiować gotowy stan do
l12.
Planowane asercje
GET /api/v1/ollama/chat/tools/definitions
200: zwracaget_product_snapshotilist_products.401: brak JWT zwracaUnauthorized.
POST /api/v1/ollama/generate
200: stream zawiera wiele eventów, model zgadza się z requestem, jest terminalnydone=true, a tokeny składają się w oczekiwaną odpowiedź.400: pustymodelipromptzwracają walidację.401: brak JWT zwracaUnauthorized.
POST /api/v1/ollama/chat
200: stream zawiera odpowiedź asystenta złożoną z tokenów.400: pusta historiamessagesjest odrzucona.401: brak JWT zwracaUnauthorized.
POST /api/v1/ollama/chat/tools
200: stream zawiera tool call, wynik backendowego toola i finalną odpowiedź asystenta.400: pustetoolsjest odrzucone.401: brak JWT zwracaUnauthorized.
Walidacja
Najpierw nowe testy:
npm test -- tests/api/ollama/chat-tools-definitions.get.spec.ts tests/api/ollama/generate.post.spec.ts tests/api/ollama/chat.post.spec.ts tests/api/ollama/chat-tools.post.spec.ts
Potem pełny suite:
npm test
Wynik
Plan został wykonany.
Ostateczne wyniki:
- nowe testy Ollama:
11 passed, - pełny suite
l12:59 passed.
