test_extraction_accuracy.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import asyncio
  2. from app.agents.runtime import AgentInvocationResult
  3. from app.services import extraction_accuracy
  4. from app.services.extraction_accuracy import judge_extraction_edit
  5. def test_edit_judgement_uses_llm_result(monkeypatch) -> None:
  6. class FakeRuntime:
  7. enabled = True
  8. async def invoke(self, **kwargs):
  9. return AgentInvocationResult(
  10. status="success",
  11. output='{"is_extraction_error": false, "reason": "仅调整显示格式", "confidence": 0.96}',
  12. model="test-model",
  13. )
  14. monkeypatch.setattr(extraction_accuracy, "get_agent_runtime", lambda: FakeRuntime())
  15. result = asyncio.run(
  16. judge_extraction_edit(
  17. field_name="检测地点",
  18. original_value="12煤、22煤采掘工作面",
  19. edited_value="12煤和22煤采掘工作面",
  20. extraction_id="test",
  21. )
  22. )
  23. assert result.is_extraction_error is False
  24. assert result.source == "llm"
  25. assert result.confidence == 0.96
  26. def test_edit_judgement_fallback_ignores_format_only_change(monkeypatch) -> None:
  27. class DisabledRuntime:
  28. enabled = False
  29. monkeypatch.setattr(extraction_accuracy, "get_agent_runtime", lambda: DisabledRuntime())
  30. result = asyncio.run(
  31. judge_extraction_edit(
  32. field_name="检测项目",
  33. original_value="总粉尘;粉尘分散度;游离二氧化硅",
  34. edited_value="总粉尘、粉尘分散度、游离二氧化硅",
  35. extraction_id="test",
  36. )
  37. )
  38. assert result.is_extraction_error is False
  39. assert result.source == "fallback"