from app.services.altcoin_confirm import _apply_market_risk_entry_gate def test_market_risk_gate_blocks_executable_action_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 "暂停新开仓" 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 == ""