import asyncio from app.agents.runtime import AgentInvocationResult from app.services import extraction_accuracy from app.services.extraction_accuracy import judge_extraction_edit def test_edit_judgement_uses_llm_result(monkeypatch) -> None: class FakeRuntime: enabled = True async def invoke(self, **kwargs): return AgentInvocationResult( status="success", output='{"is_extraction_error": false, "reason": "仅调整显示格式", "confidence": 0.96}', model="test-model", ) monkeypatch.setattr(extraction_accuracy, "get_agent_runtime", lambda: FakeRuntime()) result = asyncio.run( judge_extraction_edit( field_name="检测地点", original_value="12煤、22煤采掘工作面", edited_value="12煤和22煤采掘工作面", extraction_id="test", ) ) assert result.is_extraction_error is False assert result.source == "llm" assert result.confidence == 0.96 def test_edit_judgement_fallback_ignores_format_only_change(monkeypatch) -> None: class DisabledRuntime: enabled = False monkeypatch.setattr(extraction_accuracy, "get_agent_runtime", lambda: DisabledRuntime()) result = asyncio.run( judge_extraction_edit( field_name="检测项目", original_value="总粉尘;粉尘分散度;游离二氧化硅", edited_value="总粉尘、粉尘分散度、游离二氧化硅", extraction_id="test", ) ) assert result.is_extraction_error is False assert result.source == "fallback"