fix: mock

This commit is contained in:
2026-03-13 23:29:55 +08:00
parent b7e973e2b6
commit c72fbc9a14
7 changed files with 165 additions and 21 deletions

View File

@@ -43,6 +43,17 @@ def _ocr_available() -> bool:
return bool(url and key and model)
def _missing_ocr_fields() -> list[str]:
missing: list[str] = []
if not (settings.OCR_API_URL or settings.LLM_API_URL):
missing.append("OCR_API_URL(or LLM_API_URL)")
if not (settings.OCR_API_KEY or settings.LLM_API_KEY):
missing.append("OCR_API_KEY(or LLM_API_KEY)")
if not (settings.OCR_MODEL or settings.LLM_MODEL):
missing.append("OCR_MODEL(or LLM_MODEL)")
return missing
def _llm_available() -> bool:
url, key, model = _llm_config()
return bool(url and key and model)
@@ -54,6 +65,10 @@ async def classify_page(image_path: str) -> tuple[SourceApp, PageType]:
"""Identify the source app and page type of a screenshot."""
if _ocr_available():
return await _classify_via_api(image_path)
if not settings.OCR_ALLOW_MOCK_FALLBACK:
missing = ", ".join(_missing_ocr_fields()) or "unknown"
raise RuntimeError(f"OCR configuration missing: {missing}")
logger.warning("OCR unavailable, falling back to mock classification for image: %s", image_path)
return _classify_mock(image_path)
@@ -63,6 +78,10 @@ async def extract_transaction_fields(
"""Extract structured transaction fields from a screenshot."""
if _ocr_available():
return await _extract_via_api(image_path, source_app, page_type)
if not settings.OCR_ALLOW_MOCK_FALLBACK:
missing = ", ".join(_missing_ocr_fields()) or "unknown"
raise RuntimeError(f"OCR configuration missing: {missing}")
logger.warning("OCR unavailable, falling back to mock extraction for image: %s", image_path)
mock_data = _extract_mock(image_path, source_app, page_type)
return mock_data, json.dumps(mock_data, ensure_ascii=False)