Expose research planning information

This commit is contained in:
faligam
2026-09-07 12:17:38 +02:00
parent 5f237d535f
commit 2c532bc9bb
4 changed files with 118 additions and 1 deletions

View File

@@ -331,6 +331,59 @@ def test_get_evidence_empty(client: TestClient) -> None:
assert body["evidence"] == []
# ---------------------------------------------------------------------------
# GET /v1/research/{id}/plan — plan
# ---------------------------------------------------------------------------
def test_get_plan_returns_stored_validated_plan(client: TestClient) -> None:
"""The plan endpoint exposes stored planner output without raw LLM data."""
from nsct.api.rest_research import _ResearchRunState, _research_store
from nsct.orchestration.budget import HardBudgetConfig
_research_store.clear()
research_id = "plan-test"
_research_store[research_id] = _ResearchRunState(
research_id=research_id,
query="Plan test",
language="de",
depth="quick",
budget=HardBudgetConfig(max_search_queries=10, max_sources=5),
plan={"topic": "Plan test", "queries": [{"query": "Plan test", "purpose": "test"}]},
)
resp = client.get(f"/v1/research/{research_id}/plan")
assert resp.status_code == 200
assert resp.json() == {
"research_id": research_id,
"plan": {"topic": "Plan test", "queries": [{"query": "Plan test", "purpose": "test"}]},
"available": True,
}
def test_get_plan_returns_unavailable_while_planning(client: TestClient) -> None:
"""A newly created run has a valid empty plan response until planning ends."""
from nsct.api.rest_research import _ResearchRunState, _research_store
from nsct.orchestration.budget import HardBudgetConfig
_research_store.clear()
research_id = "no-plan-test"
_research_store[research_id] = _ResearchRunState(
research_id=research_id,
query="Plan test",
language="de",
depth="quick",
budget=HardBudgetConfig(max_search_queries=10, max_sources=5),
)
resp = client.get(f"/v1/research/{research_id}/plan")
assert resp.status_code == 200
assert resp.json()["plan"] is None
assert resp.json()["available"] is False
# ---------------------------------------------------------------------------
# GET /v1/research/{id}/report — report
# ---------------------------------------------------------------------------