Expose research planning information
This commit is contained in:
@@ -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
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user