# utils/helpers.py
import json
import time
import uuid
from typing import Dict, Any, List, Optional

def generate_id(prefix: str = "") -> str:
    """生成唯一ID"""
    return f"{prefix}{uuid.uuid4().hex}"

def get_current_timestamp() -> int:
    """获取当前时间戳(毫秒)"""
    return int(time.time() * 1000)

def format_timestamp(timestamp: int, format_str: str = "%Y-%m-%d %H:%M:%S") -> str:
    """格式化时间戳"""
    return time.strftime(format_str, time.localtime(timestamp / 1000))

def parse_json(json_str: str, default=None) -> Any:
    """解析JSON字符串"""
    try:
        return json.loads(json_str)
    except Exception:
        return default

def to_json(obj: Any, pretty: bool = False) -> str:
    """转换为JSON字符串"""
    if pretty:
        return json.dumps(obj, ensure_ascii=False, indent=2)
    else:
        return json.dumps(obj, ensure_ascii=False)

def merge_dicts(dict1: Dict[str, Any], dict2: Dict[str, Any]) -> Dict[str, Any]:
    """合并两个字典"""
    result = dict1.copy()
    result.update(dict2)
    return result

def filter_dict(data: Dict[str, Any], keys: List[str]) -> Dict[str, Any]:
    """过滤字典,只保留指定的键"""
    return {k: v for k, v in data.items() if k in keys}

def exclude_dict(data: Dict[str, Any], keys: List[str]) -> Dict[str, Any]:
    """过滤字典,排除指定的键"""
    return {k: v for k, v in data.items() if k not in keys}