This commit is contained in:
@@ -92,8 +92,12 @@ def test_dashboard_match_status_explains_unit_comparable_bundle():
|
||||
"attempt_status": "unit_comparable",
|
||||
"best_match_score": 0.74,
|
||||
"error_message": "score=0.74; reasons=bundle_offer_conflict,unit_comparable",
|
||||
"unit_comparison": {
|
||||
"comparable": True,
|
||||
"summary": "MOMO $14.99/ml vs PChome $16.98/ml (-11.7%)",
|
||||
},
|
||||
})
|
||||
|
||||
assert status["label"] == "需單位價比較"
|
||||
assert status["tone"] == "watch"
|
||||
assert "不可直接比總價" in status["summary"]
|
||||
assert "已換算單位價" in status["summary"]
|
||||
|
||||
@@ -46,6 +46,8 @@ def test_competitor_ppt_results_keep_pending_diagnostics_in_export():
|
||||
assert "\"found\": found" in source
|
||||
assert "\"match_status\"" in source
|
||||
assert "\"candidate_count\"" in source
|
||||
assert "\"unit_comparison\"" in source
|
||||
assert "build_unit_price_comparison" in source
|
||||
assert "(vc.pchome_price IS NULL)" in source
|
||||
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ def test_competitor_feeder_persists_all_match_attempt_outcomes():
|
||||
assert "refresh_known_identity" in source
|
||||
assert 'attempt_status="unit_comparable"' in source
|
||||
assert 'attempt_status="refresh_unit_comparable"' in source
|
||||
assert "mode={getattr(diagnostics, 'comparison_mode'" in source
|
||||
assert 'PCHOME_FEEDER_TIMEOUT", "12"' in source
|
||||
assert "PChomeCrawler(timeout=REQUEST_TIMEOUT" in source
|
||||
|
||||
|
||||
@@ -109,6 +109,25 @@ def test_marketplace_matcher_marks_bundle_single_as_unit_comparable_not_exact():
|
||||
assert "comparison_unit_comparable" in diagnostics.tags
|
||||
|
||||
|
||||
def test_unit_price_comparison_builds_normalized_evidence():
|
||||
from services.marketplace_product_matcher import build_unit_price_comparison
|
||||
|
||||
comparison = build_unit_price_comparison(
|
||||
"理膚寶水 B5 全面修復霜 40ml x2 超值組",
|
||||
"理膚寶水 全面修復霜 B5 40ml",
|
||||
momo_price=1199,
|
||||
competitor_price=679,
|
||||
)
|
||||
|
||||
assert comparison["comparable"] is True
|
||||
assert comparison["unit_label"] == "ml"
|
||||
assert comparison["momo_total_quantity"] == 80
|
||||
assert comparison["competitor_total_quantity"] == 40
|
||||
assert comparison["momo_unit_price"] == 14.9875
|
||||
assert comparison["competitor_unit_price"] == 16.975
|
||||
assert comparison["unit_gap_pct"] < 0
|
||||
|
||||
|
||||
def test_marketplace_matcher_does_not_unit_compare_multi_component_set():
|
||||
from services.marketplace_product_matcher import score_marketplace_match
|
||||
|
||||
@@ -123,6 +142,14 @@ def test_marketplace_matcher_does_not_unit_compare_multi_component_set():
|
||||
assert diagnostics.comparison_mode == "not_comparable"
|
||||
assert "unit_comparable" not in diagnostics.reasons
|
||||
|
||||
comparison = score_marketplace_match(
|
||||
"【蘭蔻】官方直營 玫瑰霜60ml+玫瑰精露150ml",
|
||||
"【蘭蔻】絕對完美玫瑰霜 60ml",
|
||||
momo_price=18765,
|
||||
competitor_price=5349,
|
||||
)
|
||||
assert comparison.comparison_mode == "not_comparable"
|
||||
|
||||
|
||||
def test_marketplace_matcher_does_not_promote_wide_price_refill_candidate():
|
||||
from services.marketplace_product_matcher import score_marketplace_match
|
||||
|
||||
Reference in New Issue
Block a user