Explain protected PChome match conflicts
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s

This commit is contained in:
OoO
2026-05-24 23:39:48 +08:00
parent bc48926cc5
commit b297491efe
7 changed files with 93 additions and 3 deletions

View File

@@ -220,6 +220,42 @@ def test_rescore_accepted_review_item_has_actionable_decision_envelope():
assert any(evidence["metric"] == "candidate_gap_pct" for evidence in envelope["evidence"])
def test_protected_existing_match_envelope_explains_candidate_conflict():
from services.competitor_intel_repository import _format_competitor_review_item
item = _format_competitor_review_item({
"sku": "14338675",
"name": "【Relove】胺基酸私密潔淨精華凝露120ml",
"momo_price": 399,
"attempt_status": "protected_existing_match",
"candidate_count": 2,
"best_competitor_product_id": "QEAE1O-A900A6DRS",
"best_competitor_product_name": "RELOVE胺基酸私密清潔凝露120ml",
"best_competitor_price": 329,
"best_match_score": 0.817,
"match_diagnostic_json": {
"match_type": "exact",
"price_basis": "total_price",
"alert_tier": "identity_review",
"reasons": ["strong_exact_spec_match", "spec_name_alignment"],
},
"error_message": (
"existing_match_conflict;existing_id=QEAE1O-A900A6DNN;"
"incoming_id=QEAE1O-A900A6DRS;existing_score=0.766;incoming_score=0.817"
),
})
envelope = item["decision_envelope"]
conflict = envelope["expected_impact"]["existing_match_conflict"]
assert item["existing_match_conflict"]["score_delta"] == 0.051
assert envelope["recommended_action"]["action"] == "compare_existing_identity"
assert envelope["severity"] == "P2"
assert envelope["guardrails"]["existing_match_protected"] is True
assert conflict["existing_product_id"] == "QEAE1O-A900A6DNN"
assert conflict["incoming_product_id"] == "QEAE1O-A900A6DRS"
assert any(evidence["metric"] == "existing_match_conflict" for evidence in envelope["evidence"])
def test_review_decision_brief_is_shared_by_openclaw_and_ppt():
from services.competitor_intel_repository import (
_format_competitor_review_item,