Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| from backend.core.rag_store import TIER_MASTER, TIER_REFERENCE, Chunk, get_rag_store | |
| def test_master_not_scrubbed_reference_scrubbed(): | |
| store = get_rag_store() | |
| store.ingest_document( | |
| "t1", "master:x", | |
| [Chunk(text="Roof covering is slate at SW1A 1AA.", section_id="D2", tier=TIER_MASTER)], | |
| tier=TIER_MASTER, | |
| ) | |
| store.ingest_document( | |
| "t1", "ref:y", | |
| [Chunk(text="Roof covering is slate at SW1A 1AA.", tier=TIER_REFERENCE)], | |
| tier=TIER_REFERENCE, | |
| ) | |
| master_hits = store.search("t1", "roof slate", tier=TIER_MASTER, top_k=1) | |
| assert "SW1A 1AA" in master_hits[0].text # master kept verbatim | |
| ref_hits = store.search("t1", "roof slate", tier=TIER_REFERENCE, top_k=1) | |
| assert "SW1A 1AA" not in ref_hits[0].text # reference was scrubbed at ingest | |
| def test_master_ranked_ahead_of_reference(): | |
| store = get_rag_store() | |
| store.ingest_document( | |
| "t2", "m", [Chunk(text="central heating gas boiler", section_id="G4", tier=TIER_MASTER)], | |
| tier=TIER_MASTER, | |
| ) | |
| store.ingest_document( | |
| "t2", "r", [Chunk(text="central heating gas boiler", tier=TIER_REFERENCE)], | |
| tier=TIER_REFERENCE, | |
| ) | |
| hits = store.search("t2", "central heating gas boiler", top_k=2) | |
| assert hits[0].tier == TIER_MASTER | |
| def test_counts_and_clear(): | |
| store = get_rag_store() | |
| store.ingest_document( | |
| "t3", "m", [Chunk(text="alpha", tier=TIER_MASTER)], tier=TIER_MASTER | |
| ) | |
| assert store.count("t3", TIER_MASTER) == 1 | |
| store.clear_tier("t3", TIER_MASTER) | |
| assert store.count("t3", TIER_MASTER) == 0 | |
| def test_search_for_generation_never_returns_reference_tier(): | |
| """Past reports must not enter the mapping pipeline.""" | |
| store = get_rag_store() | |
| store.ingest_document( | |
| "t5", | |
| "master:m", | |
| [Chunk(text="Chimney stack inspected from ground level.", section_id="E1", tier=TIER_MASTER)], | |
| tier=TIER_MASTER, | |
| ) | |
| store.ingest_document( | |
| "t5", | |
| "ref:r", | |
| [Chunk(text="Previous client chimney at 14 Oak Street had severe cracking.", tier=TIER_REFERENCE)], | |
| tier=TIER_REFERENCE, | |
| ) | |
| hits = store.search_for_generation("t5", "chimney stack", top_k=5) | |
| assert len(hits) >= 1 | |
| assert all(h.tier == TIER_MASTER for h in hits) | |
| assert all("Oak Street" not in h.text for h in hits) | |
| def test_unscrubbed_reference_excluded_from_search(): | |
| """Reference chunks with is_scrubbed=False must never appear in search results.""" | |
| store = get_rag_store() | |
| store.ingest_document( | |
| "t4", | |
| "ref:ok", | |
| [Chunk(text="Roof covering comprises slate tiles.", tier=TIER_REFERENCE)], | |
| tier=TIER_REFERENCE, | |
| ) | |
| ti = store._get("t4", TIER_REFERENCE) | |
| ti.meta[0]["is_scrubbed"] = False | |
| ti.meta[0]["text"] = "Secret client data at SW1A 1AA." | |
| hits = store.search("t4", "secret client", tier=TIER_REFERENCE, top_k=5) | |
| assert hits == [] | |