32 lines
1.7 KiB
Python
32 lines
1.7 KiB
Python
def test_canonical_identity_excludes_tenant_fiscal_context():
|
|
from central.app.ai.kb_consolidation import canonical_product_id
|
|
|
|
a = canonical_product_id({"gtin": "7891234567895", "ncm": "22011000", "database": "A"})
|
|
b = canonical_product_id({"gtin": "7891234567895", "ncm": "22019000", "database": "B"})
|
|
assert a == b == "GTIN:7891234567895"
|
|
|
|
|
|
def test_conflicts_are_conservative():
|
|
from central.app.ai.kb_consolidation import NCM_CONFLICT, PACKAGING_VARIATION, classify_conflict
|
|
|
|
assert classify_conflict([
|
|
{"gtin": "7891234567895", "ncm": "22011000", "normalized_description": "AGUA MINERAL", "package_quantity": "500"},
|
|
{"gtin": "7891234567895", "ncm": "22019000", "normalized_description": "AGUA MINERAL", "package_quantity": "500"},
|
|
]) == NCM_CONFLICT
|
|
assert classify_conflict([
|
|
{"gtin": "7891234567895", "ncm": "22011000", "normalized_description": "AGUA MINERAL", "package_quantity": "500"},
|
|
{"gtin": "7891234567895", "ncm": "22011000", "normalized_description": "AGUA MINERAL", "package_quantity": "1L"},
|
|
]) == PACKAGING_VARIATION
|
|
|
|
|
|
def test_payload_audit_reports_observable_coverage():
|
|
from central.app.ai.kb_consolidation import audit_payload
|
|
|
|
report = audit_payload({"products": [
|
|
{"gtin": "7891234567895", "ncm": "22011000", "normalized_description": "AGUA", "observations": [{"database": "A"}]},
|
|
{"gtin": "7891234567895", "ncm": "22019000", "normalized_description": "AGUA", "observations": [{"database": "B"}]},
|
|
]}, historical_conflicts=163)
|
|
assert report["historical_conflicts_reported"] == 163
|
|
assert report["observable_conflicts_audited"] == 1
|
|
assert report["unobservable_historical_conflicts"] == 162
|