def test_retrieval_v3_gtin_evidence_is_candidate_only(): from central.app.ai.retrieval_v3 import retrieval_v3_candidates class Corpus: pass corpus = Corpus() corpus.documents = {} corpus.descriptions = {} corpus.positions = {} corpus.children = {} class Index: entries = [] # Empty V2 corpus cannot manufacture an NCM, proving no candidate is invented. assert retrieval_v3_candidates(corpus, Index(), "produto", {"gtin_ncm": "22011000"}) == [] def test_prepare_candidate_set_is_fingerprinted_and_non_decisional(): from central.app.ai.retrieval_v3 import prepare_candidate_set work = type("WorkItem", (), {"task_type": "INVALID_NCM", "dedup_key": "x", "payload": {"description": "Agua mineral"}})() prepared = prepare_candidate_set(work, [("22011000", "AGUAS MINERAIS", 0.9, 0.8, 0.1, 2)], dataset_versions={"ncm": "v1"}) assert prepared["top20_candidate_ncms"][0]["ncm"] == "22011000" assert prepared["input_fingerprint"] assert "selected_ncm" not in prepared def test_product_role_context_is_compact_and_evidence_only(): from central.app.ai.retrieval_v3 import compact_product_role_context result = compact_product_role_context([{"description": "Coca Cola"}, {"description": "coca-cola"}, {"description": "Pepsi"}], limit=2) assert len(result["examples"]) == 2 and result["decision"] is None and result["evidence_only"] is True