import random
import time
import logging
from typing import Dict, Any
from plugins import CountermeasurePlugin

# 配置日志
logger = logging.getLogger(__name__)

class RandomDelayCountermeasure(CountermeasurePlugin):
    """
    随机延迟反制动作实现
    """

    def execute(self, context: Dict[str, Any]) -> Dict[str, Any]:
        """
        执行随机延迟动作。
        :param context: 包含 'config' 键的字典，'config' 中可包含 'min_delay' 和 'max_delay' (单位: 毫秒)。
                          默认值: min_delay=100, max_delay=1000。
        :return: 包含执行结果的字典。
        """
        config = context.get('config', {})
        min_delay = config.get('min_delay', 100)
        max_delay = config.get('max_delay', 1000)
        
        # 确保 min_delay <= max_delay
        if min_delay > max_delay:
            min_delay, max_delay = max_delay, min_delay
            
        delay = random.randint(min_delay, max_delay)
        time.sleep(delay / 1000.0) # 转换为秒
        
        logger.info(f"Applied random delay of {delay}ms")
        return {'delay_applied': delay}

    def get_description(self) -> str:
        return "Applies a random delay to the response."