feat: surface disputed extracted values to critic and specialist prompts
This commit is contained in:
@@ -40,3 +40,30 @@ def test_annotate_clusters_writes_disputed_attributes():
|
||||
assert annotate_clusters(clusters) == 1
|
||||
assert clusters[0]["disputed_attributes"][0]["attribute"] == "stud_pack_size"
|
||||
assert "disputed_attributes" not in clusters[1]
|
||||
|
||||
|
||||
def test_slim_clusters_preserves_disputed_attributes():
|
||||
from backend.pipeline._serialize import slim_clusters
|
||||
cluster = {"key": "c1", "assertions": [],
|
||||
"disputed_attributes": [{"attribute": "a", "values": ["1", "2"],
|
||||
"assertion_ids": ["x", "y"]}]}
|
||||
slim = slim_clusters([cluster])[0]
|
||||
assert slim["disputed_attributes"][0]["values"] == ["1", "2"]
|
||||
|
||||
|
||||
def test_find_disputes_handles_none_and_zero_values():
|
||||
# None value/attribute -> skipped; numeric 0 is a real value, not blank
|
||||
assertions = [
|
||||
{"id": "a1", "attribute": "count", "value": 0},
|
||||
{"id": "a2", "attribute": "count", "value": 1},
|
||||
{"id": "a3", "attribute": None, "value": "x"},
|
||||
{"id": "a4", "attribute": "count", "value": None},
|
||||
]
|
||||
disputes = find_disputes(assertions)
|
||||
assert len(disputes) == 1
|
||||
assert disputes[0]["values"] == ["0", "1"]
|
||||
|
||||
|
||||
def test_find_disputes_empty_input():
|
||||
assert find_disputes([]) == []
|
||||
assert annotate_clusters([]) == 0
|
||||
|
||||
Reference in New Issue
Block a user