File size: 3,089 Bytes
8e5d114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
from tests.e2e_quality import (
    SYNTHETIC_FAILURE_SCORE,
    SYNTHETIC_WARNING_SCORE_CAP,
    detect_synthetic_dimension_values,
    grade_data_quality,
)


def test_detect_synthetic_route_number_values():
    sample_data = """
Table: SHIPMENTS
Columns: ROUTE_NAME, SHIPMENTS
  {'ROUTE_NAME': 'North Corridor Route 31', 'SHIPMENTS': 120}
  {'ROUTE_NAME': 'Central Express Route 21', 'SHIPMENTS': 98}
  {'ROUTE_NAME': 'Central Express Route 31', 'SHIPMENTS': 87}
"""

    result = detect_synthetic_dimension_values(sample_data)

    assert result["fail"] is False
    assert result["warn"] is True
    assert result["count"] == 3
    assert result["occurrences"] == 3
    assert "North Corridor Route 31" in result["examples"]


def test_grade_data_quality_caps_low_volume_synthetic_numeric_suffixes(monkeypatch):
    monkeypatch.setattr(
        "tests.e2e_quality._call_grader",
        lambda prompt: {
            "score": 96,
            "reasoning": "Otherwise solid data.",
            "strengths": ["Good scale"],
            "weaknesses": [],
        },
    )
    sample_data = """
Table: ROUTES
Columns: ROUTE_NAME
  {'ROUTE_NAME': 'North Corridor Route 31'}
"""

    result = grade_data_quality(
        company="Maersk",
        vertical="Transportation & Logistics",
        line="Shipping",
        function="Finance",
        model_tml="model: {}",
        sample_data=sample_data,
    )

    assert result["score"] == SYNTHETIC_WARNING_SCORE_CAP
    assert result["synthetic_dimension_warning"]["warn"] is True
    assert "Synthetic numeric-suffix dimension values detected at low volume" in result["weaknesses"]
    assert "Capped at" in result["reasoning"]


def test_grade_data_quality_fails_repeated_synthetic_numeric_suffixes():
    sample_data = "\n".join(
        [
            "Table: ROUTES",
            "Columns: ROUTE_NAME",
            *[
                "  {'ROUTE_NAME': 'North Corridor Route 31'}"
                for _ in range(10)
            ],
        ]
    )

    result = grade_data_quality(
        company="Maersk",
        vertical="Transportation & Logistics",
        line="Shipping",
        function="Finance",
        model_tml="model: {}",
        sample_data=sample_data,
    )

    assert result["score"] == SYNTHETIC_FAILURE_SCORE
    assert result["synthetic_dimension_failure"]["fail"] is True
    assert result["synthetic_dimension_failure"]["occurrences"] == 10
    assert "North Corridor Route 31" in result["weaknesses"]
    assert "Automatic data-quality failure" in result["reasoning"]


def test_detect_synthetic_route_gate_ignores_natural_named_values_without_suffixes():
    sample_data = """
Table: SHIPMENTS
Columns: ROUTE_NAME, CUSTOMER_NAME
  {'ROUTE_NAME': 'Pacific Northwest Corridor', 'CUSTOMER_NAME': 'Acme Logistics'}
  {'ROUTE_NAME': 'Atlanta to Savannah Intermodal', 'CUSTOMER_NAME': 'Northstar Foods'}
"""

    result = detect_synthetic_dimension_values(sample_data)

    assert result == {
        "fail": False,
        "warn": False,
        "examples": [],
        "count": 0,
        "occurrences": 0,
    }