Wire the guarded conversational RAG answer layer end-to-end
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from ingestion.entities.catalog import build_entities
|
||||
|
||||
DATA = Path(__file__).parents[1] / "data"
|
||||
PDF = DATA / "raw/duoc-thu-quoc-gia-viet-nam-2018.pdf"
|
||||
MONOGRAPHS = DATA / "processed/monographs.jsonl"
|
||||
|
||||
needs_source = pytest.mark.skipif(
|
||||
not PDF.exists() or not MONOGRAPHS.exists(),
|
||||
reason="source corpus artifacts are not available",
|
||||
)
|
||||
|
||||
|
||||
@needs_source
|
||||
def test_verified_entity_catalog_maps_every_explicit_see_alias():
|
||||
payload = build_entities(MONOGRAPHS, PDF)
|
||||
stats = payload["stats"]
|
||||
assert stats["entity_count"] == 684
|
||||
assert stats["back_index_see_relations"] == 344
|
||||
assert stats["back_index_aliases_mapped"] == 344
|
||||
assert stats["back_index_aliases_unresolved"] == 0
|
||||
assert stats["back_index_aliases_ambiguous"] == 0
|
||||
assert stats["trade_name_sections"] == 492
|
||||
|
||||
|
||||
@needs_source
|
||||
def test_common_parenthesized_names_are_emitted_as_aliases():
|
||||
payload = build_entities(MONOGRAPHS, PDF)
|
||||
entities = {item["drug_id"]: item for item in payload["entities"]}
|
||||
aliases = {
|
||||
drug_id: {alias.casefold() for alias in entity["aliases"]}
|
||||
for drug_id, entity in entities.items()
|
||||
}
|
||||
assert "paracetamol" in aliases["paracetamol_acetaminophen"]
|
||||
assert "acetaminophen" in aliases["paracetamol_acetaminophen"]
|
||||
assert "aspirin" in aliases["acid_acetylsalicylic_aspirin"]
|
||||
assert "oresol" in aliases["thuoc_uong_bu_nuoc_va_ien_giai"]
|
||||
Reference in New Issue
Block a user