Spaces:
Runtime error
Runtime error
| """Interference-level prompt routing in reference_mapper.""" | |
| from __future__ import annotations | |
| from backend.core.reference_mapper import ( | |
| build_interference_messages, | |
| map_reference_paragraph, | |
| select_mapping_prompt, | |
| ) | |
| from backend.prompts.mapping_prompt import ( | |
| MAPPING_SYSTEM_BASE_MAXIMUM, | |
| MAPPING_SYSTEM_BASE_MEDIUM, | |
| MAPPING_SYSTEM_BASE_MINIMUM, | |
| ) | |
| from backend.models.schema import TemplateSchema | |
| from backend.prompts.maximum_compose_prompt import MAXIMUM_SYSTEM, build_maximum_messages | |
| from backend.prompts.medium_expand_prompt import MEDIUM_SYSTEM, build_medium_messages | |
| from backend.prompts.minimum_weave_prompt import MINIMUM_SYSTEM, build_minimum_messages | |
| def test_select_mapping_prompt_routes_tier_bases(): | |
| assert select_mapping_prompt("minimum") is MAPPING_SYSTEM_BASE_MINIMUM | |
| assert select_mapping_prompt("medium") is MAPPING_SYSTEM_BASE_MEDIUM | |
| assert select_mapping_prompt("maximum") is MAPPING_SYSTEM_BASE_MAXIMUM | |
| assert select_mapping_prompt("bogus") is MAPPING_SYSTEM_BASE_MAXIMUM | |
| assert select_mapping_prompt(None) is MAPPING_SYSTEM_BASE_MAXIMUM # type: ignore[arg-type] | |
| def test_build_minimum_messages_signature_and_strategy(): | |
| msgs = build_minimum_messages("slate slipped", "The roof comprises slate tiles.") | |
| assert msgs[0]["role"] == "system" | |
| assert msgs[1]["role"] == "user" | |
| assert "zero-inference data mapping engine" in msgs[0]["content"] | |
| assert "DO NOT ADD NEW SENTENCES" in msgs[0]["content"] | |
| assert "SECTION:" in msgs[1]["content"] | |
| assert "INPUT 1: PAST-REPORT SCAFFOLD" in msgs[1]["content"] | |
| assert "INPUT 2: CURRENT INSPECTION NOTES" in msgs[1]["content"] | |
| assert "* slate slipped" in msgs[1]["content"] | |
| def test_build_medium_messages_signature_and_strategy(): | |
| msgs = build_medium_messages("det to DPC, rep reqd", "The walls were inspected.") | |
| assert "professional technical copyeditor" in msgs[0]["content"] | |
| assert "ABSOLUTE HISTORICAL GROUNDING" in msgs[0]["content"] | |
| assert "PROOFREAD & ENHANCE TECHNICAL DEPTH" in msgs[0]["content"] | |
| assert "INPUT 2: CURRENT INSPECTION NOTES" in msgs[1]["content"] | |
| assert "* det to DPC, rep reqd" in msgs[1]["content"] | |
| def test_build_maximum_messages_signature_and_strategy(): | |
| msgs = build_maximum_messages("asbestos noted", "The ceiling was inspected.") | |
| assert "expert UK Chartered Building Surveyor" in msgs[0]["content"] | |
| assert "UK_PROPERTY_SURVEYING_DOMAIN_KNOWLEDGE" in msgs[0]["content"] | |
| assert "INTEGRATED NARRATIVE DRAFTING" in msgs[0]["content"] | |
| assert "INPUT 2: CURRENT INSPECTION NOTES" in msgs[1]["content"] | |
| assert "* asbestos noted" in msgs[1]["content"] | |
| def test_all_tiers_share_rics_domain_rules(): | |
| for system in (MINIMUM_SYSTEM, MEDIUM_SYSTEM, MAXIMUM_SYSTEM): | |
| assert '"1", "2", "3", "NI", "NA"' in system | |
| assert "[AMBIGUOUS:" in system | |
| def test_build_interference_messages_routes_by_level(): | |
| baseline = "The roof comprises slate tiles." | |
| notes = ["slate slipped"] | |
| schema = TemplateSchema() | |
| min_msgs = build_interference_messages( | |
| "minimum", observations=notes, baseline=baseline, schema=schema | |
| ) | |
| med_msgs = build_interference_messages( | |
| "medium", observations=notes, baseline=baseline, schema=schema | |
| ) | |
| max_msgs = build_interference_messages( | |
| "maximum", observations=notes, baseline=baseline, schema=schema | |
| ) | |
| assert "UPLOADED USER PAST REPORTS" in min_msgs[0]["content"] | |
| assert MAPPING_SYSTEM_BASE_MINIMUM.strip() in min_msgs[0]["content"] | |
| assert "ABSOLUTE HISTORICAL GROUNDING" in med_msgs[0]["content"] | |
| assert MAPPING_SYSTEM_BASE_MEDIUM.strip() in med_msgs[0]["content"] | |
| assert "INTEGRATED NARRATIVE DRAFTING" in max_msgs[0]["content"] | |
| assert MAPPING_SYSTEM_BASE_MAXIMUM.strip() in max_msgs[0]["content"] | |
| assert min_msgs[0]["content"] != med_msgs[0]["content"] != max_msgs[0]["content"] | |
| def test_build_interference_messages_unknown_defaults_to_maximum(): | |
| explicit = build_interference_messages( | |
| "maximum", | |
| observations=["x"], | |
| baseline="baseline prose.", | |
| schema=TemplateSchema(), | |
| ) | |
| unknown = build_interference_messages( | |
| "bogus", | |
| observations=["x"], | |
| baseline="baseline prose.", | |
| schema=TemplateSchema(), | |
| ) | |
| assert unknown[0]["content"] == explicit[0]["content"] | |
| assert unknown[1]["content"] == explicit[1]["content"] | |
| def test_map_reference_paragraph_branches_on_level(monkeypatch): | |
| captured: list[str] = [] | |
| def fake_build(level, **kwargs): | |
| captured.append(str(level)) | |
| return [{"role": "system", "content": "sys"}, {"role": "user", "content": "user"}] | |
| monkeypatch.setattr( | |
| "backend.core.reference_mapper.build_interference_messages", | |
| fake_build, | |
| ) | |
| monkeypatch.setattr( | |
| "backend.core.reference_mapper.map_inplace_baseline", | |
| lambda *args, **kwargs: kwargs.get("messages") and "ok" or "fail", | |
| ) | |
| schema = TemplateSchema() | |
| baseline = "The chimney was inspected." | |
| notes = ["crack noted"] | |
| map_reference_paragraph(baseline, notes, schema, "minimum") | |
| map_reference_paragraph(baseline, notes, schema, "medium") | |
| map_reference_paragraph(baseline, notes, schema, "maximum") | |
| assert captured == ["minimum", "medium", "maximum"] | |