Spaces:
Sleeping
Sleeping
File size: 2,205 Bytes
5b7955a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | """
Full end-to-end smoke test.
Run from policylens\ root: python test_e2e.py
"""
from rag_engine.ingestion.cleaner import DocumentCleaner
from rag_engine.chunking.clause_chunker import ClauseChunker
from rag_engine.embeddings.embedding_factory import get_embedder
from rag_engine.vector_store.store_factory import get_vector_store
from rag_engine.services.query_service import QueryService
POLICY_ID = "E2E-TEST-001"
SAMPLE_TEXT = """
## SECTION 1 - DEFINITIONS
1.1 Insured means the person named in the Schedule.
1.2 Deductible means the first amount of any claim payable.
## SECTION 2 - COVERAGE
2.1 We will pay for loss caused by fire, smoke, or explosion.
2.2 Coverage limit for fire damage is $50,000 per event.
## SECTION 3 - EXCLUSIONS
3.1 This policy does not cover flood or surface water damage.
3.2 This policy does not cover earthquake or earth movement.
## SECTION 4 - SCHEDULE OF DEDUCTIBLES
| Event | Deductible |
|--------|------------|
| Fire | $500 |
| Theft | $1,000 |
"""
print("\n=== STEP 1: INGESTION ===")
cleaner = DocumentCleaner()
chunker = ClauseChunker()
embedder = get_embedder()
store = get_vector_store()
if store.policy_exists(POLICY_ID):
store.delete_policy(POLICY_ID)
print(f"Deleted existing {POLICY_ID}")
clean_text = cleaner.clean(SAMPLE_TEXT)
chunks = chunker.chunk(clean_text, POLICY_ID, "e2e_test.pdf")
texts = [t for t, _ in chunks]
metas = [m.model_dump() for _, m in chunks]
embeddings = embedder.embed_documents(texts)
store_tuples = list(zip(texts, embeddings, metas))
store.add_chunks(store_tuples)
count = store.get_policy_chunk_count(POLICY_ID)
print(f"Ingested {count} chunks for {POLICY_ID}")
assert count > 0, "No chunks stored!"
print("\n=== STEP 2: QUERY ===")
service = QueryService()
questions = [
"Is flood damage covered?",
"What is the fire deductible?",
"What is the coverage limit for fire?"
]
for q in questions:
print(f"\nQ: {q}")
result = service.query(q, POLICY_ID)
print(f"A: {result['answer']}")
print(f"Sources: {result['source_count']}")
print("\n=== STEP 3: CLEANUP ===")
store.delete_policy(POLICY_ID)
print(f"Deleted {POLICY_ID}")
print("\n✅ END-TO-END TEST COMPLETE")
|