Add production condition retrieval smoke test

This commit is contained in:
2026-08-11 14:58:28 +07:00
parent 59e6ad2d0d
commit 7ebbe1f309
38 changed files with 3752 additions and 121 deletions
@@ -0,0 +1,39 @@
from rag.condition_evaluation import (
ConditionEvaluationOutcome,
summarize_condition_outcomes,
)
def test_condition_metrics_are_separate_and_unsupported_drugs_are_counted():
rows = [
ConditionEvaluationOutcome(
case_id="hta",
expected_intent="condition_to_drug",
actual_intent="condition_to_drug",
expected_condition="tăng huyết áp",
actual_condition="tăng huyết áp",
expected_clarification=False,
actual_clarification=False,
expected_relation="indication",
actual_relation="indication",
expected_drug_ids=("a", "b"),
retrieved_drug_ids=("a", "b"),
generated_drug_ids=("a", "d"),
retrieved_section_keys=("chi_dinh", "chi_dinh"),
citation_validity=(True, False),
grounded_claims=(True, False),
expected_patient_fields=(("renal.stage", "G4"),),
actual_patient_fields=(("renal.stage", "G4"),),
expected_safety_facets=("renal", "interaction"),
retrieved_safety_facets=("renal",),
)
]
metrics = summarize_condition_outcomes(rows)
assert metrics["intent_accuracy"] == 1.0
assert metrics["section_correctness"] == 1.0
assert metrics["unsupported_drug_rate"] == 0.5
assert metrics["citation_correctness"] == 0.5
assert metrics["patient_context_extraction_accuracy"] == 1.0
assert metrics["safety_evidence_retrieval_accuracy"] == 0.5