V10.570 補 PChome 身份報價證據契約
This commit is contained in:
@@ -202,6 +202,32 @@ def test_competitor_review_reasons_prefer_json_payload_labels():
|
||||
"match_type": "no_match",
|
||||
"price_basis": "none",
|
||||
"alert_tier": "suppress",
|
||||
"identity_evidence": {
|
||||
"version": "identity_evidence_v1",
|
||||
"brand": {"momo": ["mac"], "competitor": ["mac"], "shared": ["mac"]},
|
||||
"product_type": {"momo": "唇膏", "competitor": "唇膏", "matched": True},
|
||||
"identity_anchor": "macximal 柔霧唇膏",
|
||||
"shared_model_tokens": [],
|
||||
"specs": {
|
||||
"momo": {"volumes_ml": [], "weights_g": [], "dosages_mg": [], "counts": [], "total_piece_count": None},
|
||||
"competitor": {"volumes_ml": [], "weights_g": [], "dosages_mg": [], "counts": [], "total_piece_count": None},
|
||||
"mismatches": [],
|
||||
},
|
||||
"variant_guardrails": {
|
||||
"hard_veto": True,
|
||||
"conflict_reasons": ["makeup_finish_conflict"],
|
||||
"catalog_count_omission": False,
|
||||
},
|
||||
},
|
||||
"offer_evidence": {
|
||||
"version": "offer_evidence_v1",
|
||||
"price_basis": "none",
|
||||
"alert_tier": "suppress",
|
||||
"momo_price": 990,
|
||||
"competitor_price": 880,
|
||||
"gap_pct": 12.5,
|
||||
"price_is_identity_evidence": False,
|
||||
},
|
||||
"reasons": [
|
||||
"makeup_finish_conflict",
|
||||
"nail_tool_function_conflict",
|
||||
@@ -215,6 +241,9 @@ def test_competitor_review_reasons_prefer_json_payload_labels():
|
||||
assert item["price_basis_label"] == "不可比"
|
||||
assert item["alert_tier_label"] == "不告警"
|
||||
assert item["diagnostic_reason_text"] == "妝效質地不同、工具功能不同、除毛刀品線不同"
|
||||
assert item["identity_evidence_summary"].startswith("品牌 mac")
|
||||
assert item["offer_evidence"]["price_is_identity_evidence"] is False
|
||||
assert item["difference_highlights"][0]["dimension"] == "妝效/質地不同"
|
||||
assert [reason["code"] for reason in item["diagnostic_reasons"]] == [
|
||||
"makeup_finish_conflict",
|
||||
"nail_tool_function_conflict",
|
||||
@@ -227,9 +256,17 @@ def test_competitor_review_reasons_prefer_json_payload_labels():
|
||||
assert envelope["guardrails"]["can_auto_execute"] is False
|
||||
assert envelope["guardrails"]["data_quality"] == "partial"
|
||||
assert envelope["guardrails"]["match_type"] == "no_match"
|
||||
assert envelope["guardrails"]["identity_evidence_version"] == "identity_evidence_v1"
|
||||
assert envelope["guardrails"]["price_is_identity_evidence"] is False
|
||||
assert envelope["identity_evidence"]["brand"]["shared"] == ["mac"]
|
||||
assert envelope["offer_evidence"]["gap_pct"] == 12.5
|
||||
assert envelope["difference_highlights"][0]["dimension"] == "妝效/質地不同"
|
||||
assert envelope["recommended_action"]["requires_hitl"] is True
|
||||
assert envelope["recommended_action"]["action"] == "verify_or_reject_identity"
|
||||
assert any(evidence["metric"] == "reasons" for evidence in envelope["evidence"])
|
||||
assert any(evidence["metric"] == "identity_evidence" for evidence in envelope["evidence"])
|
||||
assert any(evidence["metric"] == "offer_evidence" for evidence in envelope["evidence"])
|
||||
assert any(evidence["metric"] == "difference_highlights" for evidence in envelope["evidence"])
|
||||
|
||||
|
||||
def test_rescore_accepted_review_item_has_actionable_decision_envelope():
|
||||
|
||||
Reference in New Issue
Block a user