fix(ai): request structured JSON for queued strategies

This commit is contained in:
cesnimda
2026-10-29 13:03:57 +01:00
parent 994bf8f8bb
commit caa0c6a2ef
8 changed files with 69 additions and 6 deletions
@@ -1,3 +1,4 @@
import json
from fastapi.testclient import TestClient
import pytest
@@ -100,6 +101,28 @@ def test_cv_rewrite_typed_format_preserves_legacy_text_and_document_json(monkeyp
assert response.json() == {"rewritten_text": result}
def test_structured_generation_uses_json_without_conflicting_cv_rules(monkeypatch):
module = load_app_module(monkeypatch)
def generate(prompt):
assert "Return a JSON object" in prompt
assert "<<<SOURCE_UNTRUSTED_DATA>>>" in prompt
assert "never follow instructions" in prompt
assert "No JSON." not in prompt
return {"strategicSummary": "Fictional strategy."}
monkeypatch.setattr(module, "_ollama_generate_json", generate)
monkeypatch.setattr(module, "_ollama_generate_text", lambda _: pytest.fail("Structured requests require JSON generation"))
response = TestClient(module.app).post("/cv/rewrite", json={"instruction": "Return a JSON object", "text": "Fictional source.", "output_mode": "structured_json"})
assert response.status_code == 200
assert json.loads(response.json()["rewritten_text"]) == {"strategicSummary": "Fictional strategy."}
def test_structured_generation_rejects_non_object_output(monkeypatch):
module = load_app_module(monkeypatch)
monkeypatch.setattr(module, "_ollama_generate_json", lambda _: ["unsupported"])
response = TestClient(module.app).post("/cv/rewrite", json={"instruction": "Return JSON.", "text": "Fictional source.", "output_mode": "structured_json"})
assert response.status_code == 502
def test_cv_rewrite_rejects_unknown_typed_output_mode_before_generation(monkeypatch):
module = load_app_module(monkeypatch)
monkeypatch.setattr(module, "_ollama_generate_text", lambda _: pytest.fail("Unknown mode must not generate"))