"""
User-Agent parsing helper.
Never raises — returns empty dict on any failure.
"""
import logging

logger = logging.getLogger(__name__)


def parse_device_info(user_agent_string: str) -> dict:
    """
    Parses User-Agent into browser, OS, device fields.
    Returns empty dict on failure — must never raise.
    """
    if not user_agent_string:
        return {}
    try:
        import user_agents
        ua = user_agents.parse(user_agent_string)
        return {
            "browser": ua.browser.family,
            "browser_version": ua.browser.version_string,
            "os": ua.os.family,
            "os_version": ua.os.version_string,
            "device_type": "mobile" if ua.is_mobile else "tablet" if ua.is_tablet else "desktop",
            "brand": ua.device.brand or None,
        }
    except Exception as e:
        logger.debug(f"Device parse failed: {e}")
        return {}
