File size: 1,189 Bytes
db4ba8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import pytest

from src.ai.nodes.risk import risk_assessment_node


@pytest.mark.asyncio
async def test_risk_assessment_uses_shared_rejection_predictor(monkeypatch):
    calls = []

    def fake_predict(features: dict) -> float:
        calls.append(features)
        return 0.42

    monkeypatch.setattr(
        "src.ai.nodes.risk.rejection_predictor.predict_proba",
        fake_predict,
    )

    result = await risk_assessment_node(
        {
            "batch_id": "batch-1",
            "combined_data": {
                "importer_name": "PT Demo",
                "importer_npwp": "012345678999000",
                "total_packages": 10,
                "gross_weight": 500,
                "cif_value": 15000,
                "currency": "USD",
            },
            "validation_results": [{"severity": "PASS"}],
            "documents": [{"quality_score": 0.95}],
            "needs_human_review": False,
        }
    )

    assert calls
    assert calls[0]["doc_quality_score"] == 0.95
    assert calls[0]["cif_value_usd"] == 15000.0
    assert result["_rejection_prob"] == 0.42
    assert result["risk_level"] == "HIGH"
    assert result["needs_human_review"] is True