V10.557 收緊 focused reason 回刷 guard

This commit is contained in:
OoO
2026-06-01 15:02:16 +08:00
parent 66f2c50964
commit 7a26bfa388
5 changed files with 36 additions and 6 deletions

View File

@@ -111,6 +111,7 @@ def test_competitor_feeder_persists_all_match_attempt_outcomes():
assert "_fetch_expired_identity_recovery_skus" in source
assert "STALE_IDENTITY_RECOVERY_BLOCK_REASONS" in source
assert "FOCUSED_IDENTITY_TOTAL_PRICE_REASONS" in source
assert "FOCUSED_TOTAL_PRICE_IDENTITY_SQL_REASON_LIST" in source
assert "FOCUSED_TOTAL_PRICE_SAFE_SQL_REASON_LIST" in source
assert r"\+|[xX]\s*\d|[*]\s*\d" in source
assert "湛藍|麋香|海洋|玫瑰|薰衣草" in source
@@ -169,6 +170,7 @@ def test_competitor_feeder_persists_all_match_attempt_outcomes():
assert "COALESCE(la.best_match_score, 0) >= 0.95" in retryable_source
assert "strong_exact_spec_match" in retryable_source
assert "focused_exact_total_price_safe" in retryable_source
assert "FOCUSED_TOTAL_PRICE_IDENTITY_SQL_REASON_LIST" in retryable_source
assert "focused_exact_identity_romand_juicy_lip_tint_2_catalog" not in retryable_source
assert "focused_exact_identity_solone_longlasting_eyeliner" not in retryable_source
assert "focused_exact_identity_summer_eve_full_skin_wash_2pack" not in retryable_source
@@ -266,6 +268,28 @@ def test_competitor_feeder_persists_all_match_attempt_outcomes():
assert "idx_comp_match_attempts_sku_source_time" in migration
def test_competitor_feeder_focused_total_price_reason_gate_requires_named_identity():
from services.competitor_price_feeder import (
FOCUSED_TOTAL_PRICE_IDENTITY_DIAGNOSTIC_REASONS,
FOCUSED_TOTAL_PRICE_SAFE_DIAGNOSTIC_REASONS,
)
assert "focused_exact_total_price_safe" in FOCUSED_TOTAL_PRICE_SAFE_DIAGNOSTIC_REASONS
assert "focused_exact_total_price_safe" not in FOCUSED_TOTAL_PRICE_IDENTITY_DIAGNOSTIC_REASONS
assert (
"focused_exact_identity_pavaruni_20_scent_candle"
in FOCUSED_TOTAL_PRICE_IDENTITY_DIAGNOSTIC_REASONS
)
assert (
"focused_exact_identity_romand_juicy_lip_tint_2_catalog"
not in FOCUSED_TOTAL_PRICE_IDENTITY_DIAGNOSTIC_REASONS
)
assert (
"focused_exact_identity_solone_longlasting_eyeliner"
not in FOCUSED_TOTAL_PRICE_IDENTITY_DIAGNOSTIC_REASONS
)
def test_competitor_feeder_blocks_identity_review_from_auto_price_write():
from types import SimpleNamespace