from app.config.config_loader import get_signal_weights from app.core.factor_scoring import FactorScorer def test_factor_scorer_eliminates_zero_weight_factor(): scorer = FactorScorer(weights={"vp_fly_1h_current": 0}) delta = scorer.delta("vp_fly_1h_current", 8, evidence="unit") assert delta == 0 assert scorer.summary()["items"][0]["source"] == "review_weight" def test_factor_scorer_promotes_reviewed_factor(): scorer = FactorScorer(weights={"vp_fly_1h_current": 7.5}) delta = scorer.delta("vp_fly_1h_current", 5, evidence="unit") assert delta == 7.5 assert scorer.summary()["items"][0]["multiplier"] == 1.5 def test_signal_weight_alias_keeps_legacy_chinese_keys_available(monkeypatch): monkeypatch.setattr("app.config.config_loader.load_rules", lambda: {"signal_weights": {"量价齐飞": 5}}) monkeypatch.setattr("app.db.altcoin_db.get_signal_weights", lambda: {}) weights = get_signal_weights() assert weights["vp_fly_1h_current"] == 5 assert weights["量价齐飞"] == 5