from app.services.altcoin_confirm import _apply_market_risk_entry_gate def test_market_risk_gate_reduces_size_instead_of_blocking_when_critical(): signals = ["15min即刻入场信号"] plan, reason = _apply_market_risk_entry_gate( {"entry_action": "可即刻买入", "entry_price": 1.0}, signals, {"risk_level": "critical", "position_multiplier": 0.0}, ) assert plan["entry_action"] == "可即刻买入" assert plan["market_risk_gate"]["blocked_action"] == "" assert plan["market_risk_gate"]["final_action"] == "可即刻买入" assert plan["market_risk_gate"]["position_multiplier"] == 0.25 assert "仓位" in reason assert any("市场风控闸门" in sig for sig in signals) def test_market_risk_gate_keeps_observation_action_visible(): signals = [] plan, reason = _apply_market_risk_entry_gate( {"entry_action": "观察", "entry_price": 1.0}, signals, {"risk_level": "critical", "position_multiplier": 0.0}, ) assert plan["entry_action"] == "观察" assert "market_risk_gate" not in plan assert reason == ""