| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from __future__ import annotations
- def test_evaluation_gate_accepts_grounded_authorized_fresh_results():
- from app.core.knowledge.evaluation import (
- EvaluationCase,
- EvaluationObservation,
- evaluate,
- )
- case = EvaluationCase(
- case_id="exact-1",
- case_type="exact",
- expected_source_uids=frozenset({"source-1"}),
- allowed_business_domains=frozenset({"domain-a"}),
- )
- observation = EvaluationObservation(
- retrieved_source_uids=("source-1",),
- retrieved_business_domains=("domain-a",),
- cited_source_uids=("source-1",),
- cited_freshness=("fresh",),
- answer_status="grounded",
- latency_ms=100,
- )
- summary = evaluate([(case, observation)])
- assert summary.passed is True
- assert summary.source_recall == 1.0
- assert summary.citation_precision == 1.0
- def test_evaluation_gate_fails_closed_on_permission_leak_or_stale_citation():
- from app.core.knowledge.evaluation import (
- EvaluationCase,
- EvaluationObservation,
- evaluate,
- )
- case = EvaluationCase(
- case_id="negative-1",
- case_type="permission",
- expected_source_uids=frozenset(),
- allowed_business_domains=frozenset({"domain-a"}),
- must_refuse=True,
- )
- observation = EvaluationObservation(
- retrieved_source_uids=("secret-source",),
- retrieved_business_domains=("domain-b",),
- cited_source_uids=("secret-source",),
- cited_freshness=("stale",),
- answer_status="grounded",
- latency_ms=100,
- )
- summary = evaluate([(case, observation)])
- assert summary.passed is False
- assert summary.permission_leak_count == 1
- assert summary.stale_citation_count == 1
- assert summary.refusal_accuracy == 0.0
|