Spaces:
Sleeping
Sleeping
| from pathlib import Path | |
| from app.config import Settings | |
| from app.services.deepseek_llm import DeepSeekLLM | |
| def make_settings(tmp_path: Path) -> Settings: | |
| return Settings( | |
| app_name="BitCheck Document Verification API", | |
| version="1.0.0", | |
| upload_dir=tmp_path / "uploads", | |
| output_dir=tmp_path / "outputs", | |
| max_upload_mb=20, | |
| max_pdf_pages=5, | |
| deepseek_api_key=None, | |
| deepseek_base_url="https://api.deepseek.com", | |
| deepseek_model="deepseek-chat", | |
| log_level="INFO", | |
| ) | |
| def test_json_parser_handles_markdown_wrapped_json(tmp_path: Path) -> None: | |
| content = """ | |
| ```json | |
| { | |
| "document_type": "certificate", | |
| "fraud_risk_score": 0.22, | |
| "ai_generated_text_likelihood": 0.41, | |
| "summary": "Risk signals are limited.", | |
| "external_verification_required": true | |
| } | |
| ``` | |
| """ | |
| parsed, warnings = DeepSeekLLM(make_settings(tmp_path)).parse_json_response(content) | |
| assert warnings == [] | |
| assert parsed["document_type"] == "certificate" | |
| assert parsed["fraud_risk_score"] == 0.22 | |
| assert parsed["ai_generated_text_likelihood"] == 0.41 | |
| assert parsed["summary"] == "Risk signals are limited." | |
| assert parsed["external_verification_required"] is True | |
| def test_json_parser_returns_safe_fallback_for_invalid_json(tmp_path: Path) -> None: | |
| parsed, warnings = DeepSeekLLM(make_settings(tmp_path)).parse_json_response("not json") | |
| assert parsed["external_verification_required"] is True | |
| assert parsed["fraud_risk_score"] == 0.0 | |
| assert warnings == ["DeepSeek returned invalid JSON; safe fallback was used."] | |