加入 PChome 單位價比較證據
All checks were successful
CD Pipeline / deploy (push) Successful in 1m19s

This commit is contained in:
OoO
2026-05-20 00:05:18 +08:00
parent 108b05cc8b
commit 124ddc7376
12 changed files with 223 additions and 9 deletions

View File

@@ -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"]

View File

@@ -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

View File

@@ -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

View File

@@ -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