This commit is contained in:
@@ -266,6 +266,25 @@ def test_marketplace_matcher_promotes_nivea_deodorant_spray_identity():
|
||||
assert diagnostics.hard_veto is False
|
||||
|
||||
|
||||
def test_marketplace_matcher_promotes_nivea_deodorant_lotion_noise_variants():
|
||||
from services.marketplace_product_matcher import build_search_terms, score_marketplace_match
|
||||
|
||||
momo_name = "【NIVEA 妮維雅】德國妮維雅 止汗爽身乳液50ml(無印止汗滾珠)"
|
||||
diagnostics = score_marketplace_match(
|
||||
momo_name,
|
||||
"NIVEA 妮維雅 止汗爽身乳液 50ml",
|
||||
momo_price=149,
|
||||
competitor_price=169,
|
||||
)
|
||||
terms = build_search_terms(momo_name, max_terms=5)
|
||||
|
||||
assert diagnostics.score >= 0.76
|
||||
assert diagnostics.hard_veto is False
|
||||
assert terms[0] == "妮維雅 止汗爽身乳液 50ml"
|
||||
assert "德國妮維雅" not in " ".join(terms[:3])
|
||||
assert "無印止汗滾珠" not in " ".join(terms[:3])
|
||||
|
||||
|
||||
def test_marketplace_matcher_promotes_packaging_variant_for_same_nars_powder():
|
||||
from services.marketplace_product_matcher import score_marketplace_match
|
||||
|
||||
@@ -1099,7 +1118,7 @@ def test_marketplace_search_terms_prioritize_precise_primer_identity_phrase():
|
||||
assert "校色" not in " ".join(shu_terms[:3])
|
||||
assert any("水凝光透 妝前防護乳" in term for term in meme_terms[:4])
|
||||
assert "好氣色" not in " ".join(meme_terms[:3])
|
||||
assert eaoron_terms[0] == "eaoron 素顏霜 50ml"
|
||||
assert eaoron_terms[0] == "eaoron 經典素顏霜 50ml"
|
||||
assert "懶人霜" not in " ".join(eaoron_terms[:3])
|
||||
|
||||
|
||||
@@ -1119,7 +1138,7 @@ def test_marketplace_search_terms_prefer_exact_identity_for_nail_foam_and_foot_m
|
||||
max_terms=5,
|
||||
)
|
||||
|
||||
assert opi_terms[0] == "ist31 閃耀保色護甲油 15ml"
|
||||
assert opi_terms[0] == "opi 閃耀保色護甲油 15ml"
|
||||
assert "小銀蓋" not in " ".join(opi_terms[:3])
|
||||
assert arau_terms[0] == "愛樂寶 溫和洗手慕斯 300ml"
|
||||
assert "溫和不乾澀" not in " ".join(arau_terms[:3])
|
||||
@@ -1182,14 +1201,39 @@ def test_marketplace_search_terms_prioritize_exact_identity_for_low_score_fronti
|
||||
"【PERIPERA】雙頭旋轉極細眉筆 0.05g(09灰褐棕)",
|
||||
max_terms=5,
|
||||
)
|
||||
za_classic_terms = build_search_terms(
|
||||
"【Za】官方直營 經典旋轉眉筆(色號任選)",
|
||||
max_terms=5,
|
||||
)
|
||||
kate_refill_terms = build_search_terms(
|
||||
"【KATE 凱婷】3D造型眉彩餅補充芯(眉彩刷、眉餅盒分開販售)",
|
||||
max_terms=5,
|
||||
)
|
||||
peripera_liner_terms = build_search_terms(
|
||||
"【peripera官方直營】速描眼線膠筆_多色任選(極細筆芯 防水抗暈)",
|
||||
max_terms=5,
|
||||
)
|
||||
recipe_box_sunscreen_terms = build_search_terms(
|
||||
"【Recipe Box】Recipe Box多效提亮防曬霜(兒童化妝品/無毒防曬霜/天然彩妝/防曬/提亮)",
|
||||
max_terms=5,
|
||||
)
|
||||
opi_terms = build_search_terms(
|
||||
"【O.P.I】紅蘋果 類光繚指甲油-ISLN25(小銀蓋/如膠似漆2.0系列指彩/美甲彩繪/官方直營)",
|
||||
max_terms=5,
|
||||
)
|
||||
|
||||
assert ludeya_terms[0] == "ludeya 蜂王玫瑰瑰泌霜 60ml"
|
||||
assert "兩入組" not in " ".join(ludeya_terms[:3])
|
||||
assert estee_terms[0] == "雅詩蘭黛 微分子肌底原生露 200ml"
|
||||
assert "櫻花輕盈版" not in " ".join(estee_terms[:3])
|
||||
assert za_palette_terms[0] == "za 立體持色眉彩盤 3.4g"
|
||||
assert za_palette_terms[0] == "za 3d立體持色眉彩盤 3.4g"
|
||||
assert za_pencil_terms[0] == "za 細芯睛彩雙頭眉筆 0.1g"
|
||||
assert peripera_terms[0] == "peripera 雙頭旋轉極細眉筆 09 0.05g"
|
||||
assert za_classic_terms[0] == "za 經典旋轉眉筆"
|
||||
assert kate_refill_terms[0] == "凱婷 3d造型眉彩餅補充芯"
|
||||
assert peripera_liner_terms[0] == "peripera 速描眼線膠筆"
|
||||
assert recipe_box_sunscreen_terms[0] == "recipe box 多效提亮防曬霜"
|
||||
assert opi_terms[0] == "opi 類光繚指甲油 isln25"
|
||||
|
||||
|
||||
def test_batch_compare_top_uses_latest_momo_price_not_revenue(monkeypatch):
|
||||
|
||||
@@ -163,6 +163,26 @@ def test_roi_ai_smoke_and_daily_report_schedules_stay_staggered():
|
||||
assert "schedule.every(6).hours.do(run_action_plan_hygiene_task)" in source
|
||||
|
||||
|
||||
def test_legacy_edm_and_seasonal_promo_schedules_are_opt_in(monkeypatch):
|
||||
run_scheduler = _load_run_scheduler(monkeypatch)
|
||||
source = inspect.getsource(run_scheduler._register_schedules)
|
||||
|
||||
monkeypatch.delenv("MOMO_ENABLE_LEGACY_EDM_SCHEDULE", raising=False)
|
||||
monkeypatch.delenv("MOMO_ENABLE_SEASONAL_PROMO_SCHEDULE", raising=False)
|
||||
assert run_scheduler._legacy_edm_schedule_enabled() is False
|
||||
assert run_scheduler._seasonal_promo_schedule_enabled() is False
|
||||
|
||||
monkeypatch.setenv("MOMO_ENABLE_LEGACY_EDM_SCHEDULE", "true")
|
||||
monkeypatch.setenv("MOMO_ENABLE_SEASONAL_PROMO_SCHEDULE", "1")
|
||||
assert run_scheduler._legacy_edm_schedule_enabled() is True
|
||||
assert run_scheduler._seasonal_promo_schedule_enabled() is True
|
||||
|
||||
assert "if _legacy_edm_schedule_enabled():" in source
|
||||
assert "if not _seasonal_promo_schedule_enabled():" in source
|
||||
assert "MOMO_ENABLE_LEGACY_EDM_SCHEDULE" in Path("run_scheduler.py").read_text()
|
||||
assert "MOMO_ENABLE_SEASONAL_PROMO_SCHEDULE" in Path("run_scheduler.py").read_text()
|
||||
|
||||
|
||||
def test_ai_smoke_daily_summary_refreshes_smoke_before_push(monkeypatch):
|
||||
run_scheduler = _load_run_scheduler(monkeypatch)
|
||||
source = inspect.getsource(run_scheduler.run_ai_smoke_daily_summary_task)
|
||||
|
||||
Reference in New Issue
Block a user